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/06/28 18:44:54 UTC

[01/50] mesos-site git commit: Updated the website built from mesos SHA: 7c9c72d.

Repository: mesos-site
Updated Branches:
  refs/heads/asf-site 9812c25a1 -> 09fd03018


http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/sitemap.xml
----------------------------------------------------------------------
diff --git a/content/sitemap.xml b/content/sitemap.xml
index dbc5ae5..823ca8b 100644
--- a/content/sitemap.xml
+++ b/content/sitemap.xml
@@ -2,18606 +2,18662 @@
 <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
   <url>
     <loc>http://mesos.apache.org/downloads/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/fetcher-cache-internals/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/allocation-module/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/api-client-libraries/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/attributes-resources/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/reconciliation/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/architecture/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/operator-http-api/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/advanced-contribution/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/mesos-containerizer/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/fault-domains/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/versioning/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/framework-rate-limiting/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/containerizers/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/shared-resources/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/oversubscription/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/maintenance/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/developer-guide/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/markdown-style-guide/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/operational-guide/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/fetcher/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/frameworks/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/reporting-an-issue/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/resource-provider/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/configuration/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/cmake/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/upgrades/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/scheduler-http-api/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/task-state-reasons/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/nested-container-and-task-group/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/secrets/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/authentication/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/roles/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/powered-by-mesos/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/tools/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/windows/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/high-availability-framework-guide/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/building/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/cni/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/app-framework-development-guide/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/networking-for-mesos-managed-containers/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/agent-recovery/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/reservation/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/release-guide/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/isolators/namespaces-pid/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/isolators/disk-xfs/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/isolators/linux-devices/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/isolators/filesystems/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/isolators/network-port-mapping/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/isolators/disk-du/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/isolators/windows/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/isolators/cgroups-devices/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/isolators/linux-capabilities/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/isolators/namespaces-ipc/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/isolators/cgroups-cpu/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/isolators/filesystem-shared/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/isolators/posix-rlimits/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/isolators/docker-runtime/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/isolators/cgroups-net-cls/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/isolators/network-ports/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/isolators/cgroups-blkio/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/isolators/docker-volume/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/presentations/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/endpoints/logging/toggle/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/endpoints/profiler/stop/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/endpoints/profiler/start/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/endpoints/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/endpoints/slave/flags/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/endpoints/slave/health/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/endpoints/slave/state.json/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/endpoints/slave/containers/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/endpoints/slave/api/v1/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/endpoints/slave/api/v1/executor/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/endpoints/slave/api/v1/resource_provider/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/endpoints/slave/monitor/statistics/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/endpoints/slave/monitor/statistics.json/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/endpoints/slave/state/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/endpoints/metrics/snapshot/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/endpoints/system/stats.json/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/endpoints/registrar/registry/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/endpoints/version/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/endpoints/master/teardown/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/endpoints/master/flags/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/endpoints/master/health/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/endpoints/master/state.json/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/endpoints/master/frameworks/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/endpoints/master/maintenance/status/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/endpoints/master/maintenance/schedule/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/endpoints/master/create-volumes/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/endpoints/master/unreserve/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/endpoints/master/slaves/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/endpoints/master/roles/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/endpoints/master/redirect/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/endpoints/master/api/v1/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/endpoints/master/api/v1/scheduler/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/endpoints/master/state-summary/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/endpoints/master/weights/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/endpoints/master/machine/down/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/endpoints/master/machine/up/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/endpoints/master/destroy-volumes/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/endpoints/master/roles.json/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/endpoints/master/state/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/endpoints/master/tasks/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/endpoints/master/reserve/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/endpoints/master/tasks.json/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/endpoints/master/quota/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/endpoints/files/browse.json/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/endpoints/files/download/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/endpoints/files/debug.json/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/endpoints/files/read.json/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/endpoints/files/read/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/endpoints/files/debug/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/endpoints/files/browse/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/endpoints/files/download.json/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/replicated-log-internals/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/weights/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/container-image/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/documentation-guide/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/gpu-support/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/clang-format/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/cmake-examples/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/health-checks/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/committers/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/ssl/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/beginner-contribution/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/multiple-disk/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/modules/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/design-docs/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/persistent-volume/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/monitoring/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/deploy-scripts/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/engineering-principles-and-practices/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/reopening-reviews/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/doxygen-style-guide/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/executor-http-api/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/configuration/cmake/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/configuration/master/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/configuration/master-and-agent/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/configuration/agent/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/configuration/autotools/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/configuration/libprocess/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/roadmap/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/recordio/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/docker-containerizer/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/committing/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/testing-patterns/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/logging/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/memory-profiling/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/c++-style-guide/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/committer-candidate-checklist/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/authorization/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/sandbox/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/containerizer-internals/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/container-volume/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/high-availability/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/effective-code-reviewing/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/networking/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/csi/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/cquery/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/documentation/latest/quota/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/blog/dev-community-status/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/blog/mesos-0-18-0-released/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/blog/mesos-1-3-0-released/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/blog/mesos-1-0-0-released/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/blog/mesos-0-19-0-released/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/blog/mesos-1-2-2-released/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/blog/mesos-community-survey-2014-results/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/blog/mesos-0-16-0-released/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/blog/mesos-0-20-1-released/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/blog/mesos-0-21-1-released/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/blog/mesoscon-seattle-preconference-and-social-activities/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/blog/storage-developments-in-apache-mesos/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/blog/mesos-0-17-0-released-featuring-autorecovery/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/blog/announcing-mesoscon-eu-2015-hackathon/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/blog/mesos-0-18-1-and-0-18-2-released/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/blog/mesos-1-1-1-released/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/blog/mesos-1-1-3-released/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/blog/mesos-0-25-0-released/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/blog/mesos-0-14-2-released/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/blog/slave-recovery-in-apache-mesos/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/blog/mesos-0-22-0-released/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/blog/mesoscon-europe-2015-schedule-announced/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/blog/mesos-community-update-1/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/blog/mesos-1-6-0-released/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/blog/mesos-1-0-2-released/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/blog/mesos-0-28-2-released/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/blog/mesos-0-26-0-released/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/blog/mesos-1-4-0-released/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/blog/mesos-0-27-0-released/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/blog/mesos-0-27-2-released/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/blog/mesos-1-1-0-released/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/blog/performance-working-group-progress-report/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/blog/framework-authentication-in-apache-mesos-0-15-0/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/blog/mesos-0-19-1-released/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/blog/niklas-nielsen-becomes-mesos-committer/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/blog/mesoscon-goes-europe/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/blog/mesos-0-27-3-released/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/blog/mesos-0-23-0-released/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/blog/mesos-0-24-0-released/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/blog/mesos-0-21-0-released/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/blog/mesos-0-28-3-released/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/blog/mesoscon-2016-cfp-is-now-open/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/blog/mesos-1-2-0-released/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/blog/mesos-1-0-3-released/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/blog/mesos-1-5-0-released/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/blog/mesos-1-0-1-released/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/blog/mesos-0-28-0-released/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/blog/mesos-1-3-1-released/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/blog/mesoscon-2015-earlybird-registration-now-open/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/blog/mesoscon-seattle-keynote-speakers-announced/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/blog/mesos-0-24-1-and-more-released/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/blog/mesoscon-2014-hackathon-details-announced/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/blog/register-for-mesoscon-seattle-save/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/blog/mesos-1-0-4-released/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/blog/mesos-1-4-1-released/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/blog/mesos-0-20-0-released/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/blog/mesoscon-2014-program-announced/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/blog/mesos-1-2-1-released/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/blog/mesos-0-26-1-and-more-released/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/blog/mesos-0-22-1-released/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/blog/mesos-1-5-1-released/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/blog/mesos-1-2-3-released/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/blog/mesos-0-27-1-released/</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/deferred_8hpp.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/classmesos_1_1internal_1_1slave_1_1PosixRLimitsIsolatorProcess.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/classmesos_1_1internal_1_1slave_1_1MesosContainerizerLaunch.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/classmesos_1_1internal_1_1slave_1_1NvidiaGpuAllocator-members.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/classKernelSemaphore.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/type__utils_8hpp_source.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/structJSON_1_1False-members.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/metadata__manager_8hpp.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/posix_2xattr_8hpp_source.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/namespacemesos_1_1internal_1_1slave_1_1docker_1_1paths.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/assert_8hpp_source.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/windows_2copyfile_8hpp_source.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/port__mapping_8hpp_source.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/structstd_1_1hash_3_01mesos_1_1v1_1_1OfferID_01_4.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/classmesos_1_1internal_1_1slave_1_1NvidiaGpuIsolatorProcess-members.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/windows_2stat_8hpp_source.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/classErrnoError-members.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/structrouting_1_1filter_1_1ip_1_1Classifier-members.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/rpc_8hpp_source.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/dir_ac0d5732b3e7205de08d9f0746079405.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/windows_2which_8hpp.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/include_2mesos_2log_2log_8hpp.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/uri_2fetchers_2docker_8hpp.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/structos_1_1Fork.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/structprocess_1_1http_1_1Server_1_1StopOptions-members.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/classprocess_1_1RunQueue-members.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/once_8hpp.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/structmesos_1_1csi_1_1v0_1_1RPCTraits_3_01GET__CAPACITY_01_4.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/namespacecgroups.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/classprocess_1_1internal_1_1ReaperProcess.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/classDuration-members.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/3rdparty_2stout_2include_2stout_2posix_2fs_8hpp.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/classmesos_1_1internal_1_1storage_1_1UriDiskProfileAdaptorProcess-members.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/structmesos_1_1internal_1_1master_1_1Slave_1_1ResourceProvider-members.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/globals_k.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/structcpp14_1_1integer__sequence-members.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/libprocess_2include_2process_2check_8hpp.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/structmesos_1_1modules_1_1Module_3_01mesos_1_1slave_1_1QoSController_01_4-members.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/structstd_1_1hash_3_01mesos_1_1v1_1_1ExecutorID_01_4-members.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/veth_8hpp_source.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/src_2tests_2utils_8hpp_source.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/structmesos_1_1UnavailableResources.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/slave_2containerizer_2mesos_2isolators_2network_2cni_2paths_8hpp.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/structmesos_1_1csi_1_1paths_1_1ContainerPath-members.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/src_2slave_2containerizer_2mesos_2provisioner_2constants_8hpp.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/structNothing.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/posix_2pipe_8hpp.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/classmesos_1_1internal_1_1tests_1_1MockContainerizer-members.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/classmesos_1_1internal_1_1cram__md5_1_1CRAMMD5Authenticator.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/linux_2capabilities_8hpp_source.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/namespacemembers_m.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/classmesos_1_1internal_1_1log_1_1tool_1_1Read-members.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/blkio_8hpp.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/dir_bb73beb2dd8d32dce3b26aedcb6ae837.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/environment__secret_8hpp_source.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/structprocess_1_1http_1_1Unauthorized.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/classmesos_1_1internal_1_1master_1_1maintenance_1_1UpdateSchedule.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/classmesos_1_1internal_1_1ResourceProviderManager-members.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/libprocess_2include_2process_2check_8hpp_source.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/structmesos_1_1internal_1_1RequestMediaTypes-members.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/module_2secret__generator_8hpp.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/structmesos_1_1csi_1_1v0_1_1ControllerCapabilities.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/classmesos_1_1internal_1_1slave_1_1Launcher-members.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/classmesos_1_1internal_1_1Files-members.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/dir_fbb1f3397356a940a2dbc4baf07ee5bb.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/fork_8hpp.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/memory_8hpp_source.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/classmesos_1_1uri_1_1CurlFetcherPlugin-members.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/posix_2mktemp_8hpp.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/collect_8hpp_source.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/queue_8hpp_source.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/svn_8hpp.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/classmesos_1_1internal_1_1slave_1_1NoopResourceEstimator.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/src_2master_2master_8hpp_source.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/classmesos_1_1internal_1_1tests_1_1TestAllocator.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/dir_251697ed71d3107a084c4be76de6bea7.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/mock__containerizer_8hpp.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/v1_2scheduler_8hpp.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/structmesos_1_1internal_1_1tests_1_1common_1_1DefaultCredential2-members.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/include_2mesos_2zookeeper_2detector_8hpp_source.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/classjava_1_1net_1_1InetSocketAddress.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/namespacemesos_1_1internal_1_1build.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/systemd_8hpp.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/structmesos_1_1csi_1_1v0_1_1RPCTraits_3_01CONTROLLER__PUBLISH__VOLUME_01_4.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/structmesos_1_1csi_1_1v0_1_1RPCTraits_3_01DELETE__VOLUME_01_4.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/structDocker_1_1Device.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/rwlock_8hpp.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/classNanoseconds.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/structstd_1_1hash_3_01process_1_1network_1_1inet4_1_1Address_01_4-members.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/namespacemesos_1_1internal_1_1tests_1_1v1_1_1scheduler.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/structprocess_1_1Deferred.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/classmesos_1_1internal_1_1slave_1_1PosixIsolatorProcess-members.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/structid_1_1UUID.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/structJNI-members.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/include_2mesos_2module_2detector_8hpp_source.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/namespacerouting_1_1filter_1_1icmp.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/structstd_1_1hash_3_01net_1_1IPv4_01_4-members.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/xattr_8hpp.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/structstd_1_1hash_3_01mesos_1_1TaskStatus__Reason_01_4.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/http__connection_8hpp_source.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/duration_8hpp_source.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/structmesos_1_1internal_1_1master_1_1Role-members.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/posix_2dynamiclibrary_8hpp.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/classmesos_1_1internal_1_1log_1_1tool_1_1Replica.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/classmesos_1_1internal_1_1master_1_1weights_1_1UpdateWeights.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/namespacemesos_1_1resource__provider.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/gate_8hpp_source.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/classrecordio_1_1Encoder.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/dir_27832e6c74c2ee170d1dd05a196f816c.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/structmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1Metrics.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/src_2master_2metrics_8hpp.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/basic_8hpp_source.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/duration_8hpp.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/posix_2sendfile_8hpp.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/include_2mesos_2maintenance_2maintenance_8hpp_source.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/classmesos_1_1internal_1_1master_1_1Master-members.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/include_2mesos_2authentication_2http_2authenticatee_8hpp.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/structstd_1_1hash_3_01process_1_1network_1_1inet_1_1Address_01_4.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/structmesos_1_1modules_1_1Module_3_01mesos_1_1DiskProfileAdaptor_01_4.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/functions_r.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/classmesos_1_1state_1_1LevelDBStorage-members.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/classmesos_1_1internal_1_1cram__md5_1_1InMemoryAuxiliaryPropertyPlugin-members.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/src_2logging_2logging_8hpp.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/build_8hpp_source.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/slave_8hpp_source.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/icmp_8hpp_source.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/classmesos_1_1internal_1_1tests_1_1MockScheduler.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/windows_2dynamiclibrary_8hpp.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/posix_2ftruncate_8hpp.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/agent_2agent_8hpp.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/mem_8hpp_source.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/slave_2containerizer_2mesos_2launcher_8hpp.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/structmesos_1_1internal_1_1master_1_1Master_1_1Subscribers_1_1Subscriber.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/slave_2containerizer_2mesos_2provisioner_2appc_2store_8hpp.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/src_2slave_2containerizer_2mesos_2isolators_2xfs_2utils_8hpp.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/structmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess_1_1Framework-members.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/dir_0551c3d4c458bd0ac3ce38817955e8b6.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/structJSON_1_1Boolean-members.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/uri_2schemes_2docker_8hpp_source.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/dir_52f70fc1ae119f1f37c8704e01e68865.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/classprocess_1_1FileEncoder-members.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/dir_9ca69b4b1b6e4d90a2c00acee53f9828.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/classorg_1_1apache_1_1zookeeper_1_1server_1_1ZooKeeperServer.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/classSSLTemporaryDirectoryTest.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/roles_8hpp.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/dir_f00e901499d154ec09950234dd4b6079.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/namespaceorg.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/checks__runtime_8hpp.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/namespacelambda.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/structmesos_1_1internal_1_1slave_1_1Slave_1_1RecoveryInfo-members.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/globals_e.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/timeout_8hpp_source.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/structprocess_1_1Message.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/classnet_1_1IP_1_1Network-members.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/slave_2containerizer_2mesos_2isolators_2posix_2rlimits_8hpp_source.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/classmesos_1_1internal_1_1cram__md5_1_1InMemoryAuxiliaryPropertyPlugin.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/structmesos_1_1internal_1_1ResourceProviderMessage_1_1Disconnect.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/classprocess_1_1ProcessReference-members.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/structmesos_1_1internal_1_1checks_1_1runtime_1_1Nested.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/resolver_8hpp_source.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/classprocess_1_1metrics_1_1Timer.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/structmesos_1_1internal_1_1checks_1_1runtime_1_1Plain.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/posix_2chroot_8hpp.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/pagesize_8hpp.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/structboost_1_1icl_1_1interval__traits_3_01Interval_3_01T_01_4_01_4.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/3rdparty_2stout_2include_2stout_2windows_8hpp.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/classmesos_1_1internal_1_1slave_1_1PortMappingUpdate-members.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/structstd_1_1hash_3_01net_1_1IP_01_4.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/classmesos_1_1slave_1_1ResourceEstimator-members.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/classmesos_1_1internal_1_1slave_1_1VolumeSandboxPathIsolatorProcess-members.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/structlambda_1_1internal_1_1Expand_3_010_01_4.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/classmesos_1_1internal_1_1slave_1_1Fetcher.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/classmesos_1_1internal_1_1slave_1_1MesosContainerizerProcess-members.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/structstd_1_1hash_3_01Option_3_01T_01_4_01_4-members.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/resource__provider_2registry_8hpp_source.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/signals_8hpp.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/authentication_2secret__generator_8hpp_source.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/src_2examples_2flags_8hpp.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/structAtLeastOneIsSameOrConvertible.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/classmesos_1_1Authorizer-members.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/structprocess_1_1http_1_1NotFound-members.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/classprocess_1_1Shared-members.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/namespacerouting_1_1filter_1_1basic.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/classmesos_1_1IDAcceptor-members.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/image_8hpp_source.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/classmesos_1_1internal_1_1StorageLocalResourceProvider.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/namespacemembers_g.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/acls_8hpp_source.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/fcntl_8hpp_source.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/close_8hpp.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/windows_2shell_8hpp_source.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/dir_35c8ff4668e5819502b5d29320c39425.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/namespacesched.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/globals_a.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/structmesos_1_1internal_1_1master_1_1HttpConnection.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/structmesos_1_1modules_1_1Module_3_01TestModule_01_4-members.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/classmesos_1_1internal_1_1slave_1_1WindowsCpuIsolatorProcess-members.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/posix_2fsync_8hpp.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/src_2master_2allocator_2sorter_2random_2utils_8hpp_source.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/provider_8hpp_source.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/include_2mesos_2master_2master_8hpp.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/src_2log_2log_8hpp.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/in__memory_8hpp.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/structstd_1_1hash_3_01process_1_1UPID_01_4-members.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/classmesos_1_1log_1_1Log_1_1Entry.html</loc>
-    <lastmod>2018-06-27T00:00:00+00:00</lastmod>
+    <lastmod>2018-06-28T00:00:00+00:00</lastmod>
   </url>
   <url>
     <loc>http://mesos.apache.org/api/latest/c++/structLambdaTraits_3_01Result_07Class_1_1_5_08_07Args_8_8_8_08_01const_01

<TRUNCATED>

[14/50] mesos-site git commit: Updated the website built from mesos SHA: 7c9c72d.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/src_2posix_2subprocess_8hpp.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/src_2posix_2subprocess_8hpp.html b/content/api/latest/c++/src_2posix_2subprocess_8hpp.html
new file mode 100644
index 0000000..6341ac6
--- /dev/null
+++ b/content/api/latest/c++/src_2posix_2subprocess_8hpp.html
@@ -0,0 +1,108 @@
+<!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: 3rdparty/libprocess/src/posix/subprocess.hpp File 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&#160;Page</span></a></li>
+      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li class="current"><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="files.html"><span>File&#160;List</span></a></li>
+      <li><a href="globals.html"><span>File&#160;Members</span></a></li>
+    </ul>
+  </div>
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_8cab8f464681f7cc51cee77e79a434cd.html">3rdparty</a></li><li class="navelem"><a class="el" href="dir_043a76de98701f9bddf61b5e98f305ff.html">libprocess</a></li><li class="navelem"><a class="el" href="dir_01cbbd8dcbf9de3825992568658f467e.html">src</a></li><li class="navelem"><a class="el" href="dir_0ac73505685689cb4a842e520ca4cca6.html">posix</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="summary">
+<a href="#namespaces">Namespaces</a> &#124;
+<a href="#func-members">Functions</a>  </div>
+  <div class="headertitle">
+<div class="title">subprocess.hpp File Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &lt;sys/types.h&gt;</code><br />
+<code>#include &lt;string&gt;</code><br />
+<code>#include &lt;glog/logging.h&gt;</code><br />
+<code>#include &lt;<a class="el" href="include_2process_2subprocess_8hpp_source.html">process/subprocess.hpp</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="stout_2include_2stout_2check_8hpp_source.html">stout/check.hpp</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="error_8hpp_source.html">stout/error.hpp</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="exit_8hpp_source.html">stout/exit.hpp</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="foreach_8hpp_source.html">stout/foreach.hpp</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="hashset_8hpp_source.html">stout/hashset.hpp</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="nothing_8hpp_source.html">stout/nothing.hpp</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="lambda_8hpp_source.html">stout/lambda.hpp</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="none_8hpp_source.html">stout/none.hpp</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="option_8hpp_source.html">stout/option.hpp</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="os_8hpp_source.html">stout/os.hpp</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="try_8hpp_source.html">stout/try.hpp</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="unreachable_8hpp_source.html">stout/unreachable.hpp</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="close_8hpp_source.html">stout/os/close.hpp</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="3rdparty_2stout_2include_2stout_2os_2environment_8hpp_source.html">stout/os/environment.hpp</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="fcntl_8hpp_source.html">stout/os/fcntl.hpp</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="signals_8hpp_source.html">stout/os/signals.hpp</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="strerror_8hpp_source.html">stout/os/strerror.hpp</a>&gt;</code><br />
+</div>
+<p><a href="src_2posix_2subprocess_8hpp_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
+Namespaces</h2></td></tr>
+<tr class="memitem:namespaceprocess"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceprocess.html">process</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:namespaceprocess_1_1internal"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceprocess_1_1internal.html">process::internal</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</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:af2f19b6f367cddc0c8283560a9cd9215"><td class="memItemLeft" align="right" valign="top"><a class="el" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceprocess_1_1internal.html#af2f19b6f367cddc0c8283560a9cd9215">process::internal::defaultClone</a> (const lambda::function&lt; int()&gt; &amp;func)</td></tr>
+<tr class="separator:af2f19b6f367cddc0c8283560a9cd9215"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a345a534b82b79bf20333fb6faef43e93"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classTry.html">Try</a>&lt; <a class="el" href="structNothing.html">Nothing</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceprocess_1_1internal.html#a345a534b82b79bf20333fb6faef43e93">process::internal::cloexec</a> (const InputFileDescriptors &amp;stdinfds, const OutputFileDescriptors &amp;stdoutfds, const OutputFileDescriptors &amp;stderrfds)</td></tr>
+<tr class="separator:a345a534b82b79bf20333fb6faef43e93"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a902e2646d88c41ce674a3009cafe0aad"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceprocess_1_1internal.html#a902e2646d88c41ce674a3009cafe0aad">process::internal::childMain</a> (const std::string &amp;path, char **argv, char **envp, const InputFileDescriptors &amp;stdinfds, const OutputFileDescriptors &amp;stdoutfds, const OutputFileDescriptors &amp;stderrfds, bool blocking, int pipes[2], const std::vector&lt; Subprocess::ChildHook &gt; &amp;child_hooks)</td></tr>
+<tr class="separator:a902e2646d88c41ce674a3009cafe0aad"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:afe2c3a3ffdd0ee6fda82e198ece80a37"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classTry.html">Try</a>&lt; <a class="el" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceprocess_1_1internal.html#afe2c3a3ffdd0ee6fda82e198ece80a37">process::internal::cloneChild</a> (const std::string &amp;path, std::vector&lt; std::string &gt; argv, const <a class="el" href="classOption.html">Option</a>&lt; std::map&lt; std::string, std::string &gt;&gt; &amp;environment, const <a class="el" href="classOption.html">Option</a>&lt; lambda::function&lt; <a class="el" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a>(const lambda::function&lt; int()&gt; &amp;)&gt;&gt; &amp;_clone, const std::vector&lt; Subprocess::ParentHook &gt; &amp;parent_hooks, const std::vector&lt; Subpr
 ocess::ChildHook &gt; &amp;child_hooks, const InputFileDescriptors stdinfds, const OutputFileDescriptors stdoutfds, const OutputFileDescriptors stderrfds)</td></tr>
+<tr class="separator:afe2c3a3ffdd0ee6fda82e198ece80a37"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.11
+</small></address>
+</body>
+</html>


[11/50] mesos-site git commit: Updated the website built from mesos SHA: 7c9c72d.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/src_2windows_2subprocess_8hpp.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/src_2windows_2subprocess_8hpp.html b/content/api/latest/c++/src_2windows_2subprocess_8hpp.html
new file mode 100644
index 0000000..2b24fa4
--- /dev/null
+++ b/content/api/latest/c++/src_2windows_2subprocess_8hpp.html
@@ -0,0 +1,97 @@
+<!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: 3rdparty/libprocess/src/windows/subprocess.hpp File 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&#160;Page</span></a></li>
+      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li class="current"><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="files.html"><span>File&#160;List</span></a></li>
+      <li><a href="globals.html"><span>File&#160;Members</span></a></li>
+    </ul>
+  </div>
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_8cab8f464681f7cc51cee77e79a434cd.html">3rdparty</a></li><li class="navelem"><a class="el" href="dir_043a76de98701f9bddf61b5e98f305ff.html">libprocess</a></li><li class="navelem"><a class="el" href="dir_01cbbd8dcbf9de3825992568658f467e.html">src</a></li><li class="navelem"><a class="el" href="dir_4f303781ded361ff602a549327c53cc9.html">windows</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="summary">
+<a href="#namespaces">Namespaces</a> &#124;
+<a href="#func-members">Functions</a>  </div>
+  <div class="headertitle">
+<div class="title">subprocess.hpp File Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &lt;signal.h&gt;</code><br />
+<code>#include &lt;array&gt;</code><br />
+<code>#include &lt;string&gt;</code><br />
+<code>#include &lt;glog/logging.h&gt;</code><br />
+<code>#include &lt;<a class="el" href="include_2process_2subprocess_8hpp_source.html">process/subprocess.hpp</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="error_8hpp_source.html">stout/error.hpp</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="foreach_8hpp_source.html">stout/foreach.hpp</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="hashset_8hpp_source.html">stout/hashset.hpp</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="option_8hpp_source.html">stout/option.hpp</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="os_8hpp_source.html">stout/os.hpp</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="shell_8hpp_source.html">stout/os/shell.hpp</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="try_8hpp_source.html">stout/try.hpp</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="3rdparty_2stout_2include_2stout_2windows_8hpp_source.html">stout/windows.hpp</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="close_8hpp_source.html">stout/os/close.hpp</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="3rdparty_2stout_2include_2stout_2os_2environment_8hpp_source.html">stout/os/environment.hpp</a>&gt;</code><br />
+<code>#include &lt;userEnv.h&gt;</code><br />
+</div>
+<p><a href="src_2windows_2subprocess_8hpp_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
+Namespaces</h2></td></tr>
+<tr class="memitem:namespaceprocess"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceprocess.html">process</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:namespaceprocess_1_1internal"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceprocess_1_1internal.html">process::internal</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</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:a32020f2bbbcc116f2e055e209b4b8ce7"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classTry.html">Try</a>&lt;::<a class="el" href="structinternal_1_1windows_1_1ProcessData.html">internal::windows::ProcessData</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceprocess_1_1internal.html#a32020f2bbbcc116f2e055e209b4b8ce7">process::internal::createChildProcess</a> (const std::string &amp;path, const std::vector&lt; std::string &gt; &amp;argv, const <a class="el" href="classOption.html">Option</a>&lt; std::map&lt; std::string, std::string &gt;&gt; &amp;environment, const std::vector&lt; Subprocess::ParentHook &gt; &amp;parent_hooks, const InputFileDescriptors &amp;stdinfds, const OutputFileDescriptors &amp;stdoutfds, const OutputFileDescriptors &amp;stderrfds, const std::vector&lt; <a class="el" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> &gt; &amp;whitelist_fds={})</td></tr>
+<tr class="separator:a32020f2bbbcc116f2e055e209b4b8ce7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.11
+</small></address>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/src_2windows_2subprocess_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/src_2windows_2subprocess_8hpp_source.html b/content/api/latest/c++/src_2windows_2subprocess_8hpp_source.html
new file mode 100644
index 0000000..b1702a1
--- /dev/null
+++ b/content/api/latest/c++/src_2windows_2subprocess_8hpp_source.html
@@ -0,0 +1,100 @@
+<!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: 3rdparty/libprocess/src/windows/subprocess.hpp Source File</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&#160;Page</span></a></li>
+      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li class="current"><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="files.html"><span>File&#160;List</span></a></li>
+      <li><a href="globals.html"><span>File&#160;Members</span></a></li>
+    </ul>
+  </div>
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_8cab8f464681f7cc51cee77e79a434cd.html">3rdparty</a></li><li class="navelem"><a class="el" href="dir_043a76de98701f9bddf61b5e98f305ff.html">libprocess</a></li><li class="navelem"><a class="el" href="dir_01cbbd8dcbf9de3825992568658f467e.html">src</a></li><li class="navelem"><a class="el" href="dir_4f303781ded361ff602a549327c53cc9.html">windows</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">subprocess.hpp</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="src_2windows_2subprocess_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>&#160;<span class="comment">// Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<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>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<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 clas
 s="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<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>&#160;<span class="comment">// distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<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>&#160;<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>&#160;<span class="comment">// limitations under the License</span></div><div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;</
 div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="preprocessor">#ifndef __PROCESS_WINDOWS_SUBPROCESS_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="preprocessor">#define __PROCESS_WINDOWS_SUBPROCESS_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;</div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="preprocessor">#include &lt;signal.h&gt;</span></div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="preprocessor">#include &lt;array&gt;</span></div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span></div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;</d
 iv><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="preprocessor">#include &lt;glog/logging.h&gt;</span></div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="include_2process_2subprocess_8hpp.html">process/subprocess.hpp</a>&gt;</span></div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;</div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="error_8hpp.html">stout/error.hpp</a>&gt;</span></div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="foreach_8hpp.html">stout/foreach.hpp</a>&gt;</span></div><div class="line"><a name="l00027"></a><span class="lineno">   2
 7</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="hashset_8hpp.html">stout/hashset.hpp</a>&gt;</span></div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="option_8hpp.html">stout/option.hpp</a>&gt;</span></div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="os_8hpp.html">stout/os.hpp</a>&gt;</span></div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="shell_8hpp.html">stout/os/shell.hpp</a>&gt;</span></div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="try_8hpp.html">stout/try.hpp</a>&gt;</span></div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;<span class="prepro
 cessor">#include &lt;<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html">stout/windows.hpp</a>&gt;</span></div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;</div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="close_8hpp.html">stout/os/close.hpp</a>&gt;</span></div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="3rdparty_2stout_2include_2stout_2os_2environment_8hpp.html">stout/os/environment.hpp</a>&gt;</span></div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;</div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;<span class="preprocessor">#include &lt;userEnv.h&gt;</span></div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;</div><div class="line"><a name="
 l00039"></a><span class="lineno">   39</span>&#160;<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>&#160;<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>&#160;</div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;<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>&#160;<span class="comment">// (for example, paths with spaces in them like `C:\&quot;Program Files&quot;\foo.exe`)</span></div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;<span class="comment">// to have been already quoted correctly before we generate `command`.</span></div><div c
 lass="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;<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>&#160;<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#a32020f2bbbcc116f2e055e209b4b8ce7">   47</a></span>&#160;<span class="keyword">inline</span> <a class="code" href="classTry.html">Try&lt;::internal::windows::ProcessData&gt;</a> <a class="code" href="namespaceprocess_1_1internal.html#a32020f2bbbcc116f2e055e209b4b8ce7">createChildProcess</a>(</div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;    <span class="keyword">const</span> std::string&amp; <a class="code" href="namespacepath.html">path</a>,</div><div class="line"><a name=
 "l00049"></a><span class="lineno">   49</span>&#160;    <span class="keyword">const</span> std::vector&lt;std::string&gt;&amp; argv,</div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;    <span class="keyword">const</span> <a class="code" href="classOption.html">Option</a>&lt;std::map&lt;std::string, std::string&gt;&gt;&amp; <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>&#160;    <span class="keyword">const</span> std::vector&lt;Subprocess::ParentHook&gt;&amp; parent_hooks,</div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;    <span class="keyword">const</span> <a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors.html">InputFileDescriptors</a>&amp; stdinfds,</div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;    <span
  class="keyword">const</span> <a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html">OutputFileDescriptors</a>&amp; stdoutfds,</div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;    <span class="keyword">const</span> <a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html">OutputFileDescriptors</a>&amp; stderrfds,</div><div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;    <span class="keyword">const</span> std::vector&lt;int_fd&gt;&amp; whitelist_fds = {})</div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;{</div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;  <span class="keyword">const</span> std::array&lt;int_fd, 3&gt; fds{</div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;    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>, stderrfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html#a5dabb8e3008efd61ce42478f260b54ac">write</a>};</div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;</div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;  <a class="code" href="classTry.html">Try&lt;::internal::windows::ProcessData&gt;</a> process_data =</div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;    <a class="code" href="namespaceinternal_1_1windows.html#a039d5edd816cadff59dd60549c70aa41">::internal::windows::create_process</a>(</div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;        path,</div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>
 &#160;        argv,</div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;        <a class="code" href="namespacemesos_1_1internal_1_1tests.html#a1396c5e3b0a179220de2792d74770ec2">environment</a>,</div><div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;        <span class="keyword">true</span>, <span class="comment">// Create suspended.</span></div><div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;        fds,</div><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;        whitelist_fds);</div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;</div><div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;  <span class="comment">// Close the child-ends of the file descriptors that are created</span></div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;  <span class="comment">// by this function.</
 span></div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;  <span class="keywordflow">foreach</span> (<span class="keyword">const</span> <a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a>&amp; fd, fds) {</div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;    <span class="keywordflow">if</span> (fd.is_valid()) {</div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;      <a class="code" href="classTry.html">Try&lt;Nothing&gt;</a> result = <a class="code" href="namespaceos.html#a8df77ec6d6b8d32d9b287a41bc74cfdc">os::close</a>(fd);</div><div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;      <span class="keywordflow">if</span> (result.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;        <span class="keywordflo
 w">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="l00076"></a><span class="lineno">   76</span>&#160;      }</div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;    }</div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;  }</div><div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;</div><div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;  <span class="keywordflow">if</span> (process_data.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;    <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="l00082"></a><span class="lineno">   82</span>&#160;  }</div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;</div><div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;  <span class="comment">// Run the parent hooks.</span></div><div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;  <span class="keyword">const</span> <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a> pid = process_data-&gt;<a class="code" href="structinternal_1_1windows_1_1ProcessData.html#a65a4a4aba5450087363bfffdb30eea25">pid</a>;</div><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;  <span class="keywordflow">foreach</span> (<span class="keyword">const</span> <a class="code" href="structprocess_1_1Subprocess_1_1ParentHook.html">Subprocess::ParentHook</a>&amp; hook, parent_hooks) {</div><div class="li
 ne"><a name="l00087"></a><span class="lineno">   87</span>&#160;    <a class="code" href="classTry.html">Try&lt;Nothing&gt;</a> parent_setup = hook.<a class="code" href="structprocess_1_1Subprocess_1_1ParentHook.html#aaf9ff141314d619cd65cd8ec9320fb7d">parent_setup</a>(pid);</div><div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;</div><div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;    <span class="comment">// If the hook callback fails, we shouldn&#39;t proceed with the</span></div><div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;    <span class="comment">// execution and hence the child process should be killed.</span></div><div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;    <span class="keywordflow">if</span> (parent_setup.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00092"></a><span class="
 lineno">   92</span>&#160;      <span class="comment">// Attempt to kill the process. Since it is still in suspended state, we</span></div><div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;      <span class="comment">// do not need to kill any descendents. We also can&#39;t use `os::kill_job`</span></div><div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;      <span class="comment">// because this process is not in a Job Object unless one of the parent</span></div><div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;      <span class="comment">// hooks added it.</span></div><div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;      ::TerminateProcess(process_data-&gt;<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="l00097"></a><span class="lineno">   97</span>&#160;</div><div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;      <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(</div><div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;          <span class="stringliteral">&quot;Failed to execute Parent Hook in child &#39;&quot;</span> + <a class="code" href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(pid) +</div><div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;          <span class="stringliteral">&quot;&#39; with command &#39;&quot;</span> + <a class="code" href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(argv) + <span class="stringliteral">&quot;&#39;: &quot;</span> +</div><div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;          parent_setup.<a class="code" hr
 ef="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;    }</div><div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;  }</div><div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;</div><div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;  <span class="comment">// Start child process.</span></div><div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;  <span class="keywordflow">if</span> (::ResumeThread(process_data-&gt;<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="l00107"></a><span class="lineno">  107</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="c
 lassWindowsError.html">WindowsError</a>(</div><div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;        <span class="stringliteral">&quot;Failed to resume child process with command &#39;&quot;</span> +</div><div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;        <a class="code" href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(argv) + <span class="stringliteral">&quot;&#39;&quot;</span>);</div><div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;  }</div><div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;</div><div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;  <span class="keywordflow">return</span> process_data;</div><div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;}</div><div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;</div><div class="line"><a name="l00115"></a><
 span class="lineno">  115</span>&#160;}  <span class="comment">// namespace internal {</span></div><div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;}  <span class="comment">// namespace process {</span></div><div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;</div><div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;<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: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="namespaceinternal_1_1windows_html_a039d5edd816cadff59dd60549c70aa41"><div class="ttname"><a href="namespaceinternal_1_1windows.html#a039d5edd816cadff59dd60549c70aa41">internal::windows::create_process</a></div><div class="ttdeci">Try&lt; ProcessData &gt; create_process(const std::string &amp;command, const std::vector&lt; std::string &gt; &amp;argv, const Option&lt; std::map&lt; std::string, std::string &gt;&gt; &amp;environment, const bool create_suspended=false, const Option&lt; std::array&lt; int_fd, 3 &gt;&gt; &amp;pipes=None(), const std::vector&lt; int_fd &gt; &amp;whitelist_fds={})</div><div class="ttdef"><b>Definition:</b> shell.hpp:240</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>
+<div class="ttc" id="include_2process_2subprocess_8hpp_html"><div class="ttname"><a href="include_2process_2subprocess_8hpp.html">subprocess.hpp</a></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="classWindowsError_html"><div class="ttname"><a href="classWindowsError.html">WindowsError</a></div><div class="ttdef"><b>Definition:</b> error.hpp:108</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="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors_html_a0a3f315345ef7b7ee6f3f1d4d337854d"><div class="ttname"><a href="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors.html#a0a3f315345ef7b7ee6f3f1d4d337854d">process::Subprocess::IO::InputFileDescriptors::read</a></div><div class="ttdeci">int_fd read</div><div class="ttdef"><b>Definition:</b> subprocess.hpp:75</div></div>
+<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="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="namespaceprocess_1_1internal_html_a32020f2bbbcc116f2e055e209b4b8ce7"><div class="ttname"><a href="namespaceprocess_1_1internal.html#a32020f2bbbcc116f2e055e209b4b8ce7">process::internal::createChildProcess</a></div><div class="ttdeci">Try&lt;::internal::windows::ProcessData &gt; createChildProcess(const std::string &amp;path, const std::vector&lt; std::string &gt; &amp;argv, const Option&lt; std::map&lt; std::string, std::string &gt;&gt; &amp;environment, const std::vector&lt; Subprocess::ParentHook &gt; &amp;parent_hooks, const InputFileDescriptors &amp;stdinfds, const OutputFileDescriptors &amp;stdoutfds, const OutputFileDescriptors &amp;stderrfds, const std::vector&lt; int_fd &gt; &amp;whitelist_fds={})</div><div class="ttdef"><b>Definition:</b> subprocess.hpp:47</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="namespacemesos_1_1internal_1_1tests_html_a1396c5e3b0a179220de2792d74770ec2"><div class="ttname"><a href="namespacemesos_1_1internal_1_1tests.html#a1396c5e3b0a179220de2792d74770ec2">mesos::internal::tests::environment</a></div><div class="ttdeci">Environment * environment</div></div>
+<div class="ttc" id="3rdparty_2stout_2include_2stout_2windows_8hpp_html_ab03ced250ed239bc3b50b669493997f9"><div class="ttname"><a href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a></div><div class="ttdeci">DWORD pid_t</div><div class="ttdef"><b>Definition:</b> windows.hpp:181</div></div>
+<div class="ttc" id="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors_html_a5dabb8e3008efd61ce42478f260b54ac"><div class="ttname"><a href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html#a5dabb8e3008efd61ce42478f260b54ac">process::Subprocess::IO::OutputFileDescriptors::write</a></div><div class="ttdeci">int_fd write</div><div class="ttdef"><b>Definition:</b> subprocess.hpp:91</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&lt; Nothing &gt; close(int fd)</div><div class="ttdef"><b>Definition:</b> close.hpp:24</div></div>
+<div class="ttc" id="structinternal_1_1windows_1_1ProcessData_html_a96c76121644bd430e9ca67cf57636c0d"><div class="ttname"><a href="structinternal_1_1windows_1_1ProcessData.html#a96c76121644bd430e9ca67cf57636c0d">internal::windows::ProcessData::process_handle</a></div><div class="ttdeci">SharedHandle process_handle</div><div class="ttdef"><b>Definition:</b> shell.hpp:214</div></div>
+<div class="ttc" id="structinternal_1_1windows_1_1ProcessData_html_a7160cf48fc6e70d9390233b246b93bee"><div class="ttname"><a href="structinternal_1_1windows_1_1ProcessData.html#a7160cf48fc6e70d9390233b246b93bee">internal::windows::ProcessData::thread_handle</a></div><div class="ttdeci">SharedHandle thread_handle</div><div class="ttdef"><b>Definition:</b> shell.hpp:215</div></div>
+<div class="ttc" id="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors_html"><div class="ttname"><a href="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors.html">process::Subprocess::IO::InputFileDescriptors</a></div><div class="ttdoc">For input file descriptors a child reads from the read file descriptor and a parent may write to the ...</div><div class="ttdef"><b>Definition:</b> subprocess.hpp:73</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="classTry_html_aec4a11ddd3c036e889d90b7eb6258ba7"><div class="ttname"><a href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">Try::error</a></div><div class="ttdeci">static Try error(const E &amp;e)</div><div class="ttdef"><b>Definition:</b> try.hpp:42</div></div>
+<div class="ttc" id="structprocess_1_1Subprocess_1_1ParentHook_html_aaf9ff141314d619cd65cd8ec9320fb7d"><div class="ttname"><a href="structprocess_1_1Subprocess_1_1ParentHook.html#aaf9ff141314d619cd65cd8ec9320fb7d">process::Subprocess::ParentHook::parent_setup</a></div><div class="ttdeci">const lambda::function&lt; Try&lt; Nothing &gt;pid_t)&gt; parent_setup</div><div class="ttdoc">The callback that must be specified for execution after the child has been cloned, but before it starts executing the new process. </div><div class="ttdef"><b>Definition:</b> subprocess.hpp:163</div></div>
+<div class="ttc" id="foreach_8hpp_html"><div class="ttname"><a href="foreach_8hpp.html">foreach.hpp</a></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="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>
+<div class="ttc" id="namespaceprocess_html"><div class="ttname"><a href="namespaceprocess.html">process</a></div><div class="ttdef"><b>Definition:</b> executor.hpp:48</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="hashset_8hpp_html"><div class="ttname"><a href="hashset_8hpp.html">hashset.hpp</a></div></div>
+<div class="ttc" id="structinternal_1_1windows_1_1ProcessData_html_a65a4a4aba5450087363bfffdb30eea25"><div class="ttname"><a href="structinternal_1_1windows_1_1ProcessData.html#a65a4a4aba5450087363bfffdb30eea25">internal::windows::ProcessData::pid</a></div><div class="ttdeci">pid_t pid</div><div class="ttdef"><b>Definition:</b> shell.hpp:216</div></div>
+<div class="ttc" id="shell_8hpp_html"><div class="ttname"><a href="shell_8hpp.html">shell.hpp</a></div></div>
+<div class="ttc" id="structprocess_1_1Subprocess_1_1ParentHook_html"><div class="ttname"><a href="structprocess_1_1Subprocess_1_1ParentHook.html">process::Subprocess::ParentHook</a></div><div class="ttdoc">A hook can be passed to a subprocess call. </div><div class="ttdef"><b>Definition:</b> subprocess.hpp:152</div></div>
+<div class="ttc" id="int__fd_8hpp_html_aea4dbda01c90455f158ffa9b924c2f07"><div class="ttname"><a href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a></div><div class="ttdeci">int int_fd</div><div class="ttdef"><b>Definition:</b> int_fd.hpp:35</div></div>
+<div class="ttc" id="namespacens_html_a28116b46e6543597a11733424cd1aa20"><div class="ttname"><a href="namespacens.html#a28116b46e6543597a11733424cd1aa20">ns::stringify</a></div><div class="ttdeci">std::string stringify(int flags)</div></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.11
+</small></address>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors.html b/content/api/latest/c++/structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors.html
index 29089ed..317a1fe 100644
--- a/content/api/latest/c++/structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors.html
+++ b/content/api/latest/c++/structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors.html
@@ -61,7 +61,7 @@
 <p>For input file descriptors a child reads from the <code>read</code> file descriptor and a parent may write to the <code>write</code> file descriptor if one is present.  
  <a href="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors.html#details">More...</a></p>
 
-<p><code>#include &lt;<a class="el" href="subprocess_8hpp_source.html">subprocess.hpp</a>&gt;</code></p>
+<p><code>#include &lt;<a class="el" href="include_2process_2subprocess_8hpp_source.html">subprocess.hpp</a>&gt;</code></p>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
 Public Attributes</h2></td></tr>
@@ -99,7 +99,7 @@ Public Attributes</h2></td></tr>
 </div>
 </div>
 <hr/>The documentation for this struct was generated from the following file:<ul>
-<li>3rdparty/libprocess/include/process/<a class="el" href="subprocess_8hpp_source.html">subprocess.hpp</a></li>
+<li>3rdparty/libprocess/include/process/<a class="el" href="include_2process_2subprocess_8hpp_source.html">subprocess.hpp</a></li>
 </ul>
 </div><!-- contents -->
 <!-- start footer part -->

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html b/content/api/latest/c++/structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html
index 0700824..1d92fd3 100644
--- a/content/api/latest/c++/structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html
+++ b/content/api/latest/c++/structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html
@@ -61,7 +61,7 @@
 <p>For output file descriptors a child writes to the <code>write</code> file descriptor and a parent may read from the <code>read</code> file descriptor if one is present.  
  <a href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html#details">More...</a></p>
 
-<p><code>#include &lt;<a class="el" href="subprocess_8hpp_source.html">subprocess.hpp</a>&gt;</code></p>
+<p><code>#include &lt;<a class="el" href="include_2process_2subprocess_8hpp_source.html">subprocess.hpp</a>&gt;</code></p>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
 Public Attributes</h2></td></tr>
@@ -99,7 +99,7 @@ Public Attributes</h2></td></tr>
 </div>
 </div>
 <hr/>The documentation for this struct was generated from the following file:<ul>
-<li>3rdparty/libprocess/include/process/<a class="el" href="subprocess_8hpp_source.html">subprocess.hpp</a></li>
+<li>3rdparty/libprocess/include/process/<a class="el" href="include_2process_2subprocess_8hpp_source.html">subprocess.hpp</a></li>
 </ul>
 </div><!-- contents -->
 <!-- start footer part -->

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/structprocess_1_1Subprocess_1_1ParentHook.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/structprocess_1_1Subprocess_1_1ParentHook.html b/content/api/latest/c++/structprocess_1_1Subprocess_1_1ParentHook.html
index ad7b714..69ef4ad 100644
--- a/content/api/latest/c++/structprocess_1_1Subprocess_1_1ParentHook.html
+++ b/content/api/latest/c++/structprocess_1_1Subprocess_1_1ParentHook.html
@@ -63,7 +63,7 @@
 <p>A hook can be passed to a <code>subprocess</code> call.  
  <a href="structprocess_1_1Subprocess_1_1ParentHook.html#details">More...</a></p>
 
-<p><code>#include &lt;<a class="el" href="subprocess_8hpp_source.html">subprocess.hpp</a>&gt;</code></p>
+<p><code>#include &lt;<a class="el" href="include_2process_2subprocess_8hpp_source.html">subprocess.hpp</a>&gt;</code></p>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
@@ -139,7 +139,7 @@ Friends</h2></td></tr>
 </div>
 </div>
 <hr/>The documentation for this struct was generated from the following file:<ul>
-<li>3rdparty/libprocess/include/process/<a class="el" href="subprocess_8hpp_source.html">subprocess.hpp</a></li>
+<li>3rdparty/libprocess/include/process/<a class="el" href="include_2process_2subprocess_8hpp_source.html">subprocess.hpp</a></li>
 </ul>
 </div><!-- contents -->
 <!-- start footer part -->

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/subprocess_8hpp.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/subprocess_8hpp.html b/content/api/latest/c++/subprocess_8hpp.html
deleted file mode 100644
index c5cec43..0000000
--- a/content/api/latest/c++/subprocess_8hpp.html
+++ /dev/null
@@ -1,125 +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: 3rdparty/libprocess/include/process/subprocess.hpp File 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&#160;Page</span></a></li>
-      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><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="files.html"><span>File&#160;List</span></a></li>
-      <li><a href="globals.html"><span>File&#160;Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_8cab8f464681f7cc51cee77e79a434cd.html">3rdparty</a></li><li class="navelem"><a class="el" href="dir_043a76de98701f9bddf61b5e98f305ff.html">libprocess</a></li><li class="navelem"><a class="el" href="dir_eac18f7a64f6f8afbd1493ef4e09abdb.html">include</a></li><li class="navelem"><a class="el" href="dir_1894286df79cf582d947dbc4268b06cf.html">process</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="summary">
-<a href="#nested-classes">Classes</a> &#124;
-<a href="#namespaces">Namespaces</a> &#124;
-<a href="#typedef-members">Typedefs</a> &#124;
-<a href="#func-members">Functions</a>  </div>
-  <div class="headertitle">
-<div class="title">subprocess.hpp File Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="textblock"><code>#include &lt;map&gt;</code><br />
-<code>#include &lt;memory&gt;</code><br />
-<code>#include &lt;string&gt;</code><br />
-<code>#include &lt;vector&gt;</code><br />
-<code>#include &lt;<a class="el" href="future_8hpp_source.html">process/future.hpp</a>&gt;</code><br />
-<code>#include &lt;<a class="el" href="3rdparty_2stout_2include_2stout_2flags_8hpp_source.html">stout/flags.hpp</a>&gt;</code><br />
-<code>#include &lt;<a class="el" href="lambda_8hpp_source.html">stout/lambda.hpp</a>&gt;</code><br />
-<code>#include &lt;<a class="el" href="none_8hpp_source.html">stout/none.hpp</a>&gt;</code><br />
-<code>#include &lt;<a class="el" href="option_8hpp_source.html">stout/option.hpp</a>&gt;</code><br />
-<code>#include &lt;<a class="el" href="try_8hpp_source.html">stout/try.hpp</a>&gt;</code><br />
-<code>#include &lt;<a class="el" href="shell_8hpp_source.html">stout/os/shell.hpp</a>&gt;</code><br />
-<code>#include &lt;<a class="el" href="int__fd_8hpp_source.html">stout/os/int_fd.hpp</a>&gt;</code><br />
-</div>
-<p><a href="subprocess_8hpp_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
-Classes</h2></td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classprocess_1_1Subprocess.html">process::Subprocess</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Represents a fork() exec()ed subprocess.  <a href="classprocess_1_1Subprocess.html#details">More...</a><br /></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classprocess_1_1Subprocess_1_1IO.html">process::Subprocess::IO</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Describes how the I/O is redirected for stdin/stdout/stderr.  <a href="classprocess_1_1Subprocess_1_1IO.html#details">More...</a><br /></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors.html">process::Subprocess::IO::InputFileDescriptors</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">For input file descriptors a child reads from the <code>read</code> file descriptor and a parent may write to the <code>write</code> file descriptor if one is present.  <a href="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors.html#details">More...</a><br /></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html">process::Subprocess::IO::OutputFileDescriptors</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">For output file descriptors a child writes to the <code>write</code> file descriptor and a parent may read from the <code>read</code> file descriptor if one is present.  <a href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html#details">More...</a><br /></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structprocess_1_1Subprocess_1_1ParentHook.html">process::Subprocess::ParentHook</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A hook can be passed to a <code>subprocess</code> call.  <a href="structprocess_1_1Subprocess_1_1ParentHook.html#details">More...</a><br /></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classprocess_1_1Subprocess_1_1ChildHook.html">process::Subprocess::ChildHook</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A <code><a class="el" href="classprocess_1_1Subprocess_1_1ChildHook.html" title="A ChildHook can be passed to a subprocess call. ">ChildHook</a></code> can be passed to a <code>subprocess</code> call.  <a href="classprocess_1_1Subprocess_1_1ChildHook.html#details">More...</a><br /></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr class="memitem:namespaceprocess"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceprocess.html">process</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
-Typedefs</h2></td></tr>
-<tr class="memitem:afc6611c4913642642277b44447a16e55"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceprocess.html#afc6611c4913642642277b44447a16e55">process::InputFileDescriptors</a> = Subprocess::IO::InputFileDescriptors</td></tr>
-<tr class="separator:afc6611c4913642642277b44447a16e55"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a882829822afa4f33b90aafc9c4ffa9af"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceprocess.html#a882829822afa4f33b90aafc9c4ffa9af">process::OutputFileDescriptors</a> = Subprocess::IO::OutputFileDescriptors</td></tr>
-<tr class="separator:a882829822afa4f33b90aafc9c4ffa9af"><td class="memSeparator" colspan="2">&#160;</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:a2d7e0a283bc0c9eca8a8b0532e026269"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classTry.html">Try</a>&lt; Subprocess &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceprocess.html#a2d7e0a283bc0c9eca8a8b0532e026269">process::subprocess</a> (const std::string &amp;path, std::vector&lt; std::string &gt; argv, const Subprocess::IO &amp;in=Subprocess::FD(<a class="el" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#afcf80a6d91178952d107ad00b165752b">STDIN_FILENO</a>), const Subprocess::IO &amp;out=Subprocess::FD(<a class="el" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#abd165ee6474b5b75bf075842fff13a04">STDOUT_FILENO</a>), const Subprocess::IO &amp;err=Subprocess::FD(<a class="el" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ae2fe1725bb5e9823d089c46b9ed5266e">STDERR_FILENO</a>), const <a class="el" href="classflags_1_1FlagsBase.html">flags::FlagsBase</a> *<a class="el" href=
 "decoder_8hpp.html#abb0829cce9dd20a40ae0d86890ae85c6">flags</a>=nullptr, const <a class="el" href="classOption.html">Option</a>&lt; std::map&lt; std::string, std::string &gt;&gt; &amp;environment=<a class="el" href="structNone.html">None</a>(), const <a class="el" href="classOption.html">Option</a>&lt; lambda::function&lt; <a class="el" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a>(const lambda::function&lt; int()&gt; &amp;)&gt;&gt; &amp;clone=<a class="el" href="structNone.html">None</a>(), const std::vector&lt; Subprocess::ParentHook &gt; &amp;parent_hooks={}, const std::vector&lt; Subprocess::ChildHook &gt; &amp;child_hooks={}, const std::vector&lt; <a class="el" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> &gt; &amp;whitelist_fds={})</td></tr>
-<tr class="memdesc:a2d7e0a283bc0c9eca8a8b0532e026269"><td class="mdescLeft">&#160;</td><td class="mdescRight">Forks a subprocess and execs the specified 'path' with the specified 'argv', redirecting stdin, stdout, and stderr as specified by 'in', 'out', and 'err' respectively.  <a href="namespaceprocess.html#a2d7e0a283bc0c9eca8a8b0532e026269">More...</a><br /></td></tr>
-<tr class="separator:a2d7e0a283bc0c9eca8a8b0532e026269"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a0a748c548ad3a094196c98f00f9674cf"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classTry.html">Try</a>&lt; Subprocess &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceprocess.html#a0a748c548ad3a094196c98f00f9674cf">process::subprocess</a> (const std::string &amp;command, const Subprocess::IO &amp;in=Subprocess::FD(<a class="el" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#afcf80a6d91178952d107ad00b165752b">STDIN_FILENO</a>), const Subprocess::IO &amp;out=Subprocess::FD(<a class="el" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#abd165ee6474b5b75bf075842fff13a04">STDOUT_FILENO</a>), const Subprocess::IO &amp;err=Subprocess::FD(<a class="el" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ae2fe1725bb5e9823d089c46b9ed5266e">STDERR_FILENO</a>), const <a class="el" href="classOption.html">Option</a>&lt; std::map&lt; std::string, std::string &gt;&gt; &amp;environment=<a class="
 el" href="structNone.html">None</a>(), const <a class="el" href="classOption.html">Option</a>&lt; lambda::function&lt; <a class="el" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a>(const lambda::function&lt; int()&gt; &amp;)&gt;&gt; &amp;clone=<a class="el" href="structNone.html">None</a>(), const std::vector&lt; Subprocess::ParentHook &gt; &amp;parent_hooks={}, const std::vector&lt; Subprocess::ChildHook &gt; &amp;child_hooks={}, const std::vector&lt; <a class="el" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> &gt; &amp;whitelist_fds={})</td></tr>
-<tr class="memdesc:a0a748c548ad3a094196c98f00f9674cf"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="structOverload.html">Overload</a> of 'subprocess' for launching a shell command, i.e., 'sh -c command'.  <a href="namespaceprocess.html#a0a748c548ad3a094196c98f00f9674cf">More...</a><br /></td></tr>
-<tr class="separator:a0a748c548ad3a094196c98f00f9674cf"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table>
-</div><!-- contents -->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated by &#160;<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.11
-</small></address>
-</body>
-</html>


[26/50] mesos-site git commit: Updated the website built from mesos SHA: 7c9c72d.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/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 e217466..92d6f28 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
@@ -53,7 +53,7 @@
 </div><!--header-->
 <div class="contents">
 <a href="libprocess_2include_2process_2socket_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>&#160;<span class="comment">// Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<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>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<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>&#16
 0;<span class="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<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>&#160;<span class="comment">// distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<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>&#160;<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>&#160;<span class="comment">// limitations under the License</span></div><div class="line"><a name="l00012"></a><span class="lineno">   12</s
 pan>&#160;</div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="preprocessor">#ifndef __PROCESS_SOCKET_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="preprocessor">#define __PROCESS_SOCKET_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;</div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="preprocessor">#ifndef __WINDOWS__</span></div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="preprocessor">#include &lt;sys/socket.h&gt;</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="preprocessor">#include &lt;sys/wait.h&gt;</span></div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;<span class="preprocessor">#endif // __WINDOWS__</span></div><div class="line"><a name="l00020
 "></a><span class="lineno">   20</span>&#160;</div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="preprocessor">#include &lt;memory&gt;</span></div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="address_8hpp.html">process/address.hpp</a>&gt;</span></div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="future_8hpp.html">process/future.hpp</a>&gt;</span></div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;</div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="abort_8hpp.html">stout/abort.hpp</a>&gt;</span></div><div class="line"><a name="l00027"></a><span cla
 ss="lineno">   27</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="error_8hpp.html">stout/error.hpp</a>&gt;</span></div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="nothing_8hpp.html">stout/nothing.hpp</a>&gt;</span></div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="try_8hpp.html">stout/try.hpp</a>&gt;</span></div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="unreachable_8hpp.html">stout/unreachable.hpp</a>&gt;</span></div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="preprocessor">#ifdef __WINDOWS__</span></div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;<span class="preprocessor">#include &lt;<a clas
 s="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html">stout/windows.hpp</a>&gt;</span></div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;<span class="preprocessor">#endif // __WINDOWS__</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>&#160;<span class="preprocessor">#include &lt;<a class="code" href="int__fd_8hpp.html">stout/os/int_fd.hpp</a>&gt;</span></div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;</div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;</div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceprocess.html">process</a> {</div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;<span class="keyword">namespace </span>netw
 ork {</div><div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="namespaceprocess_1_1network_1_1internal.html">   40</a></span>&#160;<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>&#160;</div><div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html">   56</a></span>&#160;<span class="keyword">class </span><a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html">SocketImpl</a> : <span class="keyword">public</span> std::enable_shared_from_this&lt;SocketImpl&gt;</div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;{</div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00065"></a><span class="lineno"><a c
 lass="line" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#ab1b898c86d5d9d449a65381c2b1d74f5">   65</a></span>&#160;  <span class="keyword">enum class</span> <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#ab1b898c86d5d9d449a65381c2b1d74f5">Kind</a></div><div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;  {</div><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;    <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#ab1b898c86d5d9d449a65381c2b1d74f5a48798d6fe72649c6d013e60081c38d9a">POLL</a>,</div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;<span class="preprocessor">#ifdef USE_SSL_SOCKET</span></div><div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;    SSL</div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;<span class="preprocessor">#endif</span></div><div class="line
 "><a name="l00071"></a><span class="lineno">   71</span>&#160;  };</div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;</div><div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;  <span class="keyword">static</span> <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#ab1b898c86d5d9d449a65381c2b1d74f5">Kind</a> <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a6ef4668e83adac7bb0ff2b54e1a30ecc">DEFAULT_KIND</a>();</div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;</div><div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;  <span class="keyword">static</span> <a class="code" href="classTry.html">Try&lt;std::shared_ptr&lt;SocketImpl&gt;</a>&gt; <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a5a00f792b5055241fea9f1fc81b2c4c6">create</a>(</div><div class="line"><a name="l00088"></a><span class="
 lineno">   88</span>&#160;      <a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a303670cfc45c0e1a564fec0532320804">s</a>,</div><div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;      <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#ab1b898c86d5d9d449a65381c2b1d74f5">Kind</a> <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#aa4754b1975ff51b35734e8f5941ee319">kind</a> = <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a6ef4668e83adac7bb0ff2b54e1a30ecc">DEFAULT_KIND</a>());</div><div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;</div><div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;  <span class="comment">// TODO(josephw): MESOS-5729: Consider making the CLOEXEC option</span></div><div class="line"><a name=
 "l00101"></a><span class="lineno">  101</span>&#160;  <span class="comment">// configurable by the caller of the interface.</span></div><div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;  <span class="keyword">static</span> <a class="code" href="classTry.html">Try&lt;std::shared_ptr&lt;SocketImpl&gt;</a>&gt; <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a5a00f792b5055241fea9f1fc81b2c4c6">create</a>(</div><div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;      <a class="code" href="classprocess_1_1network_1_1Address.html#a0c9fa166dbf9c863a6ef68aa8343e3fc">Address::Family</a> family,</div><div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;      <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#ab1b898c86d5d9d449a65381c2b1d74f5">Kind</a> <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#aa4754b1975ff51b35734e8f5941ee319"
 >kind</a> = <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a6ef4668e83adac7bb0ff2b54e1a30ecc">DEFAULT_KIND</a>());</div><div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;</div><div class="line"><a name="l00106"></a><span class="lineno"><a class="line" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a6c309d35f5d776af4f9abe1f12367094">  106</a></span>&#160;  <span class="keyword">virtual</span> <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a6c309d35f5d776af4f9abe1f12367094">~SocketImpl</a>()</div><div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;  {</div><div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;    <span class="comment">// Don&#39;t close if the socket was released.</span></div><div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;    <span class="keywordflow">if</span> (s &gt;= 0) {</div><div cla
 ss="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;      <a class="code" href="stout_2include_2stout_2check_8hpp.html#aee320e7c6e107071f4b85d4cc135a265">CHECK_SOME</a>(<a class="code" href="namespaceos.html#a8df77ec6d6b8d32d9b287a41bc74cfdc">os::close</a>(s)) &lt;&lt; <span class="stringliteral">&quot;Failed to close socket&quot;</span>;</div><div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;    }</div><div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;  }</div><div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;</div><div class="line"><a name="l00117"></a><span class="lineno"><a class="line" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#af0c991d0689192ac03ed3e4bc1d025ec">  117</a></span>&#160;  <a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> <span class="keyword">get</span>() <span class="keyword">const</span></div><div class="line
 "><a name="l00118"></a><span class="lineno">  118</span>&#160;  {</div><div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a303670cfc45c0e1a564fec0532320804">s</a>;</div><div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;  }</div><div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;</div><div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;  <a class="code" href="classTry.html">Try&lt;Address&gt;</a> <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a2289c8b4a10fae48e88518019c900c5a">address</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;</div><div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;  <a class="code" href="classTry.html">T
 ry&lt;Address&gt;</a> <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#ab378bc6c952d9475a6a047b0a57386b5">peer</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;</div><div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;  <a class="code" href="classTry.html">Try&lt;Address&gt;</a> <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a2c9eff7657c4b46be8f19809fcb12822">bind</a>(<span class="keyword">const</span> <a class="code" href="classprocess_1_1network_1_1Address.html">Address</a>&amp; address);</div><div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;</div><div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;  <span class="keyword">virtual</span> <a class="code" href="classTry.html">Try&lt;Nothing&gt;</a> <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.htm
 l#a2af1042316d1dd5bd551bc4a2ee69000">listen</a>(<span class="keywordtype">int</span> backlog) = 0;</div><div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;</div><div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;  <span class="keyword">virtual</span> <a class="code" href="classprocess_1_1Future.html">Future&lt;std::shared_ptr&lt;SocketImpl&gt;</a>&gt; <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a736f79aaed2572670aab9eda08cc4efa">accept</a>() = 0;</div><div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;</div><div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;  <span class="keyword">virtual</span> <a class="code" href="classprocess_1_1Future.html">Future&lt;Nothing&gt;</a> <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a54ff5817c8e53085c47d8df7e6f5ffd9">connect</a>(<span class="keyword">const</span> <a class="code" h
 ref="classprocess_1_1network_1_1Address.html">Address</a>&amp; address) = 0;</div><div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;  <span class="keyword">virtual</span> <a class="code" href="classprocess_1_1Future.html">Future&lt;size_t&gt;</a> <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a081d62bd6c808c7293a863ebefa1964e">recv</a>(<span class="keywordtype">char</span>* data, <span class="keywordtype">size_t</span> <a class="code" href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">size</a>) = 0;</div><div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;  <span class="keyword">virtual</span> <a class="code" href="classprocess_1_1Future.html">Future&lt;size_t&gt;</a> <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#afe37d6fc53fc38545d1878dfb0918d88">send</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* data, <span class="keyword
 type">size_t</span> size) = 0;</div><div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;  <span class="keyword">virtual</span> <a class="code" href="classprocess_1_1Future.html">Future&lt;size_t&gt;</a> <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a15c48459535a0a99a2a70ff1fcbb7d59">sendfile</a>(<a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> fd, off_t offset, <span class="keywordtype">size_t</span> size) = 0;</div><div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;</div><div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;  <span class="comment">// TODO(benh): Consider returning Owned&lt;std::string&gt; or</span></div><div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;  <span class="comment">// Shared&lt;std::string&gt;, the latter enabling reuse of a pool of</span></div><div class="line"><a name="l00173"></a><
 span class="lineno">  173</span>&#160;  <span class="comment">// preallocated strings/buffers.</span></div><div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;  <span class="keyword">virtual</span> <a class="code" href="classprocess_1_1Future.html">Future&lt;std::string&gt;</a> <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a081d62bd6c808c7293a863ebefa1964e">recv</a>(<span class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;ssize_t&gt;</a>&amp; size = <a class="code" href="structNone.html">None</a>());</div><div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;</div><div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;  <span class="comment">// TODO(benh): Consider taking Shared&lt;std::string&gt;, the latter</span></div><div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;  <span class="comment">// enabling reuse of a pool of p
 reallocated strings/buffers.</span></div><div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;  <span class="keyword">virtual</span> <a class="code" href="classprocess_1_1Future.html">Future&lt;Nothing&gt;</a> <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#afe37d6fc53fc38545d1878dfb0918d88">send</a>(<span class="keyword">const</span> std::string&amp; data);</div><div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;</div><div class="line"><a name="l00191"></a><span class="lineno"><a class="line" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a04930363612888ceb04d517061a43f3e">  191</a></span>&#160;  <span class="keyword">virtual</span> <a class="code" href="classTry.html">Try&lt;Nothing, SocketError&gt;</a> <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a04930363612888ceb04d517061a43f3e">shutdown</a>(<span class="keywordtype">int</span> how)</div><div class="lin
 e"><a name="l00192"></a><span class="lineno">  192</span>&#160;  {</div><div class="line"><a name="l00193"></a><span class="lineno">  193</span>&#160;    <span class="keywordflow">if</span> (::<a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a04930363612888ceb04d517061a43f3e">shutdown</a>(s, how) &lt; 0) {</div><div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#160;      <span class="keywordflow">return</span> <a class="code" href="error_8hpp.html#a176f6fc34ea37d40201853a52a475762">SocketError</a>();</div><div class="line"><a name="l00195"></a><span class="lineno">  195</span>&#160;    }</div><div class="line"><a name="l00196"></a><span class="lineno">  196</span>&#160;</div><div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="structNothing.html">Nothing</a>();</div><div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160;
   }</div><div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160;</div><div class="line"><a name="l00200"></a><span class="lineno">  200</span>&#160;  <span class="keyword">virtual</span> <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#ab1b898c86d5d9d449a65381c2b1d74f5">Kind</a> <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#aa4754b1975ff51b35734e8f5941ee319">kind</a>() <span class="keyword">const</span> = 0;</div><div class="line"><a name="l00201"></a><span class="lineno">  201</span>&#160;</div><div class="line"><a name="l00202"></a><span class="lineno">  202</span>&#160;<span class="keyword">protected</span>:</div><div class="line"><a name="l00203"></a><span class="lineno"><a class="line" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a9c899f4ca922824a0092288d5d6b79b4">  203</a></span>&#160;  <span class="keyword">explicit</span> <a class="code" href="classprocess_1_1network_1_1internal
 _1_1SocketImpl.html#a9c899f4ca922824a0092288d5d6b79b4">SocketImpl</a>(<a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> _s) : s(_s) { CHECK(s &gt;= 0); }</div><div class="line"><a name="l00204"></a><span class="lineno">  204</span>&#160;</div><div class="line"><a name="l00211"></a><span class="lineno"><a class="line" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a963ee1a4b21acf7f423b86fd06cdf09a">  211</a></span>&#160;  <a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a963ee1a4b21acf7f423b86fd06cdf09a">release</a>()</div><div class="line"><a name="l00212"></a><span class="lineno">  212</span>&#160;  {</div><div class="line"><a name="l00213"></a><span class="lineno">  213</span>&#160;    <a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> released = <a class="code" href="classprocess_1_1n
 etwork_1_1internal_1_1SocketImpl.html#a303670cfc45c0e1a564fec0532320804">s</a>;</div><div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160;    s = -1;</div><div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160;    <span class="keywordflow">return</span> released;</div><div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#160;  }</div><div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160;</div><div class="line"><a name="l00221"></a><span class="lineno">  221</span>&#160;  <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l00222"></a><span class="lineno"><a class="line" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a593398b46bc29ef1e6b87b2fadbba7d6">  222</a></span>&#160;  <span class="keyword">static</span> std::shared_ptr&lt;T&gt; <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a593
 398b46bc29ef1e6b87b2fadbba7d6">shared</a>(T* t)</div><div class="line"><a name="l00223"></a><span class="lineno">  223</span>&#160;  {</div><div class="line"><a name="l00224"></a><span class="lineno">  224</span>&#160;    std::shared_ptr&lt;T&gt; pointer =</div><div class="line"><a name="l00225"></a><span class="lineno">  225</span>&#160;      std::dynamic_pointer_cast&lt;T&gt;(CHECK_NOTNULL(t)-&gt;shared_from_this());</div><div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;    CHECK(pointer);</div><div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160;    <span class="keywordflow">return</span> pointer;</div><div class="line"><a name="l00228"></a><span class="lineno">  228</span>&#160;  }</div><div class="line"><a name="l00229"></a><span class="lineno">  229</span>&#160;</div><div class="line"><a name="l00230"></a><span class="lineno"><a class="line" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a303670cfc45c0e1a564fe
 c0532320804">  230</a></span>&#160;  <a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a303670cfc45c0e1a564fec0532320804">s</a>;</div><div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160;};</div><div class="line"><a name="l00232"></a><span class="lineno">  232</span>&#160;</div><div class="line"><a name="l00233"></a><span class="lineno">  233</span>&#160;</div><div class="line"><a name="l00241"></a><span class="lineno">  241</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> AddressType&gt;</div><div class="line"><a name="l00242"></a><span class="lineno"><a class="line" href="classprocess_1_1network_1_1internal_1_1Socket.html">  242</a></span>&#160;<span class="keyword">class </span><a class="code" href="classprocess_1_1network_1_1internal_1_1Socket.html">Socket</a></div><div class="line"><a name="l00243"><
 /a><span class="lineno">  243</span>&#160;{</div><div class="line"><a name="l00244"></a><span class="lineno">  244</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00245"></a><span class="lineno">  245</span>&#160;  static_assert(</div><div class="line"><a name="l00246"></a><span class="lineno">  246</span>&#160;      std::is_convertible&lt;AddressType, network::Address&gt;::value,</div><div class="line"><a name="l00247"></a><span class="lineno">  247</span>&#160;      <span class="stringliteral">&quot;Requires type convertible to `network::Address`&quot;</span>);</div><div class="line"><a name="l00248"></a><span class="lineno">  248</span>&#160;</div><div class="line"><a name="l00258"></a><span class="lineno"><a class="line" href="classprocess_1_1network_1_1internal_1_1Socket.html#a63ec4379f16d4f8dbf39f91b1be74a31">  258</a></span>&#160;  <span class="keyword">static</span> <a class="code" href="classTry.html">Try&lt;Socket&gt;</a> <a class="code" h
 ref="classprocess_1_1network_1_1internal_1_1Socket.html#a63ec4379f16d4f8dbf39f91b1be74a31">create</a>(</div><div class="line"><a name="l00259"></a><span class="lineno">  259</span>&#160;      <a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a303670cfc45c0e1a564fec0532320804">s</a>,</div><div class="line"><a name="l00260"></a><span class="lineno">  260</span>&#160;      <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#ab1b898c86d5d9d449a65381c2b1d74f5">SocketImpl::Kind</a> <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#aa4754b1975ff51b35734e8f5941ee319">kind</a> = <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a6ef4668e83adac7bb0ff2b54e1a30ecc">SocketImpl::DEFAULT_KIND</a>())</div><div class="line"><a name="l00261"></a><span class="lineno">  261</span>&#160;  {</div><div class="line"><
 a name="l00262"></a><span class="lineno">  262</span>&#160;    <a class="code" href="classTry.html">Try&lt;std::shared_ptr&lt;SocketImpl&gt;</a>&gt; impl = <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a5a00f792b5055241fea9f1fc81b2c4c6">SocketImpl::create</a>(s, <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#aa4754b1975ff51b35734e8f5941ee319">kind</a>);</div><div class="line"><a name="l00263"></a><span class="lineno">  263</span>&#160;    <span class="keywordflow">if</span> (impl.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00264"></a><span class="lineno">  264</span>&#160;      <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(impl.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00265"></a><span class="lineno">  265</span>&#160;    }</div><
 div class="line"><a name="l00266"></a><span class="lineno">  266</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="namespaceprocess_1_1network.html#ac88a30c7132c85b7394664e9985aa8ae">Socket</a>(impl.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>());</div><div class="line"><a name="l00267"></a><span class="lineno">  267</span>&#160;  }</div><div class="line"><a name="l00268"></a><span class="lineno">  268</span>&#160;</div><div class="line"><a name="l00279"></a><span class="lineno">  279</span>&#160;  <span class="comment">// TODO(josephw): MESOS-5729: Consider making the CLOEXEC option</span></div><div class="line"><a name="l00280"></a><span class="lineno">  280</span>&#160;  <span class="comment">// configurable by the caller of the interface.</span></div><div class="line"><a name="l00281"></a><span class="lineno">  281</span>&#160;  <span class="keyword">static</span> <a class="code" href="classTry.html">Try&lt;Socket&gt;
 </a> <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a5a00f792b5055241fea9f1fc81b2c4c6">create</a>(<a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#ab1b898c86d5d9d449a65381c2b1d74f5">SocketImpl::Kind</a> <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#aa4754b1975ff51b35734e8f5941ee319">kind</a> = <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a6ef4668e83adac7bb0ff2b54e1a30ecc">SocketImpl::DEFAULT_KIND</a>());</div><div class="line"><a name="l00282"></a><span class="lineno">  282</span>&#160;</div><div class="line"><a name="l00297"></a><span class="lineno">  297</span>&#160;  <span class="keyword">static</span> <a class="code" href="classTry.html">Try&lt;Socket&gt;</a> <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a5a00f792b5055241fea9f1fc81b2c4c6">create</a>(</div><div class="line"><a name="l00298"></a><span class="lineno">  298</span>&#1
 60;      <a class="code" href="classprocess_1_1network_1_1Address.html#a0c9fa166dbf9c863a6ef68aa8343e3fc">Address::Family</a> family,</div><div class="line"><a name="l00299"></a><span class="lineno">  299</span>&#160;      <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#ab1b898c86d5d9d449a65381c2b1d74f5">SocketImpl::Kind</a> <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#aa4754b1975ff51b35734e8f5941ee319">kind</a> = <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a6ef4668e83adac7bb0ff2b54e1a30ecc">SocketImpl::DEFAULT_KIND</a>());</div><div class="line"><a name="l00300"></a><span class="lineno">  300</span>&#160;</div><div class="line"><a name="l00307"></a><span class="lineno"><a class="line" href="classprocess_1_1network_1_1internal_1_1Socket.html#a321e42cc71f404ff9a1ae51108c92ef8">  307</a></span>&#160;  <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#ab1b898c86d5d9d
 449a65381c2b1d74f5">SocketImpl::Kind</a> <a class="code" href="classprocess_1_1network_1_1internal_1_1Socket.html#a321e42cc71f404ff9a1ae51108c92ef8">kind</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00308"></a><span class="lineno">  308</span>&#160;<span class="keyword">  </span>{</div><div class="line"><a name="l00309"></a><span class="lineno">  309</span>&#160;    <span class="keywordflow">return</span> impl-&gt;kind();</div><div class="line"><a name="l00310"></a><span class="lineno">  310</span>&#160;  }</div><div class="line"><a name="l00311"></a><span class="lineno">  311</span>&#160;</div><div class="line"><a name="l00312"></a><span class="lineno"><a class="line" href="classprocess_1_1network_1_1internal_1_1Socket.html#a88163658413e7817b7d6b442b7eb7dd6">  312</a></span>&#160;  <span class="keywordtype">bool</span> <a class="code" href="classprocess_1_1network_1_1internal_1_1Socket.html#a88163658413e7817b7d6b442b7eb7dd6">operator==</a>(<span class="
 keyword">const</span> <a class="code" href="classprocess_1_1network_1_1internal_1_1Socket.html">Socket</a>&amp; that)<span class="keyword"> const</span></div><div class="line"><a name="l00313"></a><span class="lineno">  313</span>&#160;<span class="keyword">  </span>{</div><div class="line"><a name="l00314"></a><span class="lineno">  314</span>&#160;    <span class="keywordflow">return</span> impl == that.impl;</div><div class="line"><a name="l00315"></a><span class="lineno">  315</span>&#160;  }</div><div class="line"><a name="l00316"></a><span class="lineno">  316</span>&#160;</div><div class="line"><a name="l00317"></a><span class="lineno"><a class="line" href="classprocess_1_1network_1_1internal_1_1Socket.html#a766b71809970711c05029c28b60a0d62">  317</a></span>&#160;  <span class="keyword">operator</span> <a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00318"></a><span cla
 ss="lineno">  318</span>&#160;<span class="keyword">  </span>{</div><div class="line"><a name="l00319"></a><span class="lineno">  319</span>&#160;    <span class="keywordflow">return</span> impl-&gt;get();</div><div class="line"><a name="l00320"></a><span class="lineno">  320</span>&#160;  }</div><div class="line"><a name="l00321"></a><span class="lineno">  321</span>&#160;</div><div class="line"><a name="l00322"></a><span class="lineno"><a class="line" href="classprocess_1_1network_1_1internal_1_1Socket.html#ae0a90b8a9cbc66e8042905a34652f2db">  322</a></span>&#160;  <a class="code" href="classTry.html">Try&lt;AddressType&gt;</a> <a class="code" href="classprocess_1_1network_1_1internal_1_1Socket.html#ae0a90b8a9cbc66e8042905a34652f2db">address</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00323"></a><span class="lineno">  323</span>&#160;<span class="keyword">  </span>{</div><div class="line"><a name="l00324"></a><span class="lineno">  324</span>&#160;   
  <span class="keywordflow">return</span> convert&lt;AddressType&gt;(impl-&gt;address());</div><div class="line"><a name="l00325"></a><span class="lineno">  325</span>&#160;  }</div><div class="line"><a name="l00326"></a><span class="lineno">  326</span>&#160;</div><div class="line"><a name="l00327"></a><span class="lineno"><a class="line" href="classprocess_1_1network_1_1internal_1_1Socket.html#a78158efb4187b3d5adac7e8b902378c4">  327</a></span>&#160;  <a class="code" href="classTry.html">Try&lt;AddressType&gt;</a> <a class="code" href="classprocess_1_1network_1_1internal_1_1Socket.html#a78158efb4187b3d5adac7e8b902378c4">peer</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00328"></a><span class="lineno">  328</span>&#160;<span class="keyword">  </span>{</div><div class="line"><a name="l00329"></a><span class="lineno">  329</span>&#160;    <span class="keywordflow">return</span> convert&lt;AddressType&gt;(impl-&gt;peer());</div><div class="line"><a name="l0
 0330"></a><span class="lineno">  330</span>&#160;  }</div><div class="line"><a name="l00331"></a><span class="lineno">  331</span>&#160;</div><div class="line"><a name="l00332"></a><span class="lineno"><a class="line" href="classprocess_1_1network_1_1internal_1_1Socket.html#a9634920f3ca2ed414fab8ad242b67e6c">  332</a></span>&#160;  <a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> <span class="keyword">get</span>() <span class="keyword">const</span></div><div class="line"><a name="l00333"></a><span class="lineno">  333</span>&#160;  {</div><div class="line"><a name="l00334"></a><span class="lineno">  334</span>&#160;    <span class="keywordflow">return</span> impl-&gt;get();</div><div class="line"><a name="l00335"></a><span class="lineno">  335</span>&#160;  }</div><div class="line"><a name="l00336"></a><span class="lineno">  336</span>&#160;</div><div class="line"><a name="l00337"></a><span class="lineno"><a class="line" href="classprocess_1_1net
 work_1_1internal_1_1Socket.html#a68eb3de09258bba9066e7c258abe4be8">  337</a></span>&#160;  <a class="code" href="classTry.html">Try&lt;AddressType&gt;</a> <a class="code" href="classprocess_1_1network_1_1internal_1_1Socket.html#a68eb3de09258bba9066e7c258abe4be8">bind</a>(<span class="keyword">const</span> AddressType&amp; <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a2289c8b4a10fae48e88518019c900c5a">address</a>)</div><div class="line"><a name="l00338"></a><span class="lineno">  338</span>&#160;  {</div><div class="line"><a name="l00339"></a><span class="lineno">  339</span>&#160;    <span class="keywordflow">return</span> convert&lt;AddressType&gt;(impl-&gt;bind(address));</div><div class="line"><a name="l00340"></a><span class="lineno">  340</span>&#160;  }</div><div class="line"><a name="l00341"></a><span class="lineno">  341</span>&#160;</div><div class="line"><a name="l00342"></a><span class="lineno"><a class="line" href="classprocess_1_1network_
 1_1internal_1_1Socket.html#a47004344dd24c96f445f86fd5bd11b2c">  342</a></span>&#160;  <a class="code" href="classTry.html">Try&lt;Nothing&gt;</a> <a class="code" href="classprocess_1_1network_1_1internal_1_1Socket.html#a47004344dd24c96f445f86fd5bd11b2c">listen</a>(<span class="keywordtype">int</span> backlog)</div><div class="line"><a name="l00343"></a><span class="lineno">  343</span>&#160;  {</div><div class="line"><a name="l00344"></a><span class="lineno">  344</span>&#160;    <span class="keywordflow">return</span> impl-&gt;listen(backlog);</div><div class="line"><a name="l00345"></a><span class="lineno">  345</span>&#160;  }</div><div class="line"><a name="l00346"></a><span class="lineno">  346</span>&#160;</div><div class="line"><a name="l00347"></a><span class="lineno"><a class="line" href="classprocess_1_1network_1_1internal_1_1Socket.html#a710758874ebc05acdc9bee369254aa13">  347</a></span>&#160;  <a class="code" href="classprocess_1_1Future.html">Future&lt;Socket&gt;</a> <a
  class="code" href="classprocess_1_1network_1_1internal_1_1Socket.html#a710758874ebc05acdc9bee369254aa13">accept</a>()</div><div class="line"><a name="l00348"></a><span class="lineno">  348</span>&#160;  {</div><div class="line"><a name="l00349"></a><span class="lineno">  349</span>&#160;    <span class="comment">// NOTE: We save a reference to the listening socket itself</span></div><div class="line"><a name="l00350"></a><span class="lineno">  350</span>&#160;    <span class="comment">// (i.e., &#39;this&#39;) so that we don&#39;t close the listening socket</span></div><div class="line"><a name="l00351"></a><span class="lineno">  351</span>&#160;    <span class="comment">// while &#39;accept&#39; is in flight.</span></div><div class="line"><a name="l00352"></a><span class="lineno">  352</span>&#160;    std::shared_ptr&lt;SocketImpl&gt; <span class="keyword">self</span> = impl-&gt;shared_from_this();</div><div class="line"><a name="l00353"></a><span class="lineno">  353</span>&#160;
 </div><div class="line"><a name="l00354"></a><span class="lineno">  354</span>&#160;    <span class="keywordflow">return</span> impl-&gt;accept()</div><div class="line"><a name="l00355"></a><span class="lineno">  355</span>&#160;      <span class="comment">// TODO(benh): Use &amp;&amp; for `accepted` here!</span></div><div class="line"><a name="l00356"></a><span class="lineno">  356</span>&#160;      .then([<span class="keyword">self</span>](<span class="keyword">const</span> std::shared_ptr&lt;SocketImpl&gt;&amp; accepted) {</div><div class="line"><a name="l00357"></a><span class="lineno">  357</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="namespaceprocess_1_1network.html#ac88a30c7132c85b7394664e9985aa8ae">Socket</a>(accepted);</div><div class="line"><a name="l00358"></a><span class="lineno">  358</span>&#160;      });</div><div class="line"><a name="l00359"></a><span class="lineno">  359</span>&#160;  }</div><div class="line"><a name="l00360"></
 a><span class="lineno">  360</span>&#160;</div><div class="line"><a name="l00361"></a><span class="lineno"><a class="line" href="classprocess_1_1network_1_1internal_1_1Socket.html#aa441e29328f4f4416a07689de4040022">  361</a></span>&#160;  <a class="code" href="classprocess_1_1Future.html">Future&lt;Nothing&gt;</a> <a class="code" href="classprocess_1_1network_1_1internal_1_1Socket.html#aa441e29328f4f4416a07689de4040022">connect</a>(<span class="keyword">const</span> AddressType&amp; <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a2289c8b4a10fae48e88518019c900c5a">address</a>)</div><div class="line"><a name="l00362"></a><span class="lineno">  362</span>&#160;  {</div><div class="line"><a name="l00363"></a><span class="lineno">  363</span>&#160;    <span class="keywordflow">return</span> impl-&gt;connect(address);</div><div class="line"><a name="l00364"></a><span class="lineno">  364</span>&#160;  }</div><div class="line"><a name="l00365"></a><span class=
 "lineno">  365</span>&#160;</div><div class="line"><a name="l00366"></a><span class="lineno"><a class="line" href="classprocess_1_1network_1_1internal_1_1Socket.html#ae81929b2f51bb910ed4ae1504284bffa">  366</a></span>&#160;  <a class="code" href="classprocess_1_1Future.html">Future&lt;size_t&gt;</a> <a class="code" href="classprocess_1_1network_1_1internal_1_1Socket.html#ae81929b2f51bb910ed4ae1504284bffa">recv</a>(<span class="keywordtype">char</span>* data, <span class="keywordtype">size_t</span> <a class="code" href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">size</a>)<span class="keyword"> const</span></div><div class="line"><a name="l00367"></a><span class="lineno">  367</span>&#160;<span class="keyword">  </span>{</div><div class="line"><a name="l00368"></a><span class="lineno">  368</span>&#160;    <span class="keywordflow">return</span> impl-&gt;recv(data, size);</div><div class="line"><a name="l00369"></a><span class="lineno">  369</span>&#160;  }</div><div 
 class="line"><a name="l00370"></a><span class="lineno">  370</span>&#160;</div><div class="line"><a name="l00371"></a><span class="lineno"><a class="line" href="classprocess_1_1network_1_1internal_1_1Socket.html#a78f8be2490ac380984f60f6081a5c8eb">  371</a></span>&#160;  <a class="code" href="classprocess_1_1Future.html">Future&lt;size_t&gt;</a> <a class="code" href="classprocess_1_1network_1_1internal_1_1Socket.html#a78f8be2490ac380984f60f6081a5c8eb">send</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* data, <span class="keywordtype">size_t</span> <a class="code" href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">size</a>)<span class="keyword"> const</span></div><div class="line"><a name="l00372"></a><span class="lineno">  372</span>&#160;<span class="keyword">  </span>{</div><div class="line"><a name="l00373"></a><span class="lineno">  373</span>&#160;    <span class="keywordflow">return</span> impl-&gt;send(data, size);</div><div class=
 "line"><a name="l00374"></a><span class="lineno">  374</span>&#160;  }</div><div class="line"><a name="l00375"></a><span class="lineno">  375</span>&#160;</div><div class="line"><a name="l00376"></a><span class="lineno"><a class="line" href="classprocess_1_1network_1_1internal_1_1Socket.html#a90bb4cd85693572a79192d8f2a044ed2">  376</a></span>&#160;  <a class="code" href="classprocess_1_1Future.html">Future&lt;size_t&gt;</a> <a class="code" href="classprocess_1_1network_1_1internal_1_1Socket.html#a90bb4cd85693572a79192d8f2a044ed2">sendfile</a>(<a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> fd, off_t offset, <span class="keywordtype">size_t</span> <a class="code" href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">size</a>)<span class="keyword"> const</span></div><div class="line"><a name="l00377"></a><span class="lineno">  377</span>&#160;<span class="keyword">  </span>{</div><div class="line"><a name="l00378"></a><span class="line
 no">  378</span>&#160;    <span class="keywordflow">return</span> impl-&gt;sendfile(fd, offset, size);</div><div class="line"><a name="l00379"></a><span class="lineno">  379</span>&#160;  }</div><div class="line"><a name="l00380"></a><span class="lineno">  380</span>&#160;</div><div class="line"><a name="l00381"></a><span class="lineno"><a class="line" href="classprocess_1_1network_1_1internal_1_1Socket.html#a83b6acc990b981a818eb2691a44fc6c4">  381</a></span>&#160;  <a class="code" href="classprocess_1_1Future.html">Future&lt;std::string&gt;</a> <a class="code" href="classprocess_1_1network_1_1internal_1_1Socket.html#a83b6acc990b981a818eb2691a44fc6c4">recv</a>(<span class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;ssize_t&gt;</a>&amp; <a class="code" href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">size</a> = <a class="code" href="structNone.html">None</a>())</div><div class="line"><a name="l00382"></a><span class="lineno">  382</span>&
 #160;  {</div><div class="line"><a name="l00383"></a><span class="lineno">  383</span>&#160;    <span class="keywordflow">return</span> impl-&gt;recv(<a class="code" href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">size</a>);</div><div class="line"><a name="l00384"></a><span class="lineno">  384</span>&#160;  }</div><div class="line"><a name="l00385"></a><span class="lineno">  385</span>&#160;</div><div class="line"><a name="l00386"></a><span class="lineno"><a class="line" href="classprocess_1_1network_1_1internal_1_1Socket.html#a85a9dda04473d40c874189b62efd19bd">  386</a></span>&#160;  <a class="code" href="classprocess_1_1Future.html">Future&lt;Nothing&gt;</a> <a class="code" href="classprocess_1_1network_1_1internal_1_1Socket.html#a85a9dda04473d40c874189b62efd19bd">send</a>(<span class="keyword">const</span> std::string&amp; data)</div><div class="line"><a name="l00387"></a><span class="lineno">  387</span>&#160;  {</div><div class="line"><a name="l00388"></a><sp
 an class="lineno">  388</span>&#160;    <span class="keywordflow">return</span> impl-&gt;send(data);</div><div class="line"><a name="l00389"></a><span class="lineno">  389</span>&#160;  }</div><div class="line"><a name="l00390"></a><span class="lineno">  390</span>&#160;</div><div class="line"><a name="l00391"></a><span class="lineno"><a class="line" href="classprocess_1_1network_1_1internal_1_1Socket.html#ac5a52929658fbe1ed19b4b03bdd63904">  391</a></span>&#160;  <span class="keyword">enum class</span> <a class="code" href="classprocess_1_1network_1_1internal_1_1Socket.html#ac5a52929658fbe1ed19b4b03bdd63904">Shutdown</a></div><div class="line"><a name="l00392"></a><span class="lineno">  392</span>&#160;  {</div><div class="line"><a name="l00393"></a><span class="lineno">  393</span>&#160;    READ,</div><div class="line"><a name="l00394"></a><span class="lineno">  394</span>&#160;    WRITE,</div><div class="line"><a name="l00395"></a><span class="lineno">  395</span>&#160;    READ_W
 RITE</div><div class="line"><a name="l00396"></a><span class="lineno">  396</span>&#160;  };</div><div class="line"><a name="l00397"></a><span class="lineno">  397</span>&#160;</div><div class="line"><a name="l00398"></a><span class="lineno">  398</span>&#160;  <span class="comment">// TODO(benh): Replace the default to Shutdown::READ_WRITE or remove</span></div><div class="line"><a name="l00399"></a><span class="lineno">  399</span>&#160;  <span class="comment">// all together since it&#39;s unclear what the default should be.</span></div><div class="line"><a name="l00400"></a><span class="lineno"><a class="line" href="classprocess_1_1network_1_1internal_1_1Socket.html#a9d7ac9f641277f1c5f4e7dc6f5464845">  400</a></span>&#160;  <a class="code" href="classTry.html">Try&lt;Nothing, SocketError&gt;</a> <a class="code" href="classprocess_1_1network_1_1internal_1_1Socket.html#a9d7ac9f641277f1c5f4e7dc6f5464845">shutdown</a>(<a class="code" href="classprocess_1_1network_1_1internal_1_1Sock
 et.html#ac5a52929658fbe1ed19b4b03bdd63904">Shutdown</a> <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a04930363612888ceb04d517061a43f3e">shutdown</a> = <a class="code" href="namespaceprocess_1_1io.html#aca1f059ca9f0d7360631c621debeb879">Shutdown::READ</a>)</div><div class="line"><a name="l00401"></a><span class="lineno">  401</span>&#160;  {</div><div class="line"><a name="l00402"></a><span class="lineno">  402</span>&#160;    <span class="keywordtype">int</span> how = [&amp;]() {</div><div class="line"><a name="l00403"></a><span class="lineno">  403</span>&#160;      <span class="keywordflow">switch</span> (<a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a04930363612888ceb04d517061a43f3e">shutdown</a>) {</div><div class="line"><a name="l00404"></a><span class="lineno">  404</span>&#160;        <span class="keywordflow">case</span> <a class="code" href="namespaceprocess_1_1io.html#aca1f059ca9f0d7360631c621debeb879">Shutdown
 ::READ</a>: <span class="keywordflow">return</span> <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a337bdc938215c39cd21ddd11106189c6">SHUT_RD</a>;</div><div class="line"><a name="l00405"></a><span class="lineno">  405</span>&#160;        <span class="keywordflow">case</span> <a class="code" href="namespaceprocess_1_1io.html#ab005316d71b45c5b05de0a6234c6f8fc">Shutdown::WRITE</a>: <span class="keywordflow">return</span> <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ac3d4e32482af3ec2158643d9996d78da">SHUT_WR</a>;</div><div class="line"><a name="l00406"></a><span class="lineno">  406</span>&#160;        <span class="keywordflow">case</span> Shutdown::READ_WRITE: <span class="keywordflow">return</span> <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#abc5dbd13b73a0a66d7fa25364a3f7d77">SHUT_RDWR</a>;</div><div class="line"><a name="l00407"></a><span class="lineno">  407</span>&#160;      }</div><div class="line">
 <a name="l00408"></a><span class="lineno">  408</span>&#160;      <a class="code" href="unreachable_8hpp.html#a0bc63b24b654ca433be7b97a3edde132">UNREACHABLE</a>();</div><div class="line"><a name="l00409"></a><span class="lineno">  409</span>&#160;    }();</div><div class="line"><a name="l00410"></a><span class="lineno">  410</span>&#160;</div><div class="line"><a name="l00411"></a><span class="lineno">  411</span>&#160;    <span class="keywordflow">return</span> impl-&gt;shutdown(how);</div><div class="line"><a name="l00412"></a><span class="lineno">  412</span>&#160;  }</div><div class="line"><a name="l00413"></a><span class="lineno">  413</span>&#160;</div><div class="line"><a name="l00414"></a><span class="lineno">  414</span>&#160;  <span class="comment">// Support implicit conversion of any `Socket&lt;AddressType&gt;` to a</span></div><div class="line"><a name="l00415"></a><span class="lineno">  415</span>&#160;  <span class="comment">// `Socket&lt;network::Address&gt;`.</span>
 </div><div class="line"><a name="l00416"></a><span class="lineno"><a class="line" href="classprocess_1_1network_1_1internal_1_1Socket.html#a044985d2955fb97d2d966a3d2a66dc86">  416</a></span>&#160;  <span class="keyword">operator</span> <a class="code" href="classprocess_1_1network_1_1internal_1_1Socket.html">Socket&lt;network::Address&gt;</a>() <span class="keyword">const</span></div><div class="line"><a name="l00417"></a><span class="lineno">  417</span>&#160;  {</div><div class="line"><a name="l00418"></a><span class="lineno">  418</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classprocess_1_1network_1_1internal_1_1Socket.html">Socket&lt;network::Address&gt;</a>(impl);</div><div class="line"><a name="l00419"></a><span class="lineno">  419</span>&#160;  }</div><div class="line"><a name="l00420"></a><span class="lineno">  420</span>&#160;</div><div class="line"><a name="l00421"></a><span class="lineno">  421</span>&#160;<span class="keyword">private</
 span>:</div><div class="line"><a name="l00422"></a><span class="lineno">  422</span>&#160;  <span class="comment">// Necessary to support the implicit conversion operator from any</span></div><div class="line"><a name="l00423"></a><span class="lineno">  423</span>&#160;  <span class="comment">// `Socket&lt;AddressType&gt;` to `Socket&lt;network::Address&gt;`.</span></div><div class="line"><a name="l00424"></a><span class="lineno">  424</span>&#160;  <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l00425"></a><span class="lineno"><a class="line" href="classprocess_1_1network_1_1internal_1_1Socket.html#a4c6b05834cc8a65c85de7bdb32aac069">  425</a></span>&#160;  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classprocess_1_1network_1_1internal_1_1Socket.html">Socket</a>;</div><div class="line"><a name="l00426"></a><span class="lineno">  426</span>&#160;</div><div class="li
 ne"><a name="l00427"></a><span class="lineno">  427</span>&#160;  <span class="keyword">explicit</span> <a class="code" href="namespaceprocess_1_1network.html#ac88a30c7132c85b7394664e9985aa8ae">Socket</a>(std::shared_ptr&lt;SocketImpl&gt;&amp;&amp; that) : impl(<a class="code" href="namespacestd.html">std</a>::move(that)) {}</div><div class="line"><a name="l00428"></a><span class="lineno">  428</span>&#160;</div><div class="line"><a name="l00429"></a><span class="lineno">  429</span>&#160;  <span class="keyword">explicit</span> <a class="code" href="namespaceprocess_1_1network.html#ac88a30c7132c85b7394664e9985aa8ae">Socket</a>(<span class="keyword">const</span> std::shared_ptr&lt;SocketImpl&gt;&amp; that) : impl(that) {}</div><div class="line"><a name="l00430"></a><span class="lineno">  430</span>&#160;</div><div class="line"><a name="l00431"></a><span class="lineno">  431</span>&#160;  std::shared_ptr&lt;SocketImpl&gt; impl;</div><div class="line"><a name="l00432"></a><span class="
 lineno">  432</span>&#160;};</div><div class="line"><a name="l00433"></a><span class="lineno">  433</span>&#160;</div><div class="line"><a name="l00434"></a><span class="lineno">  434</span>&#160;} <span class="comment">// namespace internal {</span></div><div class="line"><a name="l00435"></a><span class="lineno">  435</span>&#160;</div><div class="line"><a name="l00436"></a><span class="lineno">  436</span>&#160;</div><div class="line"><a name="l00437"></a><span class="lineno"><a class="line" href="namespaceprocess_1_1network.html#ac88a30c7132c85b7394664e9985aa8ae">  437</a></span>&#160;<span class="keyword">using</span> <a class="code" href="classprocess_1_1network_1_1internal_1_1Socket.html">Socket</a> = <a class="code" href="classprocess_1_1network_1_1internal_1_1Socket.html">network::internal::Socket&lt;network::Address&gt;</a>;</div><div class="line"><a name="l00438"></a><span class="lineno">  438</span>&#160;</div><div class="line"><a name="l00439"></a><span class="lineno"> 
  439</span>&#160;<span class="keyword">namespace </span>inet {</div><div class="line"><a name="l00440"></a><span class="lineno"><a class="line" href="namespaceprocess_1_1network_1_1inet.html#a891ec97cdaf1fa184350945b7233eaa4">  440</a></span>&#160;<span class="keyword">using</span> <a class="code" href="classprocess_1_1network_1_1internal_1_1Socket.html">Socket</a> = <a class="code" href="classprocess_1_1network_1_1internal_1_1Socket.html">network::internal::Socket&lt;inet::Address&gt;</a>;</div><div class="line"><a name="l00441"></a><span class="lineno">  441</span>&#160;} <span class="comment">// namespace inet {</span></div><div class="line"><a name="l00442"></a><span class="lineno">  442</span>&#160;</div><div class="line"><a name="l00443"></a><span class="lineno">  443</span>&#160;<span class="preprocessor">#ifndef __WINDOWS__</span></div><div class="line"><a name="l00444"></a><span class="lineno">  444</span>&#160;<span class="keyword">namespace </span>unix {</div><div class="
 line"><a name="l00445"></a><span class="lineno"><a class="line" href="namespaceprocess_1_1network_1_1unix.html#a8836b16e6b5735d60b9a3dbb14294e61">  445</a></span>&#160;<span class="keyword">using</span> <a class="code" href="classprocess_1_1network_1_1internal_1_1Socket.html">Socket</a> = <a class="code" href="classprocess_1_1network_1_1internal_1_1Socket.html">network::internal::Socket&lt;unix::Address&gt;</a>;</div><div class="line"><a name="l00446"></a><span class="lineno">  446</span>&#160;} <span class="comment">// namespace unix {</span></div><div class="line"><a name="l00447"></a><span class="lineno">  447</span>&#160;<span class="preprocessor">#endif // __WINDOWS__</span></div><div class="line"><a name="l00448"></a><span class="lineno">  448</span>&#160;</div><div class="line"><a name="l00449"></a><span class="lineno">  449</span>&#160;</div><div class="line"><a name="l00450"></a><span class="lineno">  450</span>&#160;<span class="keyword">namespace </span><a class="code" hr
 ef="namespaceinternal.html">internal</a> {</div><div class="line"><a name="l00451"></a><span class="lineno">  451</span>&#160;</div><div class="line"><a name="l00452"></a><span class="lineno">  452</span>&#160;<span class="keyword">template</span> &lt;&gt;</div><div class="line"><a name="l00453"></a><span class="lineno">  453</span>&#160;<a class="code" href="classTry.html">Try&lt;Socket&lt;network::Address&gt;</a>&gt; <a class="code" href="classprocess_1_1network_1_1internal_1_1Socket.html#a63ec4379f16d4f8dbf39f91b1be74a31">Socket&lt;network::Address&gt;::create</a>(</div><div class="line"><a name="l00454"></a><span class="lineno">  454</span>&#160;    <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#ab1b898c86d5d9d449a65381c2b1d74f5">SocketImpl::Kind</a> <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#aa4754b1975ff51b35734e8f5941ee319">kind</a>) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00455"><
 /a><span class="lineno">  455</span>&#160;</div><div class="line"><a name="l00456"></a><span class="lineno">  456</span>&#160;</div><div class="line"><a name="l00457"></a><span class="lineno">  457</span>&#160;<span class="keyword">template</span> &lt;&gt;</div><div class="line"><a name="l00458"></a><span class="lineno"><a class="line" href="classprocess_1_1network_1_1internal_1_1Socket.html#adfcb15ac455f4f06d7c10d812d0b1e16">  458</a></span>&#160;<span class="keyword">inline</span> <a class="code" href="classTry.html">Try&lt;Socket&lt;network::Address&gt;</a>&gt; <a class="code" href="classprocess_1_1network_1_1internal_1_1Socket.html#a63ec4379f16d4f8dbf39f91b1be74a31">Socket&lt;network::Address&gt;::create</a>(</div><div class="line"><a name="l00459"></a><span class="lineno">  459</span>&#160;    <a class="code" href="classprocess_1_1network_1_1Address.html#a0c9fa166dbf9c863a6ef68aa8343e3fc">Address::Family</a> family,</div><div class="line"><a name="l00460"></a><span class="linen
 o">  460</span>&#160;    <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#ab1b898c86d5d9d449a65381c2b1d74f5">SocketImpl::Kind</a> kind)</div><div class="line"><a name="l00461"></a><span class="lineno">  461</span>&#160;{</div><div class="line"><a name="l00462"></a><span class="lineno">  462</span>&#160;  <a class="code" href="classTry.html">Try&lt;std::shared_ptr&lt;SocketImpl&gt;</a>&gt; impl = <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a5a00f792b5055241fea9f1fc81b2c4c6">SocketImpl::create</a>(family, kind);</div><div class="line"><a name="l00463"></a><span class="lineno">  463</span>&#160;  <span class="keywordflow">if</span> (impl.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00464"></a><span class="lineno">  464</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(impl.<a class="code" href="cl
 assTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00465"></a><span class="lineno">  465</span>&#160;  }</div><div class="line"><a name="l00466"></a><span class="lineno">  466</span>&#160;  <span class="keywordflow">return</span> <a class="code" href="namespaceprocess_1_1network.html#ac88a30c7132c85b7394664e9985aa8ae">Socket</a>(impl.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>());</div><div class="line"><a name="l00467"></a><span class="lineno">  467</span>&#160;}</div><div class="line"><a name="l00468"></a><span class="lineno">  468</span>&#160;</div><div class="line"><a name="l00469"></a><span class="lineno">  469</span>&#160;</div><div class="line"><a name="l00470"></a><span class="lineno">  470</span>&#160;<span class="keyword">template</span> &lt;&gt;</div><div class="line"><a name="l00471"></a><span class="lineno"><a class="line" href="classprocess_1_1network_1_1internal_1_1Socket.html#a0fbcec9bb3b4e
 cfe298805e179c70f18">  471</a></span>&#160;<span class="keyword">inline</span> <a class="code" href="classTry.html">Try&lt;Socket&lt;inet::Address&gt;</a>&gt; <a class="code" href="classprocess_1_1network_1_1internal_1_1Socket.html#a63ec4379f16d4f8dbf39f91b1be74a31">Socket&lt;inet::Address&gt;::create</a>(</div><div class="line"><a name="l00472"></a><span class="lineno">  472</span>&#160;    <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#ab1b898c86d5d9d449a65381c2b1d74f5">SocketImpl::Kind</a> kind)</div><div class="line"><a name="l00473"></a><span class="lineno">  473</span>&#160;{</div><div class="line"><a name="l00474"></a><span class="lineno">  474</span>&#160;  <span class="comment">// TODO(benh): Replace this function which defaults to IPv4 in</span></div><div class="line"><a name="l00475"></a><span class="lineno">  475</span>&#160;  <span class="comment">// exchange for explicit IPv4 and IPv6 versions.</span></div><div class="line"><a name="l00476
 "></a><span class="lineno">  476</span>&#160;  <a class="code" href="classTry.html">Try&lt;std::shared_ptr&lt;SocketImpl&gt;</a>&gt; impl =</div><div class="line"><a name="l00477"></a><span class="lineno">  477</span>&#160;    <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a5a00f792b5055241fea9f1fc81b2c4c6">SocketImpl::create</a>(<a class="code" href="classprocess_1_1network_1_1Address.html#a0c9fa166dbf9c863a6ef68aa8343e3fca026226c3cf0400ffbf1ef901c0709aea">Address::Family::INET4</a>, kind);</div><div class="line"><a name="l00478"></a><span class="lineno">  478</span>&#160;  <span class="keywordflow">if</span> (impl.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00479"></a><span class="lineno">  479</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(impl.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">err
 or</a>());</div><div class="line"><a name="l00480"></a><span class="lineno">  480</span>&#160;  }</div><div class="line"><a name="l00481"></a><span class="lineno">  481</span>&#160;  <span class="keywordflow">return</span> <a class="code" href="namespaceprocess_1_1network.html#ac88a30c7132c85b7394664e9985aa8ae">Socket</a>(impl.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>());</div><div class="line"><a name="l00482"></a><span class="lineno">  482</span>&#160;}</div><div class="line"><a name="l00483"></a><span class="lineno">  483</span>&#160;</div><div class="line"><a name="l00484"></a><span class="lineno">  484</span>&#160;</div><div class="line"><a name="l00485"></a><span class="lineno">  485</span>&#160;<span class="keyword">template</span> &lt;&gt;</div><div class="line"><a name="l00486"></a><span class="lineno">  486</span>&#160;<a class="code" href="classTry.html">Try&lt;Socket&lt;inet::Address&gt;</a>&gt; <a class="code" href="classprocess_1_1n
 etwork_1_1internal_1_1Socket.html#a63ec4379f16d4f8dbf39f91b1be74a31">Socket&lt;inet::Address&gt;::create</a>(</div><div class="line"><a name="l00487"></a><span class="lineno">  487</span>&#160;    <a class="code" href="classprocess_1_1network_1_1Address.html#a0c9fa166dbf9c863a6ef68aa8343e3fc">Address::Family</a> family,</div><div class="line"><a name="l00488"></a><span class="lineno">  488</span>&#160;    <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#ab1b898c86d5d9d449a65381c2b1d74f5">SocketImpl::Kind</a> kind) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00489"></a><span class="lineno">  489</span>&#160;</div><div class="line"><a name="l00490"></a><span class="lineno">  490</span>&#160;</div><div class="line"><a name="l00491"></a><span class="lineno">  491</span>&#160;<span class="preprocessor">#ifndef __WINDOWS__</span></div><div class="line"><a name="l00492"></a><span class="lineno">  492</span>&#160;<span class="keyword">
 template</span> &lt;&gt;</div><div class="line"><a name="l00493"></a><span class="lineno"><a class="line" href="classprocess_1_1network_1_1internal_1_1Socket.html#ac0213557d5d95514f99283d16724694a">  493</a></span>&#160;<span class="keyword">inline</span> <a class="code" href="classTry.html">Try&lt;Socket&lt;unix::Address&gt;</a>&gt; <a class="code" href="classprocess_1_1network_1_1internal_1_1Socket.html#a63ec4379f16d4f8dbf39f91b1be74a31">Socket&lt;unix::Address&gt;::create</a>(</div><div class="line"><a name="l00494"></a><span class="lineno">  494</span>&#160;    <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#ab1b898c86d5d9d449a65381c2b1d74f5">SocketImpl::Kind</a> kind)</div><div class="line"><a name="l00495"></a><span class="lineno">  495</span>&#160;{</div><div class="line"><a name="l00496"></a><span class="lineno">  496</span>&#160;  <a class="code" href="classTry.html">Try&lt;std::shared_ptr&lt;SocketImpl&gt;</a>&gt; impl =</div><div class="line">
 <a name="l00497"></a><span class="lineno">  497</span>&#160;    <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a5a00f792b5055241fea9f1fc81b2c4c6">SocketImpl::create</a>(<a class="code" href="classprocess_1_1network_1_1Address.html#a0c9fa166dbf9c863a6ef68aa8343e3fca15395d0642f86c5992abbca5e56e2b29">Address::Family::UNIX</a>, kind);</div><div class="line"><a name="l00498"></a><span class="lineno">  498</span>&#160;  <span class="keywordflow">if</span> (impl.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00499"></a><span class="lineno">  499</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(impl.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00500"></a><span class="lineno">  500</span>&#160;  }</div><div class="line"><a name="l00501"></a><span class="lineno"> 
  501</span>&#160;  <span class="keywordflow">return</span> <a class="code" href="namespaceprocess_1_1network.html#ac88a30c7132c85b7394664e9985aa8ae">Socket</a>(impl.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>());</div><div class="line"><a name="l00502"></a><span class="lineno">  502</span>&#160;}</div><div class="line"><a name="l00503"></a><span class="lineno">  503</span>&#160;</div><div class="line"><a name="l00504"></a><span class="lineno">  504</span>&#160;</div><div class="line"><a name="l00505"></a><span class="lineno">  505</span>&#160;<span class="keyword">template</span> &lt;&gt;</div><div class="line"><a name="l00506"></a><span class="lineno">  506</span>&#160;<a class="code" href="classTry.html">Try&lt;Socket&lt;unix::Address&gt;</a>&gt; <a class="code" href="classprocess_1_1network_1_1internal_1_1Socket.html#a63ec4379f16d4f8dbf39f91b1be74a31">Socket&lt;unix::Address&gt;::create</a>(</div><div class="line"><a name="l00507"></a><span clas
 s="lineno">  507</span>&#160;    <a class="code" href="classprocess_1_1network_1_1Address.html#a0c9fa166dbf9c863a6ef68aa8343e3fc">Address::Family</a> family,</div><div class="line"><a name="l00508"></a><span class="lineno">  508</span>&#160;    <a class="code" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#ab1b898c86d5d9d449a65381c2b1d74f5">SocketImpl::Kind</a> kind) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00509"></a><span class="lineno">  509</span>&#160;<span class="preprocessor">#endif // __WINDOWS__</span></div><div class="line"><a name="l00510"></a><span class="lineno">  510</span>&#160;</div><div class="line"><a name="l00511"></a><span class="lineno">  511</span>&#160;} <span class="comment">// namespace internal {</span></div><div class="line"><a name="l00512"></a><span class="lineno">  512</span>&#160;} <span class="comment">// namespace network {</span></div><div class="line"><a name="l00513"></a><span class="lineno">  513</span
 >&#160;} <span class="comment">// namespace process {</span></div><div class="line"><a name="l00514"></a><span class="lineno">  514</span>&#160;</div><div class="line"><a name="l00515"></a><span class="lineno">  515</span>&#160;<span class="preprocessor">#endif // __PROCESS_SOCKET_HPP__</span></div><div class="ttc" id="namespaceprocess_1_1network_html_ac88a30c7132c85b7394664e9985aa8ae"><div class="ttname"><a href="namespaceprocess_1_1network.html#ac88a30c7132c85b7394664e9985aa8ae">process::network::Socket</a></div><div class="ttdeci">network::internal::Socket&lt; network::Address &gt; Socket</div><div class="ttdef"><b>Definition:</b> socket.hpp:437</div></div>
-<div class="ttc" id="namespaceprocess_1_1io_html_aca1f059ca9f0d7360631c621debeb879"><div class="ttname"><a href="namespaceprocess_1_1io.html#aca1f059ca9f0d7360631c621debeb879">process::io::READ</a></div><div class="ttdeci">const short READ</div><div class="ttdoc">A possible event while polling. </div><div class="ttdef"><b>Definition:</b> io.hpp:34</div></div>
+<div class="ttc" id="namespaceprocess_1_1io_html_aca1f059ca9f0d7360631c621debeb879"><div class="ttname"><a href="namespaceprocess_1_1io.html#aca1f059ca9f0d7360631c621debeb879">process::io::READ</a></div><div class="ttdeci">const short READ</div><div class="ttdoc">A possible event while polling. </div><div class="ttdef"><b>Definition:</b> io.hpp:35</div></div>
 <div class="ttc" id="classprocess_1_1network_1_1internal_1_1Socket_html_a90bb4cd85693572a79192d8f2a044ed2"><div class="ttname"><a href="classprocess_1_1network_1_1internal_1_1Socket.html#a90bb4cd85693572a79192d8f2a044ed2">process::network::internal::Socket::sendfile</a></div><div class="ttdeci">Future&lt; size_t &gt; sendfile(int_fd fd, off_t offset, size_t size) const </div><div class="ttdef"><b>Definition:</b> socket.hpp:376</div></div>
 <div class="ttc" id="classprocess_1_1network_1_1internal_1_1Socket_html_a83b6acc990b981a818eb2691a44fc6c4"><div class="ttname"><a href="classprocess_1_1network_1_1internal_1_1Socket.html#a83b6acc990b981a818eb2691a44fc6c4">process::network::internal::Socket::recv</a></div><div class="ttdeci">Future&lt; std::string &gt; recv(const Option&lt; ssize_t &gt; &amp;size=None())</div><div class="ttdef"><b>Definition:</b> socket.hpp:381</div></div>
 <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>
@@ -93,7 +93,7 @@
 <div class="ttc" id="classprocess_1_1network_1_1internal_1_1SocketImpl_html_a9c899f4ca922824a0092288d5d6b79b4"><div class="ttname"><a href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a9c899f4ca922824a0092288d5d6b79b4">process::network::internal::SocketImpl::SocketImpl</a></div><div class="ttdeci">SocketImpl(int_fd _s)</div><div class="ttdef"><b>Definition:</b> socket.hpp:203</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&lt; Nothing &gt; close(int fd)</div><div class="ttdef"><b>Definition:</b> close.hpp:24</div></div>
-<div class="ttc" id="namespaceprocess_1_1io_html_ab005316d71b45c5b05de0a6234c6f8fc"><div class="ttname"><a href="namespaceprocess_1_1io.html#ab005316d71b45c5b05de0a6234c6f8fc">process::io::WRITE</a></div><div class="ttdeci">const short WRITE</div><div class="ttdoc">A possible event while polling. </div><div class="ttdef"><b>Definition:</b> io.hpp:39</div></div>
+<div class="ttc" id="namespaceprocess_1_1io_html_ab005316d71b45c5b05de0a6234c6f8fc"><div class="ttname"><a href="namespaceprocess_1_1io.html#ab005316d71b45c5b05de0a6234c6f8fc">process::io::WRITE</a></div><div class="ttdeci">const short WRITE</div><div class="ttdoc">A possible event while polling. </div><div class="ttdef"><b>Definition:</b> io.hpp:40</div></div>
 <div class="ttc" id="classprocess_1_1network_1_1internal_1_1SocketImpl_html"><div class="ttname"><a href="classprocess_1_1network_1_1internal_1_1SocketImpl.html">process::network::internal::SocketImpl</a></div><div class="ttdoc">Implementation interface for a Socket. </div><div class="ttdef"><b>Definition:</b> socket.hpp:56</div></div>
 <div class="ttc" id="classprocess_1_1network_1_1Address_html_a0c9fa166dbf9c863a6ef68aa8343e3fca15395d0642f86c5992abbca5e56e2b29"><div class="ttname"><a href="classprocess_1_1network_1_1Address.html#a0c9fa166dbf9c863a6ef68aa8343e3fca15395d0642f86c5992abbca5e56e2b29">process::network::Address::Family::UNIX</a></div></div>
 <div class="ttc" id="abort_8hpp_html"><div class="ttname"><a href="abort_8hpp.html">abort.hpp</a></div></div>


[15/50] mesos-site git commit: Updated the website built from mesos SHA: 7c9c72d.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/src_2master_2master_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/src_2master_2master_8hpp_source.html b/content/api/latest/c++/src_2master_2master_8hpp_source.html
index e9d034f..19392cd 100644
--- a/content/api/latest/c++/src_2master_2master_8hpp_source.html
+++ b/content/api/latest/c++/src_2master_2master_8hpp_source.html
@@ -52,7 +52,7 @@
 <div class="title">master.hpp</div>  </div>
 </div><!--header-->
 <div class="contents">
-<a href="src_2master_2master_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>&#160;<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>&#160;<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>&#160;<span class="comment">// distributed with this work for additional information</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<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>&#160;<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>&#160;<span class="comment">// &quot;License&quot;); you may not use this file except in compliance</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<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>&#160;<span class="comment">
 // distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<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>&#160;<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>&#160;<span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;</div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="preprocessor">#ifndef __MASTER_HPP__</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="preprocessor">#define __MASTER_HPP__</span></div><div class="line"><a name
 ="l00019"></a><span class="lineno">   19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="preprocessor">#include &lt;stdint.h&gt;</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;</div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="preprocessor">#include &lt;list&gt;</span></div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="preprocessor">#include &lt;memory&gt;</span></div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="preprocessor">#include &lt;set&gt;</span></div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span></div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<span class="preprocessor">#include &lt;vector&gt;</span></div><div class=
 "line"><a name="l00027"></a><span class="lineno">   27</span>&#160;</div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="preprocessor">#include &lt;boost/circular_buffer.hpp&gt;</span></div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;</div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="include_2mesos_2mesos_8hpp.html">mesos/mesos.hpp</a>&gt;</span></div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="resources_8hpp.html">mesos/resources.hpp</a>&gt;</span></div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="type__utils_8hpp.html">mesos/type_utils.hpp</a>&gt;</span></div><div class="line"><a name="l00033"></a><span class="lineno">   33<
 /span>&#160;</div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="include_2mesos_2maintenance_2maintenance_8hpp.html">mesos/maintenance/maintenance.hpp</a>&gt;</span></div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;</div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="include_2mesos_2allocator_2allocator_8hpp.html">mesos/allocator/allocator.hpp</a>&gt;</span></div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="master_2contender_8hpp.html">mesos/master/contender.hpp</a>&gt;</span></div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="include_2mesos_2master_2detector_8hpp.html">mesos/maste
 r/detector.hpp</a>&gt;</span></div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="include_2mesos_2master_2master_8hpp.html">mesos/master/master.hpp</a>&gt;</span></div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;</div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="include_2mesos_2module_2authenticator_8hpp.html">mesos/module/authenticator.hpp</a>&gt;</span></div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;</div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="include_2mesos_2quota_2quota_8hpp.html">mesos/quota/quota.hpp</a>&gt;</span></div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;</div><div class="line"><a n
 ame="l00045"></a><span class="lineno">   45</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="scheduler_2scheduler_8hpp.html">mesos/scheduler/scheduler.hpp</a>&gt;</span></div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;</div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="3rdparty_2libprocess_2include_2process_2limiter_8hpp.html">process/limiter.hpp</a>&gt;</span></div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="3rdparty_2libprocess_2include_2process_2http_8hpp.html">process/http.hpp</a>&gt;</span></div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="owned_8hpp.html">process/owned.hpp</a>&gt;</span></div><div class="line"><a name="l00050"></a><span c
 lass="lineno">   50</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="libprocess_2include_2process_2process_8hpp.html">process/process.hpp</a>&gt;</span></div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="3rdparty_2libprocess_2include_2process_2protobuf_8hpp.html">process/protobuf.hpp</a>&gt;</span></div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="timer_8hpp.html">process/timer.hpp</a>&gt;</span></div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;</div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="counter_8hpp.html">process/metrics/counter.hpp</a>&gt;</span></div><div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;</div><di
 v class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="boundedhashmap_8hpp.html">stout/boundedhashmap.hpp</a>&gt;</span></div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="3rdparty_2stout_2include_2stout_2cache_8hpp.html">stout/cache.hpp</a>&gt;</span></div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="foreach_8hpp.html">stout/foreach.hpp</a>&gt;</span></div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="hashmap_8hpp.html">stout/hashmap.hpp</a>&gt;</span></div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="hashset_8hpp.html">stout/hash
 set.hpp</a>&gt;</span></div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="linkedhashmap_8hpp.html">stout/linkedhashmap.hpp</a>&gt;</span></div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="multihashmap_8hpp.html">stout/multihashmap.hpp</a>&gt;</span></div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="nothing_8hpp.html">stout/nothing.hpp</a>&gt;</span></div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="option_8hpp.html">stout/option.hpp</a>&gt;</span></div><div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="3rdparty_2stout_2incl
 ude_2stout_2recordio_8hpp.html">stout/recordio.hpp</a>&gt;</span></div><div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="try_8hpp.html">stout/try.hpp</a>&gt;</span></div><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="uuid_8hpp.html">stout/uuid.hpp</a>&gt;</span></div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;</div><div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="src_2common_2http_8hpp.html">common/http.hpp</a>&quot;</span></div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="protobuf__utils_8hpp.html">common/protobuf_utils.hpp</a>&quot;</span></div><div class="line"><a name="l00071"><
 /a><span class="lineno">   71</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="common_2resources__utils_8hpp.html">common/resources_utils.hpp</a>&quot;</span></div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;</div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="files_8hpp.html">files/files.hpp</a>&quot;</span></div><div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;</div><div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="devolve_8hpp.html">internal/devolve.hpp</a>&quot;</span></div><div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="evolve_8hpp.html">internal/evolve.hpp</a>&quot;</span></div><div class="line"><a name="l00077">
 </a><span class="lineno">   77</span>&#160;</div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="src_2master_2constants_8hpp.html">master/constants.hpp</a>&quot;</span></div><div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="src_2master_2flags_8hpp.html">master/flags.hpp</a>&quot;</span></div><div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="machine_8hpp.html">master/machine.hpp</a>&quot;</span></div><div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="src_2master_2metrics_8hpp.html">master/metrics.hpp</a>&quot;</span></div><div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;<span class="preprocess
 or">#include &quot;<a class="code" href="master_2validation_8hpp.html">master/validation.hpp</a>&quot;</span></div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;</div><div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="messages_8hpp.html">messages/messages.hpp</a>&quot;</span></div><div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;</div><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceprocess.html">process</a> {</div><div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;<span class="keyword">class </span>RateLimiter; <span class="comment">// Forward declaration.</span></div><div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;}</div><div class="line"><a name="l00089"></a><span class="lineno
 ">   89</span>&#160;</div><div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacemesos.html">mesos</a> {</div><div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;</div><div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;<span class="comment">// Forward declarations.</span></div><div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;<span class="keyword">class </span>Authorizer;</div><div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;<span class="keyword">class </span>ObjectApprovers;</div><div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;</div><div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceinternal.html">internal</a> {</div><div class="line"><a name="l00097"></a><s
 pan class="lineno">   97</span>&#160;</div><div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;<span class="comment">// Forward declarations.</span></div><div class="line"><a name="l00099"></a><span class="lineno"><a class="line" href="namespacemesos_1_1internal_1_1registry.html">   99</a></span>&#160;<span class="keyword">namespace </span>registry {</div><div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;<span class="keyword">class </span>Slaves;</div><div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;}</div><div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;</div><div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;<span class="keyword">class </span>Registry;</div><div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;<span class="keyword">class </span><a class="code" href="classmesos_1_1internal_1_1WhitelistWatcher.html">Whitel
 istWatcher</a>;</div><div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;</div><div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacemesos_1_1v1_1_1master.html">master</a> {</div><div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;</div><div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;<span class="keyword">class </span>Master;</div><div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;<span class="keyword">class </span>Registrar;</div><div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;<span class="keyword">class </span>SlaveObserver;</div><div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;</div><div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;<span class="keyword">struct </span>BoundedRateLimiter;</div><di
 v class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;<span class="keyword">struct </span>Framework;</div><div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;<span class="keyword">struct </span>Role;</div><div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;</div><div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;</div><div class="line"><a name="l00117"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1Slave.html">  117</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structmesos_1_1internal_1_1master_1_1Slave.html">Slave</a></div><div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;{</div><div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;<a class="code" href="structmesos_1_1internal_1_1master_1_1Slave.html">Slave</a>(<a class="code" href="classmesos_1_1internal_1_1master_1_1
 Master.html">Master</a>* <span class="keyword">const</span> _master,</div><div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;      SlaveInfo _info,</div><div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;        <span class="keyword">const</span> <a class="code" href="structprocess_1_1UPID.html">process::UPID</a>&amp; _pid,</div><div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;        <span class="keyword">const</span> MachineID&amp; _machineId,</div><div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;        <span class="keyword">const</span> std::string&amp; _version,</div><div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;        std::vector&lt;SlaveInfo::Capability&gt; _capabilites,</div><div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;        <span class="keyword">const</span> <a class="code" href="classprocess_1_1T
 ime.html">process::Time</a>&amp; _registeredTime,</div><div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;        std::vector&lt;Resource&gt; _checkpointedResources,</div><div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;        <span class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;UUID&gt;</a>&amp; _resourceVersion,</div><div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;        std::vector&lt;ExecutorInfo&gt; executorInfos = std::vector&lt;ExecutorInfo&gt;(),</div><div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;        std::vector&lt;Task&gt; tasks = std::vector&lt;Task&gt;());</div><div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;</div><div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;  ~<a class="code" href="structmesos_1_1internal_1_1master_1_1Slave.html">Slave</a>();</div><div cla
 ss="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;</div><div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;  Task* getTask(</div><div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;      <span class="keyword">const</span> FrameworkID&amp; frameworkId,</div><div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;      <span class="keyword">const</span> TaskID&amp; taskId) <span class="keyword">const</span>;</div><div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;</div><div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;  <span class="keywordtype">void</span> addTask(Task* task);</div><div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;</div><div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;  <span class="comment">// Update slave to recover the resources that were previously</span></div
 ><div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;  <span class="comment">// being used by `task`.</span></div><div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;  <span class="comment">//</span></div><div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;  <span class="comment">// TODO(bmahler): This is a hack for performance. We need to</span></div><div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;  <span class="comment">// maintain resource counters because computing task resources</span></div><div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;  <span class="comment">// functionally for all tasks is expensive, for now.</span></div><div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;  <span class="keywordtype">void</span> recoverResources(Task* task);</div><div class="line"><a name="l00146"></a><span class="lineno">  146</s
 pan>&#160;</div><div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;  <span class="keywordtype">void</span> removeTask(Task* task);</div><div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;</div><div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;  <span class="keywordtype">void</span> addOperation(<a class="code" href="namespacecgroups_1_1blkio.html#a350b1eb57318afaea7700ab7786b55ef">Operation</a>* operation);</div><div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;</div><div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;  <span class="keywordtype">void</span> recoverResources(<a class="code" href="namespacecgroups_1_1blkio.html#a350b1eb57318afaea7700ab7786b55ef">Operation</a>* operation);</div><div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;</div><div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#16
 0;  <span class="keywordtype">void</span> removeOperation(<a class="code" href="namespacecgroups_1_1blkio.html#a350b1eb57318afaea7700ab7786b55ef">Operation</a>* operation);</div><div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;</div><div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;  <a class="code" href="namespacecgroups_1_1blkio.html#a350b1eb57318afaea7700ab7786b55ef">Operation</a>* getOperation(<span class="keyword">const</span> UUID&amp; uuid) <span class="keyword">const</span>;</div><div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;</div><div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;  <span class="keywordtype">void</span> addOffer(Offer* offer);</div><div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;</div><div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;  <span class="keywordtype">void</span> removeOffer(Of
 fer* offer);</div><div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;</div><div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;  <span class="keywordtype">void</span> addInverseOffer(InverseOffer* inverseOffer);</div><div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;</div><div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;  <span class="keywordtype">void</span> removeInverseOffer(InverseOffer* inverseOffer);</div><div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;</div><div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;  <span class="keywordtype">bool</span> hasExecutor(</div><div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;      <span class="keyword">const</span> FrameworkID&amp; frameworkId,</div><div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;      <span class="k
 eyword">const</span> ExecutorID&amp; executorId) <span class="keyword">const</span>;</div><div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;</div><div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;  <span class="keywordtype">void</span> addExecutor(</div><div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;      <span class="keyword">const</span> FrameworkID&amp; frameworkId,</div><div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;      <span class="keyword">const</span> ExecutorInfo&amp; executorInfo);</div><div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;</div><div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;  <span class="keywordtype">void</span> removeExecutor(</div><div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;      <span class="keyword">const</span> FrameworkID&amp; frameworkId,</div
 ><div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;      <span class="keyword">const</span> ExecutorID&amp; executorId);</div><div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;</div><div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;  <span class="keywordtype">void</span> apply(<span class="keyword">const</span> std::vector&lt;ResourceConversion&gt;&amp; conversions);</div><div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;</div><div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;  <a class="code" href="classTry.html">Try&lt;Nothing&gt;</a> <a class="code" href="namespacerouting_1_1filter_1_1basic.html#a088d88712e011acb0673da92045b365b">update</a>(</div><div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;      <span class="keyword">const</span> SlaveInfo&amp; info,</div><div class="line"><a name="l00181"></a><span class="li
 neno">  181</span>&#160;      <span class="keyword">const</span> std::string&amp; _version,</div><div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160;      <span class="keyword">const</span> std::vector&lt;SlaveInfo::Capability&gt;&amp; _capabilites,</div><div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;      <span class="keyword">const</span> <a class="code" href="classmesos_1_1Resources.html">Resources</a>&amp; _checkpointedResources,</div><div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;      <span class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;UUID&gt;</a>&amp; resourceVersion);</div><div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;</div><div class="line"><a name="l00186"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1Slave.html#a59f6d83e771ca1dc9bf7f3db88d9339d">  186</a></span>&#160;  <a class="code
 " href="classmesos_1_1internal_1_1master_1_1Master.html">Master</a>* <span class="keyword">const</span> <a class="code" href="structmesos_1_1internal_1_1master_1_1Slave.html#a59f6d83e771ca1dc9bf7f3db88d9339d">master</a>;</div><div class="line"><a name="l00187"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1Slave.html#a977de92e6e1fb9fa145aec95806be71f">  187</a></span>&#160;  <span class="keyword">const</span> SlaveID <a class="code" href="structmesos_1_1internal_1_1master_1_1Slave.html#a977de92e6e1fb9fa145aec95806be71f">id</a>;</div><div class="line"><a name="l00188"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1Slave.html#af4ee8827d405d9dcb03107dd04fa22ca">  188</a></span>&#160;  SlaveInfo <a class="code" href="structmesos_1_1internal_1_1master_1_1Slave.html#af4ee8827d405d9dcb03107dd04fa22ca">info</a>;</div><div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160;</div><div class="line">
 <a name="l00190"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1Slave.html#adb162982d3dd921c4a9c3114c88daf5c">  190</a></span>&#160;  <span class="keyword">const</span> MachineID <a class="code" href="structmesos_1_1internal_1_1master_1_1Slave.html#adb162982d3dd921c4a9c3114c88daf5c">machineId</a>;</div><div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160;</div><div class="line"><a name="l00192"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1Slave.html#a587fe54aa032cf8b260e3722e0f3c8fd">  192</a></span>&#160;  <a class="code" href="structprocess_1_1UPID.html">process::UPID</a> <a class="code" href="structmesos_1_1internal_1_1master_1_1Slave.html#a587fe54aa032cf8b260e3722e0f3c8fd">pid</a>;</div><div class="line"><a name="l00193"></a><span class="lineno">  193</span>&#160;</div><div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#160;  <span class="comment">// TODO(bm
 ahler): Use stout&#39;s Version when it can parse labels, etc.</span></div><div class="line"><a name="l00195"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1Slave.html#ac4cd16759066addb866615eeaf5e6097">  195</a></span>&#160;  std::string <a class="code" href="structmesos_1_1internal_1_1master_1_1Slave.html#ac4cd16759066addb866615eeaf5e6097">version</a>;</div><div class="line"><a name="l00196"></a><span class="lineno">  196</span>&#160;</div><div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;  <span class="comment">// Agent capabilities.</span></div><div class="line"><a name="l00198"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1Slave.html#ad684be997cbb5c701e3fe54b36c2b207">  198</a></span>&#160;  <a class="code" href="structmesos_1_1internal_1_1protobuf_1_1slave_1_1Capabilities.html">protobuf::slave::Capabilities</a> <a class="code" href="structmesos_1_1internal_1_1master_1_1Slave.
 html#ad684be997cbb5c701e3fe54b36c2b207">capabilities</a>;</div><div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160;</div><div class="line"><a name="l00200"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1Slave.html#a8a22f7902325bc17e32068ec2e39867b">  200</a></span>&#160;  <a class="code" href="classprocess_1_1Time.html">process::Time</a> <a class="code" href="structmesos_1_1internal_1_1master_1_1Slave.html#a8a22f7902325bc17e32068ec2e39867b">registeredTime</a>;</div><div class="line"><a name="l00201"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1Slave.html#a31770631022ef2687e10fc826709f2c8">  201</a></span>&#160;  <a class="code" href="classOption.html">Option&lt;process::Time&gt;</a> <a class="code" href="structmesos_1_1internal_1_1master_1_1Slave.html#a31770631022ef2687e10fc826709f2c8">reregisteredTime</a>;</div><div class="line"><a name="l00202"></a><span class="lineno">  202</span
 >&#160;</div><div class="line"><a name="l00203"></a><span class="lineno">  203</span>&#160;  <span class="comment">// Slave becomes disconnected when the socket closes.</span></div><div class="line"><a name="l00204"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1Slave.html#a4fb10e5dfb983e03a5bfd4f9eb90c386">  204</a></span>&#160;  <span class="keywordtype">bool</span> <a class="code" href="structmesos_1_1internal_1_1master_1_1Slave.html#a4fb10e5dfb983e03a5bfd4f9eb90c386">connected</a>;</div><div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160;</div><div class="line"><a name="l00206"></a><span class="lineno">  206</span>&#160;  <span class="comment">// Slave becomes deactivated when it gets disconnected. In the</span></div><div class="line"><a name="l00207"></a><span class="lineno">  207</span>&#160;  <span class="comment">// future this might also happen via HTTP endpoint.</span></div><div class="line"><a name="l00208"></
 a><span class="lineno">  208</span>&#160;  <span class="comment">// No offers will be made for a deactivated slave.</span></div><div class="line"><a name="l00209"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1Slave.html#aa112c6ba4de9bd7ab91365adf92d5c77">  209</a></span>&#160;  <span class="keywordtype">bool</span> <a class="code" href="structmesos_1_1internal_1_1master_1_1Slave.html#aa112c6ba4de9bd7ab91365adf92d5c77">active</a>;</div><div class="line"><a name="l00210"></a><span class="lineno">  210</span>&#160;</div><div class="line"><a name="l00211"></a><span class="lineno">  211</span>&#160;  <span class="comment">// Timer for marking slaves unreachable that become disconnected and</span></div><div class="line"><a name="l00212"></a><span class="lineno">  212</span>&#160;  <span class="comment">// don&#39;t reregister. This timeout is larger than the slave</span></div><div class="line"><a name="l00213"></a><span class="lineno">  213</span>&#16
 0;  <span class="comment">// observer&#39;s timeout, so typically the slave observer will be the</span></div><div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160;  <span class="comment">// one to mark such slaves unreachable; this timer is a backup for</span></div><div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160;  <span class="comment">// when a slave responds to pings but does not reregister (e.g.,</span></div><div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#160;  <span class="comment">// because agent recovery has hung).</span></div><div class="line"><a name="l00217"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1Slave.html#a15e591c436773cdfb2ee3369f0541659">  217</a></span>&#160;  <a class="code" href="classOption.html">Option&lt;process::Timer&gt;</a> <a class="code" href="structmesos_1_1internal_1_1master_1_1Slave.html#a15e591c436773cdfb2ee3369f0541659">reregistra
 tionTimer</a>;</div><div class="line"><a name="l00218"></a><span class="lineno">  218</span>&#160;</div><div class="line"><a name="l00219"></a><span class="lineno">  219</span>&#160;  <span class="comment">// Executors running on this slave.</span></div><div class="line"><a name="l00220"></a><span class="lineno">  220</span>&#160;  <span class="comment">//</span></div><div class="line"><a name="l00221"></a><span class="lineno">  221</span>&#160;  <span class="comment">// TODO(bmahler): Make this private to enforce that `addExecutor()`</span></div><div class="line"><a name="l00222"></a><span class="lineno">  222</span>&#160;  <span class="comment">// and `removeExecutor()` are used, and provide a const view into</span></div><div class="line"><a name="l00223"></a><span class="lineno">  223</span>&#160;  <span class="comment">// the executors.</span></div><div class="line"><a name="l00224"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1Slave.html#a7
 3bf7efab01d3620fb8cb615c338da6c">  224</a></span>&#160;  <a class="code" href="classhashmap.html">hashmap&lt;FrameworkID, hashmap&lt;ExecutorID, ExecutorInfo&gt;</a>&gt; <a class="code" href="structmesos_1_1internal_1_1master_1_1Slave.html#a73bf7efab01d3620fb8cb615c338da6c">executors</a>;</div><div class="line"><a name="l00225"></a><span class="lineno">  225</span>&#160;</div><div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;  <span class="comment">// Tasks that have not yet been launched because they are currently</span></div><div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160;  <span class="comment">// being authorized. This is similar to Framework&#39;s pendingTasks but we</span></div><div class="line"><a name="l00228"></a><span class="lineno">  228</span>&#160;  <span class="comment">// track pendingTasks per agent separately to determine if any offer</span></div><div class="line"><a name="l00229"></a><span class="lineno">  2
 29</span>&#160;  <span class="comment">// operation for this agent would change resources requested by these tasks.</span></div><div class="line"><a name="l00230"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1Slave.html#a33cbcce2b9fcf343f15cb4f64672868d">  230</a></span>&#160;  <a class="code" href="classhashmap.html">hashmap&lt;FrameworkID, hashmap&lt;TaskID, TaskInfo&gt;</a>&gt; <a class="code" href="structmesos_1_1internal_1_1master_1_1Slave.html#a33cbcce2b9fcf343f15cb4f64672868d">pendingTasks</a>;</div><div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160;</div><div class="line"><a name="l00232"></a><span class="lineno">  232</span>&#160;  <span class="comment">// Tasks present on this slave.</span></div><div class="line"><a name="l00233"></a><span class="lineno">  233</span>&#160;  <span class="comment">//</span></div><div class="line"><a name="l00234"></a><span class="lineno">  234</span>&#160;  <span class="comment
 ">// TODO(bmahler): Make this private to enforce that `addTask()` and</span></div><div class="line"><a name="l00235"></a><span class="lineno">  235</span>&#160;  <span class="comment">// `removeTask()` are used, and provide a const view into the tasks.</span></div><div class="line"><a name="l00236"></a><span class="lineno">  236</span>&#160;  <span class="comment">//</span></div><div class="line"><a name="l00237"></a><span class="lineno">  237</span>&#160;  <span class="comment">// TODO(bmahler): The task pointer ownership complexity arises from the fact</span></div><div class="line"><a name="l00238"></a><span class="lineno">  238</span>&#160;  <span class="comment">// that we own the pointer here, but it&#39;s shared with the Framework struct.</span></div><div class="line"><a name="l00239"></a><span class="lineno">  239</span>&#160;  <span class="comment">// We should find a way to eliminate this.</span></div><div class="line"><a name="l00240"></a><span class="lineno"><a class="lin
 e" href="structmesos_1_1internal_1_1master_1_1Slave.html#af31bd54cf2fd44fd1d95d1c898d6d2c8">  240</a></span>&#160;  <a class="code" href="classhashmap.html">hashmap&lt;FrameworkID, hashmap&lt;TaskID, Task*&gt;</a>&gt; <a class="code" href="structmesos_1_1internal_1_1master_1_1Slave.html#af31bd54cf2fd44fd1d95d1c898d6d2c8">tasks</a>;</div><div class="line"><a name="l00241"></a><span class="lineno">  241</span>&#160;</div><div class="line"><a name="l00242"></a><span class="lineno">  242</span>&#160;  <span class="comment">// Tasks that were asked to kill by frameworks.</span></div><div class="line"><a name="l00243"></a><span class="lineno">  243</span>&#160;  <span class="comment">// This is used for reconciliation when the slave reregisters.</span></div><div class="line"><a name="l00244"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1Slave.html#a471feb09e6e40006c48fa1941ae4961a">  244</a></span>&#160;  <a class="code" href="classmultihashmap.html">
 multihashmap&lt;FrameworkID, TaskID&gt;</a> <a class="code" href="structmesos_1_1internal_1_1master_1_1Slave.html#a471feb09e6e40006c48fa1941ae4961a">killedTasks</a>;</div><div class="line"><a name="l00245"></a><span class="lineno">  245</span>&#160;</div><div class="line"><a name="l00246"></a><span class="lineno">  246</span>&#160;  <span class="comment">// Pending operations or terminal operations that have</span></div><div class="line"><a name="l00247"></a><span class="lineno">  247</span>&#160;  <span class="comment">// unacknowledged status updates on this agent.</span></div><div class="line"><a name="l00248"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1Slave.html#a4810733e4b2c0ff6c35ad5ade573ac75">  248</a></span>&#160;  <a class="code" href="classhashmap.html">hashmap&lt;UUID, Operation*&gt;</a> <a class="code" href="structmesos_1_1internal_1_1master_1_1Slave.html#a4810733e4b2c0ff6c35ad5ade573ac75">operations</a>;</div><div class="line"><
 a name="l00249"></a><span class="lineno">  249</span>&#160;</div><div class="line"><a name="l00250"></a><span class="lineno">  250</span>&#160;  <span class="comment">// Active offers on this slave.</span></div><div class="line"><a name="l00251"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1Slave.html#a9dbf820e6c564c4333f97eaff7136cb1">  251</a></span>&#160;  <a class="code" href="classhashset.html">hashset&lt;Offer*&gt;</a> <a class="code" href="structmesos_1_1internal_1_1master_1_1Slave.html#a9dbf820e6c564c4333f97eaff7136cb1">offers</a>;</div><div class="line"><a name="l00252"></a><span class="lineno">  252</span>&#160;</div><div class="line"><a name="l00253"></a><span class="lineno">  253</span>&#160;  <span class="comment">// Active inverse offers on this slave.</span></div><div class="line"><a name="l00254"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1Slave.html#a2232ba794de09c7834fd882888c8e8c4">  254
 </a></span>&#160;  <a class="code" href="classhashset.html">hashset&lt;InverseOffer*&gt;</a> <a class="code" href="structmesos_1_1internal_1_1master_1_1Slave.html#a2232ba794de09c7834fd882888c8e8c4">inverseOffers</a>;</div><div class="line"><a name="l00255"></a><span class="lineno">  255</span>&#160;</div><div class="line"><a name="l00256"></a><span class="lineno">  256</span>&#160;  <span class="comment">// Resources for active task / executors / operations.</span></div><div class="line"><a name="l00257"></a><span class="lineno">  257</span>&#160;  <span class="comment">// Note that we maintain multiple copies of each shared resource in</span></div><div class="line"><a name="l00258"></a><span class="lineno">  258</span>&#160;  <span class="comment">// `usedResources` as they are used by multiple tasks.</span></div><div class="line"><a name="l00259"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1Slave.html#abb421e81e433867b8c5f9382c92a0812">  259<
 /a></span>&#160;  <a class="code" href="classhashmap.html">hashmap&lt;FrameworkID, Resources&gt;</a> <a class="code" href="structmesos_1_1internal_1_1master_1_1Slave.html#abb421e81e433867b8c5f9382c92a0812">usedResources</a>;</div><div class="line"><a name="l00260"></a><span class="lineno">  260</span>&#160;</div><div class="line"><a name="l00261"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1Slave.html#a8424019e6048a4f479cd0005873c8314">  261</a></span>&#160;  <a class="code" href="classmesos_1_1Resources.html">Resources</a> <a class="code" href="structmesos_1_1internal_1_1master_1_1Slave.html#a8424019e6048a4f479cd0005873c8314">offeredResources</a>; <span class="comment">// Offers.</span></div><div class="line"><a name="l00262"></a><span class="lineno">  262</span>&#160;</div><div class="line"><a name="l00263"></a><span class="lineno">  263</span>&#160;  <span class="comment">// Resources that should be checkpointed by the slave (e.g.,</span></d
 iv><div class="line"><a name="l00264"></a><span class="lineno">  264</span>&#160;  <span class="comment">// persistent volumes, dynamic reservations, etc). These are either</span></div><div class="line"><a name="l00265"></a><span class="lineno">  265</span>&#160;  <span class="comment">// in use by a task/executor, or are available for use and will be</span></div><div class="line"><a name="l00266"></a><span class="lineno">  266</span>&#160;  <span class="comment">// re-offered to the framework.</span></div><div class="line"><a name="l00267"></a><span class="lineno">  267</span>&#160;  <span class="comment">// TODO(jieyu): `checkpointedResources` is only for agent default</span></div><div class="line"><a name="l00268"></a><span class="lineno">  268</span>&#160;  <span class="comment">// resources. Resources from resource providers are not included in</span></div><div class="line"><a name="l00269"></a><span class="lineno">  269</span>&#160;  <span class="comment">// this field. Consid
 er removing this field.</span></div><div class="line"><a name="l00270"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1Slave.html#a5324f39f9aebebd7a65baa4edf1789f9">  270</a></span>&#160;  <a class="code" href="classmesos_1_1Resources.html">Resources</a> <a class="code" href="structmesos_1_1internal_1_1master_1_1Slave.html#a5324f39f9aebebd7a65baa4edf1789f9">checkpointedResources</a>;</div><div class="line"><a name="l00271"></a><span class="lineno">  271</span>&#160;</div><div class="line"><a name="l00272"></a><span class="lineno">  272</span>&#160;  <span class="comment">// The current total resources of the slave. Note that this is</span></div><div class="line"><a name="l00273"></a><span class="lineno">  273</span>&#160;  <span class="comment">// different from &#39;info.resources()&#39; because this also considers</span></div><div class="line"><a name="l00274"></a><span class="lineno">  274</span>&#160;  <span class="comment">// operations (e.g.
 , CREATE, RESERVE) that have been applied and</span></div><div class="line"><a name="l00275"></a><span class="lineno">  275</span>&#160;  <span class="comment">// includes revocable resources and resources from resource</span></div><div class="line"><a name="l00276"></a><span class="lineno">  276</span>&#160;  <span class="comment">// providers as well.</span></div><div class="line"><a name="l00277"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1Slave.html#ae797309d98eea44477d8b5611972f907">  277</a></span>&#160;  <a class="code" href="classmesos_1_1Resources.html">Resources</a> <a class="code" href="structmesos_1_1internal_1_1master_1_1Slave.html#ae797309d98eea44477d8b5611972f907">totalResources</a>;</div><div class="line"><a name="l00278"></a><span class="lineno">  278</span>&#160;</div><div class="line"><a name="l00279"></a><span class="lineno">  279</span>&#160;  <span class="comment">// Used to establish the relationship between the operatio
 n and the</span></div><div class="line"><a name="l00280"></a><span class="lineno">  280</span>&#160;  <span class="comment">// resources that the operation is operating on. Each resource</span></div><div class="line"><a name="l00281"></a><span class="lineno">  281</span>&#160;  <span class="comment">// provider will keep a resource version UUID, and change it when it</span></div><div class="line"><a name="l00282"></a><span class="lineno">  282</span>&#160;  <span class="comment">// believes that the resources from this resource provider are out</span></div><div class="line"><a name="l00283"></a><span class="lineno">  283</span>&#160;  <span class="comment">// of sync from the master&#39;s view.  The master will keep track of</span></div><div class="line"><a name="l00284"></a><span class="lineno">  284</span>&#160;  <span class="comment">// the last known resource version UUID for each resource provider,</span></div><div class="line"><a name="l00285"></a><span class="lineno">  285</s
 pan>&#160;  <span class="comment">// and attach the resource version UUID in each operation it sends</span></div><div class="line"><a name="l00286"></a><span class="lineno">  286</span>&#160;  <span class="comment">// out. The resource provider should reject operations that have a</span></div><div class="line"><a name="l00287"></a><span class="lineno">  287</span>&#160;  <span class="comment">// different resource version UUID than that it maintains, because</span></div><div class="line"><a name="l00288"></a><span class="lineno">  288</span>&#160;  <span class="comment">// this means the operation is operating on resources that might</span></div><div class="line"><a name="l00289"></a><span class="lineno">  289</span>&#160;  <span class="comment">// have already been invalidated.</span></div><div class="line"><a name="l00290"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1Slave.html#ab0449df2888be22f3d5c0288367ca31f">  290</a></span>&#160;  <a cla
 ss="code" href="classOption.html">Option&lt;UUID&gt;</a> <a class="code" href="structmesos_1_1internal_1_1master_1_1Slave.html#ab0449df2888be22f3d5c0288367ca31f">resourceVersion</a>;</div><div class="line"><a name="l00291"></a><span class="lineno">  291</span>&#160;</div><div class="line"><a name="l00292"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1Slave.html#ace1f060347d268874173bac4c6e0a035">  292</a></span>&#160;  SlaveObserver* <a class="code" href="structmesos_1_1internal_1_1master_1_1Slave.html#ace1f060347d268874173bac4c6e0a035">observer</a>;</div><div class="line"><a name="l00293"></a><span class="lineno">  293</span>&#160;</div><div class="line"><a name="l00294"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1Slave_1_1ResourceProvider.html">  294</a></span>&#160;  <span class="keyword">struct </span><a class="code" href="structmesos_1_1internal_1_1master_1_1Slave_1_1ResourceProvider.html">ResourcePro
 vider</a> {</div><div class="line"><a name="l00295"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1Slave_1_1ResourceProvider.html#a2f79355937f8c3b4b17bafcf4d46cf1d">  295</a></span>&#160;    ResourceProviderInfo <a class="code" href="structmesos_1_1internal_1_1master_1_1Slave_1_1ResourceProvider.html#a2f79355937f8c3b4b17bafcf4d46cf1d">info</a>;</div><div class="line"><a name="l00296"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1Slave_1_1ResourceProvider.html#ada581846ff5ab022c593e7e6260905af">  296</a></span>&#160;    <a class="code" href="classmesos_1_1Resources.html">Resources</a> <a class="code" href="structmesos_1_1internal_1_1master_1_1Slave_1_1ResourceProvider.html#ada581846ff5ab022c593e7e6260905af">totalResources</a>;</div><div class="line"><a name="l00297"></a><span class="lineno">  297</span>&#160;</div><div class="line"><a name="l00298"></a><span class="lineno">  298</span>&#160;    <span class="co
 mment">// Used to establish the relationship between the operation and the</span></div><div class="line"><a name="l00299"></a><span class="lineno">  299</span>&#160;    <span class="comment">// resources that the operation is operating on. Each resource</span></div><div class="line"><a name="l00300"></a><span class="lineno">  300</span>&#160;    <span class="comment">// provider will keep a resource version UUID, and change it when it</span></div><div class="line"><a name="l00301"></a><span class="lineno">  301</span>&#160;    <span class="comment">// believes that the resources from this resource provider are out</span></div><div class="line"><a name="l00302"></a><span class="lineno">  302</span>&#160;    <span class="comment">// of sync from the master&#39;s view.  The master will keep track of</span></div><div class="line"><a name="l00303"></a><span class="lineno">  303</span>&#160;    <span class="comment">// the last known resource version UUID for each resource provider,</span
 ></div><div class="line"><a name="l00304"></a><span class="lineno">  304</span>&#160;    <span class="comment">// and attach the resource version UUID in each operation it sends</span></div><div class="line"><a name="l00305"></a><span class="lineno">  305</span>&#160;    <span class="comment">// out. The resource provider should reject operations that have a</span></div><div class="line"><a name="l00306"></a><span class="lineno">  306</span>&#160;    <span class="comment">// different resource version UUID than that it maintains, because</span></div><div class="line"><a name="l00307"></a><span class="lineno">  307</span>&#160;    <span class="comment">// this means the operation is operating on resources that might</span></div><div class="line"><a name="l00308"></a><span class="lineno">  308</span>&#160;    <span class="comment">// have already been invalidated.</span></div><div class="line"><a name="l00309"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1m
 aster_1_1Slave_1_1ResourceProvider.html#aa8f983cfaa834cca6e4f9b372815396b">  309</a></span>&#160;    UUID <a class="code" href="structmesos_1_1internal_1_1master_1_1Slave_1_1ResourceProvider.html#aa8f983cfaa834cca6e4f9b372815396b">resourceVersion</a>;</div><div class="line"><a name="l00310"></a><span class="lineno">  310</span>&#160;</div><div class="line"><a name="l00311"></a><span class="lineno">  311</span>&#160;    <span class="comment">// Pending operations or terminal operations that have</span></div><div class="line"><a name="l00312"></a><span class="lineno">  312</span>&#160;    <span class="comment">// unacknowledged status updates.</span></div><div class="line"><a name="l00313"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1Slave_1_1ResourceProvider.html#aadb3d3717bababe38b8dcb2eb3b3cbf2">  313</a></span>&#160;    <a class="code" href="classhashmap.html">hashmap&lt;UUID, Operation*&gt;</a> <a class="code" href="structmesos_1_1internal_1
 _1master_1_1Slave_1_1ResourceProvider.html#aadb3d3717bababe38b8dcb2eb3b3cbf2">operations</a>;</div><div class="line"><a name="l00314"></a><span class="lineno">  314</span>&#160;  };</div><div class="line"><a name="l00315"></a><span class="lineno">  315</span>&#160;</div><div class="line"><a name="l00316"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1Slave.html#ac69e834c9f86c1628859459e4e5255b5">  316</a></span>&#160;  <a class="code" href="classhashmap.html">hashmap&lt;ResourceProviderID, ResourceProvider&gt;</a> <a class="code" href="structmesos_1_1internal_1_1master_1_1Slave.html#ac69e834c9f86c1628859459e4e5255b5">resourceProviders</a>;</div><div class="line"><a name="l00317"></a><span class="lineno">  317</span>&#160;</div><div class="line"><a name="l00318"></a><span class="lineno">  318</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00319"></a><span class="lineno">  319</span>&#160;  <a class="code" href="
 structmesos_1_1internal_1_1master_1_1Slave.html">Slave</a>(<span class="keyword">const</span> <a class="code" href="structmesos_1_1internal_1_1master_1_1Slave.html">Slave</a>&amp;);              <span class="comment">// No copying.</span></div><div class="line"><a name="l00320"></a><span class="lineno">  320</span>&#160;  <a class="code" href="structmesos_1_1internal_1_1master_1_1Slave.html">Slave</a>&amp; operator=(<span class="keyword">const</span> <a class="code" href="structmesos_1_1internal_1_1master_1_1Slave.html">Slave</a>&amp;); <span class="comment">// No assigning.</span></div><div class="line"><a name="l00321"></a><span class="lineno">  321</span>&#160;};</div><div class="line"><a name="l00322"></a><span class="lineno">  322</span>&#160;</div><div class="line"><a name="l00323"></a><span class="lineno">  323</span>&#160;</div><div class="line"><a name="l00324"></a><span class="lineno"><a class="line" href="namespacemesos_1_1internal_1_1master.html#a222c724f5e238d743bb338c7
 1016048d">  324</a></span>&#160;<span class="keyword">inline</span> std::ostream&amp; <a class="code" href="namespaceprocess.html#a1f0b8b2ea7d75c3b9d8d4781689f731b">operator&lt;&lt;</a>(std::ostream&amp; stream, <span class="keyword">const</span> <a class="code" href="structmesos_1_1internal_1_1master_1_1Slave.html">Slave</a>&amp; slave)</div><div class="line"><a name="l00325"></a><span class="lineno">  325</span>&#160;{</div><div class="line"><a name="l00326"></a><span class="lineno">  326</span>&#160;  <span class="keywordflow">return</span> stream &lt;&lt; slave.<a class="code" href="structmesos_1_1internal_1_1master_1_1Slave.html#a977de92e6e1fb9fa145aec95806be71f">id</a> &lt;&lt; <span class="stringliteral">&quot; at &quot;</span> &lt;&lt; slave.<a class="code" href="structmesos_1_1internal_1_1master_1_1Slave.html#a587fe54aa032cf8b260e3722e0f3c8fd">pid</a></div><div class="line"><a name="l00327"></a><span class="lineno">  327</span>&#160;                &lt;&lt; <span class="str
 ingliteral">&quot; (&quot;</span> &lt;&lt; slave.<a class="code" href="structmesos_1_1internal_1_1master_1_1Slave.html#af4ee8827d405d9dcb03107dd04fa22ca">info</a>.hostname() &lt;&lt; <span class="stringliteral">&quot;)&quot;</span>;</div><div class="line"><a name="l00328"></a><span class="lineno">  328</span>&#160;}</div><div class="line"><a name="l00329"></a><span class="lineno">  329</span>&#160;</div><div class="line"><a name="l00330"></a><span class="lineno">  330</span>&#160;</div><div class="line"><a name="l00331"></a><span class="lineno">  331</span>&#160;<span class="comment">// Represents the streaming HTTP connection to a framework or a client</span></div><div class="line"><a name="l00332"></a><span class="lineno">  332</span>&#160;<span class="comment">// subscribed to the &#39;/api/vX&#39; endpoint.</span></div><div class="line"><a name="l00333"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1HttpConnection.html">  333</a></span>&#160;
 <span class="keyword">struct </span><a class="code" href="structmesos_1_1internal_1_1master_1_1HttpConnection.html">HttpConnection</a></div><div class="line"><a name="l00334"></a><span class="lineno">  334</span>&#160;{</div><div class="line"><a name="l00335"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1HttpConnection.html#a4c4c7be068622f9d8c557a58eb065cc6">  335</a></span>&#160;  <a class="code" href="structmesos_1_1internal_1_1master_1_1HttpConnection.html#a4c4c7be068622f9d8c557a58eb065cc6">HttpConnection</a>(<span class="keyword">const</span> <a class="code" href="classprocess_1_1http_1_1Pipe_1_1Writer.html">process::http::Pipe::Writer</a>&amp; _writer,</div><div class="line"><a name="l00336"></a><span class="lineno">  336</span>&#160;                 <a class="code" href="namespacemesos.html#a13035ce0cc66cca4a467787b4716039e">ContentType</a> _contentType,</div><div class="line"><a name="l00337"></a><span class="lineno">  337</span>&#160;   
               <a class="code" href="structid_1_1UUID.html">id::UUID</a> _streamId)</div><div class="line"><a name="l00338"></a><span class="lineno">  338</span>&#160;    : writer(_writer),</div><div class="line"><a name="l00339"></a><span class="lineno">  339</span>&#160;      contentType(_contentType),</div><div class="line"><a name="l00340"></a><span class="lineno">  340</span>&#160;      streamId(_streamId) {}</div><div class="line"><a name="l00341"></a><span class="lineno">  341</span>&#160;</div><div class="line"><a name="l00342"></a><span class="lineno">  342</span>&#160;  <span class="comment">// We need to evolve the internal old style message/unversioned event into a</span></div><div class="line"><a name="l00343"></a><span class="lineno">  343</span>&#160;  <span class="comment">// versioned event e.g., `v1::scheduler::Event` or `v1::master::Event`.</span></div><div class="line"><a name="l00344"></a><span class="lineno">  344</span>&#160;  <span class="keyword">template</sp
 an> &lt;<span class="keyword">typename</span> Message, <span class="keyword">typename</span> Event = v1::scheduler::Event&gt;</div><div class="line"><a name="l00345"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1HttpConnection.html#a30bba2e03dffe8a8a369668c15ff6433">  345</a></span>&#160;  <span class="keywordtype">bool</span> <a class="code" href="structmesos_1_1internal_1_1master_1_1HttpConnection.html#a30bba2e03dffe8a8a369668c15ff6433">send</a>(<span class="keyword">const</span> Message&amp; message)</div><div class="line"><a name="l00346"></a><span class="lineno">  346</span>&#160;  {</div><div class="line"><a name="l00347"></a><span class="lineno">  347</span>&#160;    <a class="code" href="classrecordio_1_1Encoder.html">::recordio::Encoder&lt;Event&gt;</a> encoder (<a class="code" href="namespaceprocess_1_1network.html#ad067110a4b38cc83785a43f49bf6c8e2">lambda::bind</a>(</div><div class="line"><a name="l00348"></a><span class="lineno">  34
 8</span>&#160;        <a class="code" href="namespacemesos_1_1internal.html#a9c1f91de8a8a389b357b81f7b51b0554">serialize</a>, contentType, lambda::_1));</div><div class="line"><a name="l00349"></a><span class="lineno">  349</span>&#160;</div><div class="line"><a name="l00350"></a><span class="lineno">  350</span>&#160;    <span class="keywordflow">return</span> writer.write(encoder.<a class="code" href="classrecordio_1_1Encoder.html#a1ab4319875f0c4a59fe6c2283777e78c">encode</a>(<a class="code" href="namespacemesos_1_1internal.html#a845d4d5a46b931d03f340c8afc58b60a">evolve</a>(message)));</div><div class="line"><a name="l00351"></a><span class="lineno">  351</span>&#160;  }</div><div class="line"><a name="l00352"></a><span class="lineno">  352</span>&#160;</div><div class="line"><a name="l00353"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1HttpConnection.html#a2347c2f4d88f6f0043690aba6dfac27f">  353</a></span>&#160;  <span class="keywordtype">bo
 ol</span> <a class="code" href="structmesos_1_1internal_1_1master_1_1HttpConnection.html#a2347c2f4d88f6f0043690aba6dfac27f">close</a>()</div><div class="line"><a name="l00354"></a><span class="lineno">  354</span>&#160;  {</div><div class="line"><a name="l00355"></a><span class="lineno">  355</span>&#160;    <span class="keywordflow">return</span> writer.close();</div><div class="line"><a name="l00356"></a><span class="lineno">  356</span>&#160;  }</div><div class="line"><a name="l00357"></a><span class="lineno">  357</span>&#160;</div><div class="line"><a name="l00358"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1HttpConnection.html#aabda4b0588e263e20f98c220f1f7da92">  358</a></span>&#160;  <a class="code" href="classprocess_1_1Future.html">process::Future&lt;Nothing&gt;</a> <a class="code" href="structmesos_1_1internal_1_1master_1_1HttpConnection.html#aabda4b0588e263e20f98c220f1f7da92">closed</a>()<span class="keyword"> const</span></div><div
  class="line"><a name="l00359"></a><span class="lineno">  359</span>&#160;<span class="keyword">  </span>{</div><div class="line"><a name="l00360"></a><span class="lineno">  360</span>&#160;    <span class="keywordflow">return</span> writer.readerClosed();</div><div class="line"><a name="l00361"></a><span class="lineno">  361</span>&#160;  }</div><div class="line"><a name="l00362"></a><span class="lineno">  362</span>&#160;</div><div class="line"><a name="l00363"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1HttpConnection.html#aeb26fc327b1d73f95d9d874eb4226d5c">  363</a></span>&#160;  <a class="code" href="classprocess_1_1http_1_1Pipe_1_1Writer.html">process::http::Pipe::Writer</a> <a class="code" href="structmesos_1_1internal_1_1master_1_1HttpConnection.html#aeb26fc327b1d73f95d9d874eb4226d5c">writer</a>;</div><div class="line"><a name="l00364"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1HttpConnection.ht
 ml#a96b11a33b4022d7a60fa6d672de552ea">  364</a></span>&#160;  <a class="code" href="namespacemesos.html#a13035ce0cc66cca4a467787b4716039e">ContentType</a> <a class="code" href="structmesos_1_1internal_1_1master_1_1HttpConnection.html#a96b11a33b4022d7a60fa6d672de552ea">contentType</a>;</div><div class="line"><a name="l00365"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1HttpConnection.html#ad6de2b778601691522fab0b3eed260e7">  365</a></span>&#160;  <a class="code" href="structid_1_1UUID.html">id::UUID</a> <a class="code" href="structmesos_1_1internal_1_1master_1_1HttpConnection.html#ad6de2b778601691522fab0b3eed260e7">streamId</a>;</div><div class="line"><a name="l00366"></a><span class="lineno">  366</span>&#160;};</div><div class="line"><a name="l00367"></a><span class="lineno">  367</span>&#160;</div><div class="line"><a name="l00368"></a><span class="lineno">  368</span>&#160;</div><div class="line"><a name="l00369"></a><span class="lineno">  3
 69</span>&#160;<span class="comment">// This process periodically sends heartbeats to a given HTTP connection.</span></div><div class="line"><a name="l00370"></a><span class="lineno">  370</span>&#160;<span class="comment">// The `Message` template parameter is the type of the heartbeat event passed</span></div><div class="line"><a name="l00371"></a><span class="lineno">  371</span>&#160;<span class="comment">// into the heartbeater during construction, while the `Event` template</span></div><div class="line"><a name="l00372"></a><span class="lineno">  372</span>&#160;<span class="comment">// parameter is the versioned event type which is sent to the client.</span></div><div class="line"><a name="l00373"></a><span class="lineno">  373</span>&#160;<span class="comment">// The optional delay parameter is used to specify the delay period before it</span></div><div class="line"><a name="l00374"></a><span class="lineno">  374</span>&#160;<span class="comment">// sends the first heartbeat
 .</span></div><div class="line"><a name="l00375"></a><span class="lineno">  375</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Message, <span class="keyword">typename</span> Event&gt;</div><div class="line"><a name="l00376"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1master_1_1Heartbeater.html">  376</a></span>&#160;<span class="keyword">class </span><a class="code" href="classmesos_1_1internal_1_1master_1_1Heartbeater.html">Heartbeater</a> : <span class="keyword">public</span> <a class="code" href="classprocess_1_1Process.html">process::Process</a>&lt;Heartbeater&lt;Message, Event&gt;&gt;</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>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00379"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1master_1
 _1Heartbeater.html#a9c325ca5310bfde29ae8ba93b0d72afb">  379</a></span>&#160;  <a class="code" href="classmesos_1_1internal_1_1master_1_1Heartbeater.html#a9c325ca5310bfde29ae8ba93b0d72afb">Heartbeater</a>(<span class="keyword">const</span> std::string&amp; _logMessage,</div><div class="line"><a name="l00380"></a><span class="lineno">  380</span>&#160;              <span class="keyword">const</span> Message&amp; _heartbeatMessage,</div><div class="line"><a name="l00381"></a><span class="lineno">  381</span>&#160;              <span class="keyword">const</span> <a class="code" href="structmesos_1_1internal_1_1master_1_1HttpConnection.html">HttpConnection</a>&amp; _http,</div><div class="line"><a name="l00382"></a><span class="lineno">  382</span>&#160;              <span class="keyword">const</span> <a class="code" href="classDuration.html">Duration</a>&amp; _interval,</div><div class="line"><a name="l00383"></a><span class="lineno">  383</span>&#160;              <span class="keyword"
 >const</span> <a class="code" href="classOption.html">Option&lt;Duration&gt;</a>&amp; _delay = <a class="code" href="structNone.html">None</a>())</div><div class="line"><a name="l00384"></a><span class="lineno">  384</span>&#160;    : <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">&quot;heartbeater&quot;</span>)),</div><div class="line"><a name="l00385"></a><span class="lineno">  385</span>&#160;      logMessage(_logMessage),</div><div class="line"><a name="l00386"></a><span class="lineno">  386</span>&#160;      heartbeatMessage(_heartbeatMessage),</div><div class="line"><a name="l00387"></a><span class="lineno">  387</span>&#160;      <a class="code" href="namespacemesos_1_1uri.html#a5dff7c4a2df7be12fb642b5801c34f9f">http</a>(_http),</div><div class="line"><a name="l00388">
 </a><span class="lineno">  388</span>&#160;      interval(_interval),</div><div class="line"><a name="l00389"></a><span class="lineno">  389</span>&#160;      <a class="code" href="namespaceprocess.html#ad46335bec9fe626e60003c33e8f13023">delay</a>(_delay) {}</div><div class="line"><a name="l00390"></a><span class="lineno">  390</span>&#160;</div><div class="line"><a name="l00391"></a><span class="lineno">  391</span>&#160;<span class="keyword">protected</span>:</div><div class="line"><a name="l00392"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1master_1_1Heartbeater.html#ac9ebf3a4eb46a4501e13bd38dcd96a5d">  392</a></span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classmesos_1_1internal_1_1master_1_1Heartbeater.html#ac9ebf3a4eb46a4501e13bd38dcd96a5d">initialize</a>()<span class="keyword"> override</span></div><div class="line"><a name="l00393"></a><span class="lineno">  393</span>&#160;<span cla
 ss="keyword">  </span>{</div><div class="line"><a name="l00394"></a><span class="lineno">  394</span>&#160;    <span class="keywordflow">if</span> (<a class="code" href="namespaceprocess.html#ad46335bec9fe626e60003c33e8f13023">delay</a>.isSome()) {</div><div class="line"><a name="l00395"></a><span class="lineno">  395</span>&#160;      <a class="code" href="namespaceprocess.html#ad46335bec9fe626e60003c33e8f13023">process::delay</a>(</div><div class="line"><a name="l00396"></a><span class="lineno">  396</span>&#160;          <a class="code" href="namespaceprocess.html#ad46335bec9fe626e60003c33e8f13023">delay</a>.get(),</div><div class="line"><a name="l00397"></a><span class="lineno">  397</span>&#160;          <span class="keyword">this</span>,</div><div class="line"><a name="l00398"></a><span class="lineno">  398</span>&#160;          &amp;<a class="code" href="classmesos_1_1internal_1_1master_1_1Heartbeater.html">Heartbeater&lt;Message, Event&gt;::heartbeat</a>);</div><div class="l
 ine"><a name="l00399"></a><span class="lineno">  399</span>&#160;    } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00400"></a><span class="lineno">  400</span>&#160;      heartbeat();</div><div class="line"><a name="l00401"></a><span class="lineno">  401</span>&#160;    }</div><div class="line"><a name="l00402"></a><span class="lineno">  402</span>&#160;  }</div><div class="line"><a name="l00403"></a><span class="lineno">  403</span>&#160;</div><div class="line"><a name="l00404"></a><span class="lineno">  404</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00405"></a><span class="lineno">  405</span>&#160;  <span class="keywordtype">void</span> heartbeat()</div><div class="line"><a name="l00406"></a><span class="lineno">  406</span>&#160;  {</div><div class="line"><a name="l00407"></a><span class="lineno">  407</span>&#160;    <span class="comment">// Only send a heartbeat if the connection is not closed.</span></div><d
 iv class="line"><a name="l00408"></a><span class="lineno">  408</span>&#160;    <span class="keywordflow">if</span> (<a class="code" href="namespacemesos_1_1uri.html#a5dff7c4a2df7be12fb642b5801c34f9f">http</a>.closed().isPending()) {</div><div class="line"><a name="l00409"></a><span class="lineno">  409</span>&#160;      VLOG(2) &lt;&lt; <span class="stringliteral">&quot;Sending heartbeat to &quot;</span> &lt;&lt; logMessage;</div><div class="line"><a name="l00410"></a><span class="lineno">  410</span>&#160;</div><div class="line"><a name="l00411"></a><span class="lineno">  411</span>&#160;      Message message(heartbeatMessage);</div><div class="line"><a name="l00412"></a><span class="lineno">  412</span>&#160;      <a class="code" href="namespacemesos_1_1uri.html#a5dff7c4a2df7be12fb642b5801c34f9f">http</a>.send&lt;Message, <a class="code" href="namespacemesos_1_1internal_1_1tests_1_1v1_1_1scheduler.html#acd3fa8addac36f513726743665631d79">Event</a>&gt;(message);</div><div class="li
 ne"><a name="l00413"></a><span class="lineno">  413</span>&#160;    }</div><div class="line"><a name="l00414"></a><span class="lineno">  414</span>&#160;</div><div class="line"><a name="l00415"></a><span class="lineno">  415</span>&#160;    <a class="code" href="namespaceprocess.html#ad46335bec9fe626e60003c33e8f13023">process::delay</a>(interval, <span class="keyword">this</span>, &amp;<a class="code" href="classmesos_1_1internal_1_1master_1_1Heartbeater.html">Heartbeater&lt;Message, Event&gt;::heartbeat</a>);</div><div class="line"><a name="l00416"></a><span class="lineno">  416</span>&#160;  }</div><div class="line"><a name="l00417"></a><span class="lineno">  417</span>&#160;</div><div class="line"><a name="l00418"></a><span class="lineno">  418</span>&#160;  <span class="keyword">const</span> std::string logMessage;</div><div class="line"><a name="l00419"></a><span class="lineno">  419</span>&#160;  <span class="keyword">const</span> Message heartbeatMessage;</div><div class="lin
 e"><a name="l00420"></a><span class="lineno">  420</span>&#160;  <a class="code" href="structmesos_1_1internal_1_1master_1_1HttpConnection.html">HttpConnection</a> <a class="code" href="namespacemesos_1_1uri.html#a5dff7c4a2df7be12fb642b5801c34f9f">http</a>;</div><div class="line"><a name="l00421"></a><span class="lineno">  421</span>&#160;  <span class="keyword">const</span> <a class="code" href="classDuration.html">Duration</a> interval;</div><div class="line"><a name="l00422"></a><span class="lineno">  422</span>&#160;  <span class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;Duration&gt;</a> <a class="code" href="namespaceprocess.html#ad46335bec9fe626e60003c33e8f13023">delay</a>;</div><div class="line"><a name="l00423"></a><span class="lineno">  423</span>&#160;};</div><div class="line"><a name="l00424"></a><span class="lineno">  424</span>&#160;</div><div class="line"><a name="l00425"></a><span class="lineno">  425</span>&#160;</div><div class="line">
 <a name="l00426"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1master_1_1Master.html">  426</a></span>&#160;<span class="keyword">class </span><a class="code" href="classmesos_1_1internal_1_1master_1_1Master.html">Master</a> : <span class="keyword">public</span> <a class="code" href="classProtobufProcess.html">ProtobufProcess</a>&lt;Master&gt;</div><div class="line"><a name="l00427"></a><span class="lineno">  427</span>&#160;{</div><div class="line"><a name="l00428"></a><span class="lineno">  428</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00429"></a><span class="lineno">  429</span>&#160;  <a class="code" href="classmesos_1_1internal_1_1master_1_1Master.html">Master</a>(<a class="code" href="classmesos_1_1allocator_1_1Allocator.html">mesos::allocator::Allocator</a>* allocator,</div><div class="line"><a name="l00430"></a><span class="lineno">  430</span>&#160;         <a class="code" href="classmesos_1_1internal_1_1mas
 ter_1_1Registrar.html">Registrar</a>* registrar,</div><div class="line"><a name="l00431"></a><span class="lineno">  431</span>&#160;         <a class="code" href="classmesos_1_1internal_1_1Files.html">Files</a>* files,</div><div class="line"><a name="l00432"></a><span class="lineno">  432</span>&#160;         <a class="code" href="classmesos_1_1master_1_1contender_1_1MasterContender.html">mesos::master::contender::MasterContender</a>* contender,</div><div class="line"><a name="l00433"></a><span class="lineno">  433</span>&#160;         <a class="code" href="classmesos_1_1master_1_1detector_1_1MasterDetector.html">mesos::master::detector::MasterDetector</a>* detector,</div><div class="line"><a name="l00434"></a><span class="lineno">  434</span>&#160;         <span class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;Authorizer*&gt;</a>&amp; authorizer,</div><div class="line"><a name="l00435"></a><span class="lineno">  435</span>&#160;         <span class="ke
 yword">const</span> <a class="code" href="classOption.html">Option</a>&lt;std::shared_ptr&lt;process::RateLimiter&gt;&gt;&amp;</div><div class="line"><a name="l00436"></a><span class="lineno">  436</span>&#160;           slaveRemovalLimiter,</div><div class="line"><a name="l00437"></a><span class="lineno">  437</span>&#160;         <span class="keyword">const</span> <a class="code" href="classmesos_1_1internal_1_1master_1_1Flags.html">Flags</a>&amp; <a class="code" href="namespaceflags.html">flags</a> = <a class="code" href="classmesos_1_1internal_1_1master_1_1Flags.html">Flags</a>());</div><div class="line"><a name="l00438"></a><span class="lineno">  438</span>&#160;</div><div class="line"><a name="l00439"></a><span class="lineno">  439</span>&#160;  <span class="keyword">virtual</span> ~<a class="code" href="classmesos_1_1internal_1_1master_1_1Master.html">Master</a>();</div><div class="line"><a name="l00440"></a><span class="lineno">  440</span>&#160;</div><div class="line"><a na
 me="l00441"></a><span class="lineno">  441</span>&#160;  <span class="comment">// Message handlers.</span></div><div class="line"><a name="l00442"></a><span class="lineno">  442</span>&#160;  <span class="keywordtype">void</span> submitScheduler(</div><div class="line"><a name="l00443"></a><span class="lineno">  443</span>&#160;      <span class="keyword">const</span> std::string&amp; <a class="code" href="namespaceos_1_1Shell.html#acfe16ef2b1146ad49a8651c0a457ce46">name</a>);</div><div class="line"><a name="l00444"></a><span class="lineno">  444</span>&#160;</div><div class="line"><a name="l00445"></a><span class="lineno">  445</span>&#160;  <span class="keywordtype">void</span> registerFramework(</div><div class="line"><a name="l00446"></a><span class="lineno">  446</span>&#160;      <span class="keyword">const</span> <a class="code" href="structprocess_1_1UPID.html">process::UPID</a>&amp; from,</div><div class="line"><a name="l00447"></a><span class="lineno">  447</span>&#160;   
    RegisterFrameworkMessage&amp;&amp; registerFrameworkMessage);</div><div class="line"><a name="l00448"></a><span class="lineno">  448</span>&#160;</div><div class="line"><a name="l00449"></a><span class="lineno">  449</span>&#160;  <span class="keywordtype">void</span> reregisterFramework(</div><div class="line"><a name="l00450"></a><span class="lineno">  450</span>&#160;      <span class="keyword">const</span> <a class="code" href="structprocess_1_1UPID.html">process::UPID</a>&amp; from,</div><div class="line"><a name="l00451"></a><span class="lineno">  451</span>&#160;      ReregisterFrameworkMessage&amp;&amp; reregisterFrameworkMessage);</div><div class="line"><a name="l00452"></a><span class="lineno">  452</span>&#160;</div><div class="line"><a name="l00453"></a><span class="lineno">  453</span>&#160;  <span class="keywordtype">void</span> unregisterFramework(</div><div class="line"><a name="l00454"></a><span class="lineno">  454</span>&#160;      <span class="keyword">const</
 span> <a class="code" href="structprocess_1_1UPID.html">process::UPID</a>&amp; from,</div><div class="line"><a name="l00455"></a><span class="lineno">  455</span>&#160;      <span class="keyword">const</span> FrameworkID&amp; frameworkId);</div><div class="line"><a name="l00456"></a><span class="lineno">  456</span>&#160;</div><div class="line"><a name="l00457"></a><span class="lineno">  457</span>&#160;  <span class="keywordtype">void</span> deactivateFramework(</div><div class="line"><a name="l00458"></a><span class="lineno">  458</span>&#160;      <span class="keyword">const</span> <a class="code" href="structprocess_1_1UPID.html">process::UPID</a>&amp; from,</div><div class="line"><a name="l00459"></a><span class="lineno">  459</span>&#160;      <span class="keyword">const</span> FrameworkID&amp; frameworkId);</div><div class="line"><a name="l00460"></a><span class="lineno">  460</span>&#160;</div><div class="line"><a name="l00461"></a><span class="lineno">  461</span>&#160;  <s
 pan class="comment">// TODO(vinod): Remove this once the old driver is removed.</span></div><div class="line"><a name="l00462"></a><span class="lineno">  462</span>&#160;  <span class="keywordtype">void</span> resourceRequest(</div><div class="line"><a name="l00463"></a><span class="lineno">  463</span>&#160;      <span class="keyword">const</span> <a class="code" href="structprocess_1_1UPID.html">process::UPID</a>&amp; from,</div><div class="line"><a name="l00464"></a><span class="lineno">  464</span>&#160;      <span class="keyword">const</span> FrameworkID&amp; frameworkId,</div><div class="line"><a name="l00465"></a><span class="lineno">  465</span>&#160;      <span class="keyword">const</span> std::vector&lt;Request&gt;&amp; requests);</div><div class="line"><a name="l00466"></a><span class="lineno">  466</span>&#160;</div><div class="line"><a name="l00467"></a><span class="lineno">  467</span>&#160;  <span class="keywordtype">void</span> launchTasks(</div><div class="line"><a 
 name="l00468"></a><span class="lineno">  468</span>&#160;      <span class="keyword">const</span> <a class="code" href="structprocess_1_1UPID.html">process::UPID</a>&amp; from,</div><div class="line"><a name="l00469"></a><span class="lineno">  469</span>&#160;      LaunchTasksMessage&amp;&amp; launchTasksMessage);</div><div class="line"><a name="l00470"></a><span class="lineno">  470</span>&#160;</div><div class="line"><a name="l00471"></a><span class="lineno">  471</span>&#160;  <span class="keywordtype">void</span> reviveOffers(</div><div class="line"><a name="l00472"></a><span class="lineno">  472</span>&#160;      <span class="keyword">const</span> <a class="code" href="structprocess_1_1UPID.html">process::UPID</a>&amp; from,</div><div class="line"><a name="l00473"></a><span class="lineno">  473</span>&#160;      <span class="keyword">const</span> FrameworkID&amp; frameworkId,</div><div class="line"><a name="l00474"></a><span class="lineno">  474</span>&#160;      <span class="k
 eyword">const</span> std::vector&lt;std::string&gt;&amp; role);</div><div class="line"><a name="l00475"></a><span class="lineno">  475</span>&#160;</div><div class="line"><a name="l00476"></a><span class="lineno">  476</span>&#160;  <span class="keywordtype">void</span> killTask(</div><div class="line"><a name="l00477"></a><span class="lineno">  477</span>&#160;      <span class="keyword">const</span> <a class="code" href="structprocess_1_1UPID.html">process::UPID</a>&amp; from,</div><div class="line"><a name="l00478"></a><span class="lineno">  478</span>&#160;      <span class="keyword">const</span> FrameworkID&amp; frameworkId,</div><div class="line"><a name="l00479"></a><span class="lineno">  479</span>&#160;      <span class="keyword">const</span> TaskID&amp; taskId);</div><div class="line"><a name="l00480"></a><span class="lineno">  480</span>&#160;</div><div class="line"><a name="l00481"></a><span class="lineno">  481</span>&#160;  <span class="keywordtype">void</span> statusU
 pdateAcknowledgement(</div><div class="line"><a name="l00482"></a><span class="lineno">  482</span>&#160;      <span class="keyword">const</span> <a class="code" href="structprocess_1_1UPID.html">process::UPID</a>&amp; from,</div><div class="line"><a name="l00483"></a><span class="lineno">  483</span>&#160;      StatusUpdateAcknowledgementMessage&amp;&amp; statusUpdateAcknowledgementMessage);</div><div class="line"><a name="l00484"></a><span class="lineno">  484</span>&#160;</div><div class="line"><a name="l00485"></a><span class="lineno">  485</span>&#160;  <span class="keywordtype">void</span> schedulerMessage(</div><div class="line"><a name="l00486"></a><span class="lineno">  486</span>&#160;      <span class="keyword">const</span> <a class="code" href="structprocess_1_1UPID.html">process::UPID</a>&amp; from,</div><div class="line"><a name="l00487"></a><span class="lineno">  487</span>&#160;      FrameworkToExecutorMessage&amp;&amp; frameworkToExecutorMessage);</div><div class="l
 ine"><a name="l00488"></a><span class="lineno">  488</span>&#160;</div><div class="line"><a name="l00489"></a><span class="lineno">  489</span>&#160;  <span class="keywordtype">void</span> executorMessage(</div><div class="line"><a name="l00490"></a><span class="lineno">  490</span>&#160;      <span class="keyword">const</span> <a class="code" href="structprocess_1_1UPID.html">process::UPID</a>&amp; from,</div><div class="line"><a name="l00491"></a><span class="lineno">  491</span>&#160;      ExecutorToFrameworkMessage&amp;&amp; executorToFrameworkMessage);</div><div class="line"><a name="l00492"></a><span class="lineno">  492</span>&#160;</div><div class="line"><a name="l00493"></a><span class="lineno">  493</span>&#160;  <span class="keywordtype">void</span> <a class="code" href="namespacemesos_1_1internal_1_1master_1_1validation_1_1master_1_1message.html#afd6f535967a78ca5bfe59127ac23a626">registerSlave</a>(</div><div class="line"><a name="l00494"></a><span class="lineno">  494</s
 pan>&#160;      <span class="keyword">const</span> <a class="code" href="structprocess_1_1UPID.html">process::UPID</a>&amp; from,</div><div class="line"><a name="l00495"></a><span class="lineno">  495</span>&#160;      RegisterSlaveMessage&amp;&amp; registerSlaveMessage);</div><div class="line"><a name="l00496"></a><span class="lineno">  496</span>&#160;</div><div class="line"><a name="l00497"></a><span class="lineno">  497</span>&#160;  <span class="keywordtype">void</span> <a class="code" href="namespacemesos_1_1internal_1_1master_1_1validation_1_1master_1_1message.html#aa161808296e305b8b17479f2f7b70fa4">reregisterSlave</a>(</div><div class="line"><a name="l00498"></a><span class="lineno">  498</span>&#160;      <span class="keyword">const</span> <a class="code" href="structprocess_1_1UPID.html">process::UPID</a>&amp; from,</div><div class="line"><a name="l00499"></a><span class="lineno">  499</span>&#160;      ReregisterSlaveMessage&amp;&amp; incomingMessage);</div><div class="li
 ne"><a name="l00500"></a><span class="lineno">  500</span>&#160;</div><div class="line"><a name="l00501"></a><span class="lineno">  501</span>&#160;  <span class="keywordtype">void</span> unregisterSlave(</div><div class="line"><a name="l00502"></a><span class="lineno">  502</span>&#160;      <span class="keyword">const</span> <a class="code" href="structprocess_1_1UPID.html">process::UPID</a>&amp; from,</div><div class="line"><a name="l00503"></a><span class="lineno">  503</span>&#160;      <span class="keyword">const</span> SlaveID&amp; slaveId);</div><div class="line"><a name="l00504"></a><span class="lineno">  504</span>&#160;</div><div class="line"><a name="l00505"></a><span class="lineno">  505</span>&#160;  <span class="keywordtype">void</span> statusUpdate(</div><div class="line"><a name="l00506"></a><span class="lineno">  506</span>&#160;      StatusUpdateMessage&amp;&amp; statusUpdateMessage);</div><div class="line"><a name="l00507"></a><span class="lineno">  507</span>&#1
 60;</div><div class="line"><a name="l00508"></a><span class="lineno">  508</span>&#160;  <span class="keywordtype">void</span> reconcileTasks(</div><div c

<TRUNCATED>

[21/50] mesos-site git commit: Updated the website built from mesos SHA: 7c9c72d.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/namespaceprocess_1_1io_1_1internal.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/namespaceprocess_1_1io_1_1internal.html b/content/api/latest/c++/namespaceprocess_1_1io_1_1internal.html
new file mode 100644
index 0000000..71fd66f
--- /dev/null
+++ b/content/api/latest/c++/namespaceprocess_1_1io_1_1internal.html
@@ -0,0 +1,174 @@
+<!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: process::io::internal 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&#160;Page</span></a></li>
+      <li><a href="pages.html"><span>Related&#160;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&#160;List</span></a></li>
+      <li><a href="namespacemembers.html"><span>Namespace&#160;Members</span></a></li>
+    </ul>
+  </div>
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="namespaceprocess.html">process</a></li><li class="navelem"><a class="el" href="namespaceprocess_1_1io.html">io</a></li><li class="navelem"><a class="el" href="namespaceprocess_1_1io_1_1internal.html">internal</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">process::io::internal 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:ac0a90b8abf47098e5a57d90e744a42a8"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classprocess_1_1Future.html">Future</a>&lt; size_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceprocess_1_1io_1_1internal.html#ac0a90b8abf47098e5a57d90e744a42a8">read</a> (<a class="el" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> fd, void *data, size_t size)</td></tr>
+<tr class="separator:ac0a90b8abf47098e5a57d90e744a42a8"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab4ecbbe96ef3c0600060e16c47988798"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classprocess_1_1Future.html">Future</a>&lt; size_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceprocess_1_1io_1_1internal.html#ab4ecbbe96ef3c0600060e16c47988798">write</a> (<a class="el" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> fd, const void *data, size_t size)</td></tr>
+<tr class="separator:ab4ecbbe96ef3c0600060e16c47988798"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a9458b24220892124c2112b3fe85e585e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classTry.html">Try</a>&lt; <a class="el" href="structNothing.html">Nothing</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceprocess_1_1io_1_1internal.html#a9458b24220892124c2112b3fe85e585e">prepare_async</a> (<a class="el" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> fd)</td></tr>
+<tr class="separator:a9458b24220892124c2112b3fe85e585e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a2291f1f69f4bdf80f3b114c493eb1e37"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classTry.html">Try</a>&lt; bool &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceprocess_1_1io_1_1internal.html#a2291f1f69f4bdf80f3b114c493eb1e37">is_async</a> (<a class="el" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> fd)</td></tr>
+<tr class="separator:a2291f1f69f4bdf80f3b114c493eb1e37"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Function Documentation</h2>
+<a class="anchor" id="a2291f1f69f4bdf80f3b114c493eb1e37"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="classTry.html">Try</a>&lt;bool&gt; process::io::internal::is_async </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a>&#160;</td>
+          <td class="paramname"><em>fd</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a9458b24220892124c2112b3fe85e585e"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="classTry.html">Try</a>&lt;<a class="el" href="structNothing.html">Nothing</a>&gt; process::io::internal::prepare_async </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a>&#160;</td>
+          <td class="paramname"><em>fd</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="ac0a90b8abf47098e5a57d90e744a42a8"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="classprocess_1_1Future.html">Future</a>&lt;size_t&gt; process::io::internal::read </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a>&#160;</td>
+          <td class="paramname"><em>fd</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">void *&#160;</td>
+          <td class="paramname"><em>data</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">size_t&#160;</td>
+          <td class="paramname"><em>size</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="ab4ecbbe96ef3c0600060e16c47988798"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="classprocess_1_1Future.html">Future</a>&lt;size_t&gt; process::io::internal::write </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a>&#160;</td>
+          <td class="paramname"><em>fd</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const void *&#160;</td>
+          <td class="paramname"><em>data</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">size_t&#160;</td>
+          <td class="paramname"><em>size</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</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 &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.11
+</small></address>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/namespaceprocess_1_1windows.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/namespaceprocess_1_1windows.html b/content/api/latest/c++/namespaceprocess_1_1windows.html
new file mode 100644
index 0000000..2f3378a
--- /dev/null
+++ b/content/api/latest/c++/namespaceprocess_1_1windows.html
@@ -0,0 +1,332 @@
+<!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: process::windows 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&#160;Page</span></a></li>
+      <li><a href="pages.html"><span>Related&#160;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&#160;List</span></a></li>
+      <li><a href="namespacemembers.html"><span>Namespace&#160;Members</span></a></li>
+    </ul>
+  </div>
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="namespaceprocess.html">process</a></li><li class="navelem"><a class="el" href="namespaceprocess_1_1windows.html">windows</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="summary">
+<a href="#nested-classes">Classes</a> &#124;
+<a href="#func-members">Functions</a>  </div>
+  <div class="headertitle">
+<div class="title">process::windows Namespace Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classprocess_1_1windows_1_1EventLoop.html">EventLoop</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</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:a7436ed89e84ff3415987de0ca9428d08"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classprocess_1_1Future.html">Future</a>&lt; size_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceprocess_1_1windows.html#a7436ed89e84ff3415987de0ca9428d08">read</a> (const <a class="el" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> &amp;fd, void *buf, size_t size)</td></tr>
+<tr class="separator:a7436ed89e84ff3415987de0ca9428d08"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a69a29846581bb7bb1084e9ee90cbe8e6"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classprocess_1_1Future.html">Future</a>&lt; size_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceprocess_1_1windows.html#a69a29846581bb7bb1084e9ee90cbe8e6">write</a> (const <a class="el" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> &amp;fd, const void *buf, size_t size)</td></tr>
+<tr class="separator:a69a29846581bb7bb1084e9ee90cbe8e6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a37fde6f31c2f9838a18cf83c2c865134"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classprocess_1_1Future.html">Future</a>&lt; size_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceprocess_1_1windows.html#a37fde6f31c2f9838a18cf83c2c865134">recv</a> (const <a class="el" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> &amp;fd, void *buf, size_t size)</td></tr>
+<tr class="separator:a37fde6f31c2f9838a18cf83c2c865134"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a04c64346155d34517acdf8b587162868"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classprocess_1_1Future.html">Future</a>&lt; size_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceprocess_1_1windows.html#a04c64346155d34517acdf8b587162868">send</a> (const <a class="el" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> &amp;fd, const void *buf, size_t size)</td></tr>
+<tr class="separator:a04c64346155d34517acdf8b587162868"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1f34e4ee3092afe93c37c170430c03f5"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classprocess_1_1Future.html">Future</a>&lt; <a class="el" href="structNothing.html">Nothing</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceprocess_1_1windows.html#a1f34e4ee3092afe93c37c170430c03f5">accept</a> (const <a class="el" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> &amp;fd, const <a class="el" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> &amp;accepted_socket)</td></tr>
+<tr class="separator:a1f34e4ee3092afe93c37c170430c03f5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5afdaeaeb57343d0aca728b74dcd3f71"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classprocess_1_1Future.html">Future</a>&lt; <a class="el" href="structNothing.html">Nothing</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceprocess_1_1windows.html#a5afdaeaeb57343d0aca728b74dcd3f71">connect</a> (const <a class="el" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> &amp;fd, const <a class="el" href="classprocess_1_1network_1_1Address.html">network::Address</a> &amp;<a class="el" href="namespaceprocess.html#afdecc57ab065ab5d354e728d0ef0ff34">address</a>)</td></tr>
+<tr class="separator:a5afdaeaeb57343d0aca728b74dcd3f71"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:afc59f27e725b5feb12f76e1c008ba767"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classprocess_1_1Future.html">Future</a>&lt; size_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceprocess_1_1windows.html#afc59f27e725b5feb12f76e1c008ba767">sendfile</a> (const <a class="el" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> &amp;fd, const <a class="el" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> &amp;file_fd, off_t offset, size_t size)</td></tr>
+<tr class="separator:afc59f27e725b5feb12f76e1c008ba767"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Function Documentation</h2>
+<a class="anchor" id="a1f34e4ee3092afe93c37c170430c03f5"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="classprocess_1_1Future.html">Future</a>&lt;<a class="el" href="structNothing.html">Nothing</a>&gt; process::windows::accept </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> &amp;&#160;</td>
+          <td class="paramname"><em>fd</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const <a class="el" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> &amp;&#160;</td>
+          <td class="paramname"><em>accepted_socket</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a5afdaeaeb57343d0aca728b74dcd3f71"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="classprocess_1_1Future.html">Future</a>&lt;<a class="el" href="structNothing.html">Nothing</a>&gt; process::windows::connect </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> &amp;&#160;</td>
+          <td class="paramname"><em>fd</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const <a class="el" href="classprocess_1_1network_1_1Address.html">network::Address</a> &amp;&#160;</td>
+          <td class="paramname"><em>address</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a7436ed89e84ff3415987de0ca9428d08"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="classprocess_1_1Future.html">Future</a>&lt;size_t&gt; process::windows::read </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> &amp;&#160;</td>
+          <td class="paramname"><em>fd</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">void *&#160;</td>
+          <td class="paramname"><em>buf</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">size_t&#160;</td>
+          <td class="paramname"><em>size</em>&#160;</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>
+<a class="anchor" id="a37fde6f31c2f9838a18cf83c2c865134"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="classprocess_1_1Future.html">Future</a>&lt;size_t&gt; process::windows::recv </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> &amp;&#160;</td>
+          <td class="paramname"><em>fd</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">void *&#160;</td>
+          <td class="paramname"><em>buf</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">size_t&#160;</td>
+          <td class="paramname"><em>size</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a04c64346155d34517acdf8b587162868"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="classprocess_1_1Future.html">Future</a>&lt;size_t&gt; process::windows::send </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> &amp;&#160;</td>
+          <td class="paramname"><em>fd</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const void *&#160;</td>
+          <td class="paramname"><em>buf</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">size_t&#160;</td>
+          <td class="paramname"><em>size</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="afc59f27e725b5feb12f76e1c008ba767"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="classprocess_1_1Future.html">Future</a>&lt;size_t&gt; process::windows::sendfile </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> &amp;&#160;</td>
+          <td class="paramname"><em>fd</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const <a class="el" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> &amp;&#160;</td>
+          <td class="paramname"><em>file_fd</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">off_t&#160;</td>
+          <td class="paramname"><em>offset</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">size_t&#160;</td>
+          <td class="paramname"><em>size</em>&#160;</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>
+<a class="anchor" id="a69a29846581bb7bb1084e9ee90cbe8e6"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="classprocess_1_1Future.html">Future</a>&lt;size_t&gt; process::windows::write </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> &amp;&#160;</td>
+          <td class="paramname"><em>fd</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const void *&#160;</td>
+          <td class="paramname"><em>buf</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">size_t&#160;</td>
+          <td class="paramname"><em>size</em>&#160;</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>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.11
+</small></address>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/namespaces.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/namespaces.html b/content/api/latest/c++/namespaces.html
index d016d93..0236e44 100644
--- a/content/api/latest/c++/namespaces.html
+++ b/content/api/latest/c++/namespaces.html
@@ -283,7 +283,8 @@
 <tr id="row_32_4_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespaceprocess_1_1ID.html" target="_self">ID</a></td><td class="desc"></td></tr>
 <tr id="row_32_5_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespaceprocess_1_1inject.html" target="_self">inject</a></td><td class="desc"></td></tr>
 <tr id="row_32_6_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespaceprocess_1_1internal.html" target="_self">internal</a></td><td class="desc"></td></tr>
-<tr id="row_32_7_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespaceprocess_1_1io.html" target="_self">io</a></td><td class="desc"></td></tr>
+<tr id="row_32_7_" style="display:none;"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_32_7_" class="arrow" onclick="toggleFolder('32_7_')">&#9658;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespaceprocess_1_1io.html" target="_self">io</a></td><td class="desc"></td></tr>
+<tr id="row_32_7_0_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespaceprocess_1_1io_1_1internal.html" target="_self">internal</a></td><td class="desc"></td></tr>
 <tr id="row_32_8_" style="display:none;"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_32_8_" class="arrow" onclick="toggleFolder('32_8_')">&#9658;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespaceprocess_1_1metrics.html" target="_self">metrics</a></td><td class="desc"></td></tr>
 <tr id="row_32_8_0_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespaceprocess_1_1metrics_1_1internal.html" target="_self">internal</a></td><td class="desc"></td></tr>
 <tr id="row_32_9_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespaceprocess_1_1mime.html" target="_self">mime</a></td><td class="desc"></td></tr>
@@ -294,6 +295,7 @@
 <tr id="row_32_10_3_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespaceprocess_1_1network_1_1internal.html" target="_self">internal</a></td><td class="desc"></td></tr>
 <tr id="row_32_10_4_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespaceprocess_1_1network_1_1openssl.html" target="_self">openssl</a></td><td class="desc"></td></tr>
 <tr id="row_32_10_5_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespaceprocess_1_1network_1_1unix.html" target="_self">unix</a></td><td class="desc"></td></tr>
+<tr id="row_32_11_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespaceprocess_1_1windows.html" target="_self">windows</a></td><td class="desc"></td></tr>
 <tr id="row_33_"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_33_" class="arrow" onclick="toggleFolder('33_')">&#9658;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespaceprotobuf.html" target="_self">protobuf</a></td><td class="desc"></td></tr>
 <tr id="row_33_0_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespaceprotobuf_1_1internal.html" target="_self">internal</a></td><td class="desc"></td></tr>
 <tr id="row_34_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespacerecordio.html" target="_self">recordio</a></td><td class="desc">Provides facilities for "Record-IO" encoding of data </td></tr>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/port__mapping_8hpp.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/port__mapping_8hpp.html b/content/api/latest/c++/port__mapping_8hpp.html
index 6ea2e95..b627086 100644
--- a/content/api/latest/c++/port__mapping_8hpp.html
+++ b/content/api/latest/c++/port__mapping_8hpp.html
@@ -64,7 +64,7 @@
 <code>#include &lt;vector&gt;</code><br />
 <code>#include &lt;<a class="el" href="id_8hpp_source.html">process/id.hpp</a>&gt;</code><br />
 <code>#include &lt;<a class="el" href="owned_8hpp_source.html">process/owned.hpp</a>&gt;</code><br />
-<code>#include &lt;<a class="el" href="subprocess_8hpp_source.html">process/subprocess.hpp</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="include_2process_2subprocess_8hpp_source.html">process/subprocess.hpp</a>&gt;</code><br />
 <code>#include &lt;<a class="el" href="3rdparty_2libprocess_2include_2process_2metrics_2metrics_8hpp_source.html">process/metrics/metrics.hpp</a>&gt;</code><br />
 <code>#include &lt;<a class="el" href="counter_8hpp_source.html">process/metrics/counter.hpp</a>&gt;</code><br />
 <code>#include &lt;<a class="el" href="bytes_8hpp_source.html">stout/bytes.hpp</a>&gt;</code><br />


[05/50] mesos-site git commit: Updated the website built from mesos SHA: 7c9c72d.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/windows_2event__loop_8hpp.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/windows_2event__loop_8hpp.html b/content/api/latest/c++/windows_2event__loop_8hpp.html
new file mode 100644
index 0000000..8d2caf7
--- /dev/null
+++ b/content/api/latest/c++/windows_2event__loop_8hpp.html
@@ -0,0 +1,80 @@
+<!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: 3rdparty/libprocess/src/windows/event_loop.hpp File 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&#160;Page</span></a></li>
+      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li class="current"><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="files.html"><span>File&#160;List</span></a></li>
+      <li><a href="globals.html"><span>File&#160;Members</span></a></li>
+    </ul>
+  </div>
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_8cab8f464681f7cc51cee77e79a434cd.html">3rdparty</a></li><li class="navelem"><a class="el" href="dir_043a76de98701f9bddf61b5e98f305ff.html">libprocess</a></li><li class="navelem"><a class="el" href="dir_01cbbd8dcbf9de3825992568658f467e.html">src</a></li><li class="navelem"><a class="el" href="dir_4f303781ded361ff602a549327c53cc9.html">windows</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="summary">
+<a href="#namespaces">Namespaces</a> &#124;
+<a href="#var-members">Variables</a>  </div>
+  <div class="headertitle">
+<div class="title">event_loop.hpp File Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &quot;<a class="el" href="libwinio_8hpp_source.html">windows/libwinio.hpp</a>&quot;</code><br />
+</div>
+<p><a href="windows_2event__loop_8hpp_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
+Namespaces</h2></td></tr>
+<tr class="memitem:namespaceprocess"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceprocess.html">process</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a>
+Variables</h2></td></tr>
+<tr class="memitem:a3b1f9b3719ea6358ad426ae31bc8eae6"><td class="memItemLeft" align="right" valign="top">windows::EventLoop *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceprocess.html#a3b1f9b3719ea6358ad426ae31bc8eae6">process::libwinio_loop</a></td></tr>
+<tr class="separator:a3b1f9b3719ea6358ad426ae31bc8eae6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.11
+</small></address>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/windows_2event__loop_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/windows_2event__loop_8hpp_source.html b/content/api/latest/c++/windows_2event__loop_8hpp_source.html
new file mode 100644
index 0000000..4406c64
--- /dev/null
+++ b/content/api/latest/c++/windows_2event__loop_8hpp_source.html
@@ -0,0 +1,66 @@
+<!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: 3rdparty/libprocess/src/windows/event_loop.hpp Source File</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&#160;Page</span></a></li>
+      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li class="current"><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="files.html"><span>File&#160;List</span></a></li>
+      <li><a href="globals.html"><span>File&#160;Members</span></a></li>
+    </ul>
+  </div>
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_8cab8f464681f7cc51cee77e79a434cd.html">3rdparty</a></li><li class="navelem"><a class="el" href="dir_043a76de98701f9bddf61b5e98f305ff.html">libprocess</a></li><li class="navelem"><a class="el" href="dir_01cbbd8dcbf9de3825992568658f467e.html">src</a></li><li class="navelem"><a class="el" href="dir_4f303781ded361ff602a549327c53cc9.html">windows</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">event_loop.hpp</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="windows_2event__loop_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>&#160;<span class="comment">// Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<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>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<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="c
 omment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<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>&#160;<span class="comment">// distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<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>&#160;<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>&#160;<span class="comment">// limitations under the License</span></div><div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;</div>
 <div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="preprocessor">#ifndef __WINDOWS_EVENT_LOOP_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="preprocessor">#define __WINDOWS_EVENT_LOOP_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;</div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="libwinio_8hpp.html">windows/libwinio.hpp</a>&quot;</span></div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceprocess.html">process</a> {</div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lin
 eno">   20</span>&#160;<span class="comment">// Windows event loop variable.</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="keyword">extern</span> windows::EventLoop* <a class="code" href="namespaceprocess.html#a3b1f9b3719ea6358ad426ae31bc8eae6">libwinio_loop</a>;</div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;} <span class="comment">// namespace process {</span></div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;</div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="preprocessor">#endif // __WINDOWS_EVENT_LOOP_HPP__</span></div><div class="ttc" id="namespaceprocess_html_a3b1f9b3719ea6358ad426ae31bc8eae6"><div class="ttname"><a href="namespaceprocess.html#a3b1f9b3719ea6358ad426ae31bc8eae6">process::libwinio_loop</a></div><div class="ttde
 ci">windows::EventLoop * libwinio_loop</div></div>
+<div class="ttc" id="libwinio_8hpp_html"><div class="ttname"><a href="libwinio_8hpp.html">libwinio.hpp</a></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:48</div></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.11
+</small></address>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/windows_2os_8hpp.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/windows_2os_8hpp.html b/content/api/latest/c++/windows_2os_8hpp.html
index 51c0e72..60222c6 100644
--- a/content/api/latest/c++/windows_2os_8hpp.html
+++ b/content/api/latest/c++/windows_2os_8hpp.html
@@ -97,6 +97,8 @@ Namespaces</h2></td></tr>
 Functions</h2></td></tr>
 <tr class="memitem:a02c567b1b6bb441a3a29433a126cedec"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classTry.html">Try</a>&lt; std::string &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceos_1_1internal.html#a02c567b1b6bb441a3a29433a126cedec">os::internal::nodename</a> ()</td></tr>
 <tr class="separator:a02c567b1b6bb441a3a29433a126cedec"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1493e5fcc92753702d08b36881ee8f97"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceos_1_1internal.html#a1493e5fcc92753702d08b36881ee8f97">os::internal::windows_to_unix_epoch</a> (const FILETIME &amp;filetime)</td></tr>
+<tr class="separator:a1493e5fcc92753702d08b36881ee8f97"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:abdecf7ea8278e2d8b2110ecd2e8ca0ec"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classTry.html">Try</a>&lt; std::set&lt; <a class="el" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a> &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceos.html#abdecf7ea8278e2d8b2110ecd2e8ca0ec">os::pids</a> (<a class="el" href="classOption.html">Option</a>&lt; <a class="el" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a> &gt; <a class="el" href="structgroup.html">group</a>, <a class="el" href="classOption.html">Option</a>&lt; <a class="el" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a> &gt; session)</td></tr>
 <tr class="separator:abdecf7ea8278e2d8b2110ecd2e8ca0ec"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a42af1cab63434cedf2b698cd6f49f073"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classTry.html">Try</a>&lt; std::set&lt; <a class="el" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a> &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceos.html#a42af1cab63434cedf2b698cd6f49f073">os::pids</a> ()</td></tr>


[23/50] mesos-site git commit: Updated the website built from mesos SHA: 7c9c72d.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/linux_2cgroups_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/linux_2cgroups_8hpp_source.html b/content/api/latest/c++/linux_2cgroups_8hpp_source.html
index eb408af..5cba4f0 100644
--- a/content/api/latest/c++/linux_2cgroups_8hpp_source.html
+++ b/content/api/latest/c++/linux_2cgroups_8hpp_source.html
@@ -52,7 +52,7 @@
 <div class="title">cgroups.hpp</div>  </div>
 </div><!--header-->
 <div class="contents">
-<a href="linux_2cgroups_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>&#160;<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>&#160;<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>&#160;<span class="comment">// distributed with this work for additional information</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<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>&#160;<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>&#160;<span class="comment">// &quot;License&quot;); you may not use this file except in compliance</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<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>&#160;<span class="comment">// di
 stributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<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>&#160;<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>&#160;<span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;</div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="preprocessor">#ifndef __CGROUPS_HPP__</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="preprocessor">#define __CGROUPS_HPP__</span></div><div class="line"><a name="l
 00019"></a><span class="lineno">   19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="preprocessor">#include &lt;stdint.h&gt;</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="preprocessor">#include &lt;stdlib.h&gt;</span></div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="preprocessor">#include &lt;set&gt;</span></div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span></div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="preprocessor">#include &lt;vector&gt;</span></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>&#160;<span class="preprocessor">#include &lt;sys/types.h&gt;</span></div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;</div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="future_8hpp.html">process/future.hpp</a>&gt;</span></div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="timeout_8hpp.html">process/timeout.hpp</a>&gt;</span></div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;</div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="bytes_8hpp.html">stout/bytes.hpp</a>&gt;</span></div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="duration_8hpp.html">s
 tout/duration.hpp</a>&gt;</span></div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="hashmap_8hpp.html">stout/hashmap.hpp</a>&gt;</span></div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="nothing_8hpp.html">stout/nothing.hpp</a>&gt;</span></div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="option_8hpp.html">stout/option.hpp</a>&gt;</span></div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="try_8hpp.html">stout/try.hpp</a>&gt;</span></div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="namespacecgroup
 s.html">   39</a></span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacecgroups.html">cgroups</a> {</div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;</div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;<span class="comment">// Suggested timeout for use with the convenience version of</span></div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;<span class="comment">// cgroups::destroy(); it is not a default timeout and must be</span></div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;<span class="comment">// explicitly specified.</span></div><div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="namespacecgroups.html#a3e497aa6d62c407000dffd5f0516a53c">   44</a></span>&#160;<span class="keyword">const</span> <a class="code" href="classDuration.html">Duration</a> <a class="code" href="namespacecgroups.html#
 a3e497aa6d62c407000dffd5f0516a53c">DESTROY_TIMEOUT</a> = <a class="code" href="classSeconds.html">Seconds</a>(60);</div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;</div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;</div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;<span class="comment">// Freezing a cgroup may get stuck (see MESOS-1689 for details). To</span></div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;<span class="comment">// workaround, we may want to thaw the cgroup and retry freezing it.</span></div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;<span class="comment">// This is the suggested retry interval.</span></div><div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="namespacecgroups.html#a5207e520ebc1a375a7b50532217e77d5">   50</a></span>&#160;<span class="keyword">const</span>
  <a class="code" href="classDuration.html">Duration</a> <a class="code" href="namespacecgroups.html#a5207e520ebc1a375a7b50532217e77d5">FREEZE_RETRY_INTERVAL</a> = <a class="code" href="classSeconds.html">Seconds</a>(10);</div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;</div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;</div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;<span class="comment">// Default number of assign attempts when moving threads to a cgroup.</span></div><div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="namespacecgroups.html#a0dccf61f2e6889ebe2c0e743d969e4c5">   54</a></span>&#160;<span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="namespacecgroups.html#a0dccf61f2e6889ebe2c0e743d969e4c5">THREAD_ASSIGN_RETRIES</a> = 100;</div><div class="line"><a name="l0
 0055"></a><span class="lineno">   55</span>&#160;</div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;<span class="comment">// We use the following notations throughout the cgroups code. The notations</span></div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;<span class="comment">// here are derived from the kernel documentation. More details can be found in</span></div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;<span class="comment">// &lt;kernel-source&gt;/Documentation/cgroups/cgroups.txt.</span></div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;<span class="comment">// Hierarchy -  A hierarchy contains a set of cgroups arranged in a tree such</span></div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;<span 
 class="comment">//              that every task in the system is in exactly one of the cgroups</span></div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;<span class="comment">//              in the hierarchy. One or more subsystems can be attached to a</span></div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;<span class="comment">//              hierarchy.</span></div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;<span class="comment">// Subsystem -  A subsystem (e.g. cpu, memory, cpuset, etc) in the kernel. Each</span></div><div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;<span class="comment">//              subsystem can be attached to only one hierarchy.</span></div><div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;<span class="comment">// Cgroup    -  A cgroup is just a set of tasks with a set of controls for one</span></div><
 div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;<span class="comment">//              or more subsystems.</span></div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;<span class="comment">// Control   -  A control file in a cgroup (e.g. tasks, cpu.shares).</span></div><div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;</div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;</div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;<span class="comment">// TODO(idownes): Rework all functions in this file to better support</span></div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;<span class="comment">// separately mounted subsystems.</span></div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;</div><div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;<span class
 ="comment">// Prepare a hierarchy which has the specified subsystem (and only that</span></div><div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;<span class="comment">// subsystem) mounted and also has the specified cgroup created. Returns the</span></div><div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;<span class="comment">// hierarchy. Checks are made to ensure that cgroups are supported and that</span></div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;<span class="comment">// nested cgroups can be created.</span></div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;<a class="code" href="classTry.html">Try&lt;std::string&gt;</a> <a class="code" href="namespacecgroups.html#a4bf20862574beb5b0f9af7799489866f">prepare</a>(</div><div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;    <span class="keyword">const</span> std::string&amp; baseHi
 erarchy,</div><div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;    <span class="keyword">const</span> std::string&amp; subsystem,</div><div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;    <span class="keyword">const</span> std::string&amp; <a class="code" href="namespacecgroups_1_1named.html#a90339a144714dee1c97f9e34553ace0e">cgroup</a>);</div><div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;</div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;</div><div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;<span class="comment">// Check whether cgroups module is enabled on the current machine.</span></div><div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;<span class="comment">// @return  True if cgroups module is enabled.</span></div><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;<span cla
 ss="comment">//          False if cgroups module is not available.</span></div><div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;<span class="keywordtype">bool</span> <a class="code" href="namespacecgroups.html#a549f051f3df2b570aef0ee2b806020e3">enabled</a>();</div><div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;</div><div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;</div><div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;<span class="comment">// Return the currently active hierarchies.</span></div><div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;<span class="comment">// @return  A set of active hierarchy paths (e.g., &#39;/cgroup&#39;).</span></div><div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;<span class="comment">//          Error if unexpected happens.</span></div><div class="line"><a name="l00093"></a><spa
 n class="lineno">   93</span>&#160;<a class="code" href="classTry.html">Try&lt;std::set&lt;std::string&gt;</a>&gt; <a class="code" href="namespacecgroups.html#adabca75358eab66d19aaed528dd251d7">hierarchies</a>();</div><div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;</div><div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;</div><div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;<span class="comment">// Get an already mounted hierarchy that has &#39;subsystems&#39; attached.</span></div><div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;<span class="comment">// This function will return an error if we are unable to find the</span></div><div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;<span class="comment">// hierarchies or if we are unable to find if the subsystems are</span></div><div class="line"><a name="l00099"></a><span class="lineno">   99</
 span>&#160;<span class="comment">// mounted at a given hierarchy.</span></div><div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;<span class="comment">// @param subsystems Comma-separated subsystem names.</span></div><div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;<span class="comment">// @return Path to the hierarchy root, if a hierarchy with all the</span></div><div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;<span class="comment">//         given subsystems mounted exists.</span></div><div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;<span class="comment">//         None, if no such hierarchy exists.</span></div><div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;<span class="comment">//         Error, if the operation fails.</span></div><div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;<a class="code" href="classR
 esult.html">Result&lt;std::string&gt;</a> <a class="code" href="namespacecgroups.html#ad675453425dc290064c609351f2e3363">hierarchy</a>(<span class="keyword">const</span> std::string&amp; <a class="code" href="namespacecgroups.html#a43ff5aa5dec5f24b0a3620847e9dd6b6">subsystems</a>);</div><div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;</div><div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;</div><div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;<span class="comment">// Check whether all the given subsystems are enabled on the current machine.</span></div><div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;<span class="comment">// @param   subsystems  Comma-separated subsystem names.</span></div><div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;<span class="comment">// @return  True if all the given subsystems are enabled.</span></div><div class="
 line"><a name="l00111"></a><span class="lineno">  111</span>&#160;<span class="comment">//          False if any of the given subsystems is not enabled.</span></div><div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;<span class="comment">//          Error if something unexpected happens.</span></div><div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;<a class="code" href="classTry.html">Try&lt;bool&gt;</a> <a class="code" href="namespacecgroups.html#a549f051f3df2b570aef0ee2b806020e3">enabled</a>(<span class="keyword">const</span> std::string&amp; <a class="code" href="namespacecgroups.html#a43ff5aa5dec5f24b0a3620847e9dd6b6">subsystems</a>);</div><div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;</div><div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;</div><div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;<span class="comment">// Return true if any 
 of the given subsystems is currently attached to a</span></div><div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;<span class="comment">// hierarchy.</span></div><div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;<span class="comment">// @param   subsystems  Comma-separated subsystem names.</span></div><div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;<span class="comment">// @return  True if any of the given subsystems is being attached.</span></div><div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;<span class="comment">//          False if non of the given subsystems is being attached.</span></div><div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;<span class="comment">//          Error if something unexpected happens.</span></div><div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;<a class="code" href="classTry.html">Tr
 y&lt;bool&gt;</a> <a class="code" href="namespacecgroups.html#a56d29749c5955372d012171f5c9b1724">busy</a>(<span class="keyword">const</span> std::string&amp; <a class="code" href="namespacecgroups.html#a43ff5aa5dec5f24b0a3620847e9dd6b6">subsystems</a>);</div><div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;</div><div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;</div><div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;<span class="comment">// Return the currently enabled subsystems.</span></div><div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;<span class="comment">// @return  A set of enabled subsystem names if succeeds.</span></div><div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;<span class="comment">//          Error if unexpected happens.</span></div><div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;<a class="cod
 e" href="classTry.html">Try&lt;std::set&lt;std::string&gt;</a>&gt; <a class="code" href="namespacecgroups.html#a43ff5aa5dec5f24b0a3620847e9dd6b6">subsystems</a>();</div><div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;</div><div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;</div><div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;<span class="comment">// Return a set of subsystems that are attached to a given hierarchy. An error</span></div><div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;<span class="comment">// will be returned if the given hierarchy is not currently mounted with a</span></div><div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;<span class="comment">// cgroups virtual file system. As a result, this function can be used to check</span></div><div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;<span class=
 "comment">// whether a hierarchy is indeed a cgroups hierarchy root.</span></div><div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;<span class="comment">// @param   hierarchy   Path to the hierarchy root.</span></div><div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;<span class="comment">// @return  A set of attached subsystem names.</span></div><div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;<span class="comment">//          Error otherwise, (e.g., hierarchy does not exist or is not mounted).</span></div><div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;<a class="code" href="classTry.html">Try&lt;std::set&lt;std::string&gt;</a>&gt; <a class="code" href="namespacecgroups.html#a43ff5aa5dec5f24b0a3620847e9dd6b6">subsystems</a>(<span class="keyword">const</span> std::string&amp; <a class="code" href="namespacecgroups.html#ad675453425dc290064c609351f2e3363">hierarchy</a>);</
 div><div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;</div><div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;</div><div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;<span class="comment">// Mount a cgroups hierarchy and attach the given subsystems to</span></div><div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;<span class="comment">// it. This function will return error if the path given for the</span></div><div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;<span class="comment">// hierarchy already exists.  Also, the function will return error if</span></div><div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;<span class="comment">// a subsystem in the given subsystem list has already been attached</span></div><div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;<span class="comment">// to ano
 ther hierarchy. On success, the cgroups virtual file system</span></div><div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;<span class="comment">// will be mounted with the proper subsystems attached. On failure,</span></div><div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;<span class="comment">// mount will be retried the specified number of times.</span></div><div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;<span class="comment">// @param   hierarchy   Path to the hierarchy root.</span></div><div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;<span class="comment">// @param   subsystems  Comma-separated subsystem names.</span></div><div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;<span class="comment">// @param   retry       Number of times to retry mount.</span></div><div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#16
 0;<span class="comment">// @return  Some if the operation succeeds.</span></div><div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;<span class="comment">//          Error if the operation fails.</span></div><div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;<a class="code" href="classTry.html">Try&lt;Nothing&gt;</a> <a class="code" href="namespacecgroups.html#aa3c1a4d4d11cca392dc45ff363718fc1">mount</a>(</div><div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;    <span class="keyword">const</span> std::string&amp; <a class="code" href="namespacecgroups.html#ad675453425dc290064c609351f2e3363">hierarchy</a>,</div><div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;    <span class="keyword">const</span> std::string&amp; <a class="code" href="namespacecgroups.html#a43ff5aa5dec5f24b0a3620847e9dd6b6">subsystems</a>,</div><div class="line"><a name="l00156"></a><span class="lineno">  1
 56</span>&#160;    <span class="keywordtype">int</span> retry = 0);</div><div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;</div><div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;</div><div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;<span class="comment">// Unmount a hierarchy and remove the directory associated with</span></div><div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;<span class="comment">// it. This function will return error if the given hierarchy is not</span></div><div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;<span class="comment">// valid. Also, it will return error if the given hierarchy has</span></div><div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;<span class="comment">// any cgroups.</span></div><div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;<span class="comm
 ent">// @param   hierarchy   Path to the hierarchy root.</span></div><div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;<span class="comment">// @return  Some if the operation succeeds.</span></div><div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;<span class="comment">//          Error if the operation fails.</span></div><div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;<a class="code" href="classTry.html">Try&lt;Nothing&gt;</a> <a class="code" href="namespacecgroups.html#af94090b7b947fde2603c22b609650c9b">unmount</a>(<span class="keyword">const</span> std::string&amp; <a class="code" href="namespacecgroups.html#ad675453425dc290064c609351f2e3363">hierarchy</a>);</div><div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;</div><div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;</div><div class="line"><a name="l00169"></a><span class="lineno">  169</sp
 an>&#160;<span class="comment">// Returns true if the given hierarchy root is mounted as a cgroups</span></div><div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;<span class="comment">// virtual file system with the specified subsystems attached.</span></div><div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;<span class="comment">// @param   hierarchy   Path to the hierarchy root.</span></div><div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;<span class="comment">// @return  True if the given directory is a hierarchy root and all of the</span></div><div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;<span class="comment">//          specified subsystems are attached.</span></div><div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;<span class="comment">//          False if the directory is not a hierarchy (or doesn&#39;t exist)</span></div><div class="
 line"><a name="l00175"></a><span class="lineno">  175</span>&#160;<span class="comment">//          or some of the specified subsystems are not attached.</span></div><div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;<span class="comment">//          Error if the operation fails.</span></div><div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;<a class="code" href="classTry.html">Try&lt;bool&gt;</a> <a class="code" href="namespacecgroups.html#a379912fbd52d8dba056a7d94041a224e">mounted</a>(</div><div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;    <span class="keyword">const</span> std::string&amp; <a class="code" href="namespacecgroups.html#ad675453425dc290064c609351f2e3363">hierarchy</a>,</div><div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;    <span class="keyword">const</span> std::string&amp; <a class="code" href="namespacecgroups.html#a43ff5aa5dec5f24b0a3620847e9dd6b6"
 >subsystems</a> = <span class="stringliteral">&quot;&quot;</span>);</div><div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;</div><div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;</div><div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160;<span class="comment">// Create a cgroup under a given hierarchy. This function will return error if</span></div><div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;<span class="comment">// the given hierarchy is not valid.</span></div><div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;<span class="comment">// @param   hierarchy   Path to the hierarchy root.</span></div><div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;<span class="comment">// @param   cgroup      Path to the cgroup relative to the hierarchy root.</span></div><div class="line"><a name="l00186"></a><span class="lineno">  186
 </span>&#160;<span class="comment">// @param   recursive   Will create nested cgroups</span></div><div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;<span class="comment">// @return  Some if the operation succeeds.</span></div><div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;<span class="comment">//          Error if the operation fails.</span></div><div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160;<a class="code" href="classTry.html">Try&lt;Nothing&gt;</a> <a class="code" href="namespacecgroups.html#a2ecc89636706df947027a4c3c2100fbe">create</a>(</div><div class="line"><a name="l00190"></a><span class="lineno">  190</span>&#160;    <span class="keyword">const</span> std::string&amp; <a class="code" href="namespacecgroups.html#ad675453425dc290064c609351f2e3363">hierarchy</a>,</div><div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160;    <span class="keyword">const</span> std::
 string&amp; <a class="code" href="namespacecgroups_1_1named.html#a90339a144714dee1c97f9e34553ace0e">cgroup</a>,</div><div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;    <span class="keywordtype">bool</span> recursive = <span class="keyword">false</span>);</div><div class="line"><a name="l00193"></a><span class="lineno">  193</span>&#160;</div><div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#160;</div><div class="line"><a name="l00195"></a><span class="lineno">  195</span>&#160;<span class="comment">// Remove a cgroup under a given hierarchy. This function will return error if</span></div><div class="line"><a name="l00196"></a><span class="lineno">  196</span>&#160;<span class="comment">// the given hierarchy or the given cgroup is not valid. The cgroup will NOT be</span></div><div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;<span class="comment">// removed recursively. In other words, if the cgroup h
 as sub-cgroups inside,</span></div><div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160;<span class="comment">// the function will return error. Also, if any process is attached to the</span></div><div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160;<span class="comment">// given cgroup, the removal operation will also fail.</span></div><div class="line"><a name="l00200"></a><span class="lineno">  200</span>&#160;<span class="comment">// @param   hierarchy   Path to the hierarchy root.</span></div><div class="line"><a name="l00201"></a><span class="lineno">  201</span>&#160;<span class="comment">// @param   cgroup      Path to the cgroup relative to the hierarchy root.</span></div><div class="line"><a name="l00202"></a><span class="lineno">  202</span>&#160;<a class="code" href="classTry.html">Try&lt;Nothing&gt;</a> <span class="keyword">remove</span>(<span class="keyword">const</span> std::string&amp; <a class="code" href="namespace
 cgroups.html#ad675453425dc290064c609351f2e3363">hierarchy</a>, <span class="keyword">const</span> std::string&amp; <a class="code" href="namespacecgroups_1_1named.html#a90339a144714dee1c97f9e34553ace0e">cgroup</a>);</div><div class="line"><a name="l00203"></a><span class="lineno">  203</span>&#160;</div><div class="line"><a name="l00204"></a><span class="lineno">  204</span>&#160;</div><div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160;<span class="comment">// Returns true if the given cgroup under a given hierarchy exists.</span></div><div class="line"><a name="l00206"></a><span class="lineno">  206</span>&#160;<span class="comment">// @param   hierarchy   Path to the hierarchy root.</span></div><div class="line"><a name="l00207"></a><span class="lineno">  207</span>&#160;<span class="comment">// @param   cgroup      Path to the cgroup relative to the hierarchy root.</span></div><div class="line"><a name="l00208"></a><span class="lineno">  208</span>&#160
 ;<span class="comment">// @return  True if the cgroup exists.</span></div><div class="line"><a name="l00209"></a><span class="lineno">  209</span>&#160;<span class="comment">//          False if the cgroup does not exist.</span></div><div class="line"><a name="l00210"></a><span class="lineno">  210</span>&#160;<span class="comment">//          Error if the operation fails (i.e., hierarchy is not mounted).</span></div><div class="line"><a name="l00211"></a><span class="lineno">  211</span>&#160;<a class="code" href="classTry.html">Try&lt;bool&gt;</a> <a class="code" href="namespacecgroups.html#a8a1f39ed37d38f45bf997bbb2f6b791c">exists</a>(<span class="keyword">const</span> std::string&amp; hierarchy, <span class="keyword">const</span> std::string&amp; <a class="code" href="namespacecgroups_1_1named.html#a90339a144714dee1c97f9e34553ace0e">cgroup</a>);</div><div class="line"><a name="l00212"></a><span class="lineno">  212</span>&#160;</div><div class="line"><a name="l00213"></a><span c
 lass="lineno">  213</span>&#160;</div><div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160;<span class="comment">// Return all the cgroups under the given cgroup of a given hierarchy. By</span></div><div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160;<span class="comment">// default, it returns all the cgroups under the given hierarchy. This function</span></div><div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#160;<span class="comment">// will return error if the given hierarchy is not mounted or the cgroup does</span></div><div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160;<span class="comment">// not exist. We use a post-order walk here to ease the removal of cgroups.</span></div><div class="line"><a name="l00218"></a><span class="lineno">  218</span>&#160;<span class="comment">// @param   hierarchy   Path to the hierarchy root.</span></div><div class="line"><a name="l00219"></a>
 <span class="lineno">  219</span>&#160;<span class="comment">// @return  A vector of cgroup names.</span></div><div class="line"><a name="l00220"></a><span class="lineno">  220</span>&#160;<a class="code" href="classTry.html">Try&lt;std::vector&lt;std::string&gt;</a>&gt; <span class="keyword">get</span>(</div><div class="line"><a name="l00221"></a><span class="lineno">  221</span>&#160;    <span class="keyword">const</span> std::string&amp; <a class="code" href="namespacecgroups.html#ad675453425dc290064c609351f2e3363">hierarchy</a>,</div><div class="line"><a name="l00222"></a><span class="lineno">  222</span>&#160;    <span class="keyword">const</span> std::string&amp; <a class="code" href="namespacecgroups_1_1named.html#a90339a144714dee1c97f9e34553ace0e">cgroup</a> = <span class="stringliteral">&quot;/&quot;</span>);</div><div class="line"><a name="l00223"></a><span class="lineno">  223</span>&#160;</div><div class="line"><a name="l00224"></a><span class="lineno">  224</span>&#160;
 </div><div class="line"><a name="l00225"></a><span class="lineno">  225</span>&#160;<span class="comment">// Send the specified signal to all process in a cgroup.</span></div><div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;<span class="comment">// @param   hierarchy   Path to the hierarchy root.</span></div><div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160;<span class="comment">// @param   cgroup      Path to the cgroup relative to the hierarchy root.</span></div><div class="line"><a name="l00228"></a><span class="lineno">  228</span>&#160;<span class="comment">// @param   signal      The signal to send to all tasks within the cgroup.</span></div><div class="line"><a name="l00229"></a><span class="lineno">  229</span>&#160;<span class="comment">// @return  Some on success.</span></div><div class="line"><a name="l00230"></a><span class="lineno">  230</span>&#160;<span class="comment">//          Error if something unexpected h
 appens.</span></div><div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160;<a class="code" href="classTry.html">Try&lt;Nothing&gt;</a> <a class="code" href="namespacecgroups.html#ab75e1e2d1be63eec907bf12306a7c8a7">kill</a>(</div><div class="line"><a name="l00232"></a><span class="lineno">  232</span>&#160;    <span class="keyword">const</span> std::string&amp; hierarchy,</div><div class="line"><a name="l00233"></a><span class="lineno">  233</span>&#160;    <span class="keyword">const</span> std::string&amp; cgroup,</div><div class="line"><a name="l00234"></a><span class="lineno">  234</span>&#160;    <span class="keywordtype">int</span> signal);</div><div class="line"><a name="l00235"></a><span class="lineno">  235</span>&#160;</div><div class="line"><a name="l00236"></a><span class="lineno">  236</span>&#160;</div><div class="line"><a name="l00237"></a><span class="lineno">  237</span>&#160;<span class="comment">// Read a control file. Control files are used 
 to monitor and control cgroups.</span></div><div class="line"><a name="l00238"></a><span class="lineno">  238</span>&#160;<span class="comment">// This function will verify all the parameters. If the given hierarchy is not</span></div><div class="line"><a name="l00239"></a><span class="lineno">  239</span>&#160;<span class="comment">// properly mounted with appropriate subsystems, or the given cgroup is not</span></div><div class="line"><a name="l00240"></a><span class="lineno">  240</span>&#160;<span class="comment">// valid, or the given control file is not valid, the function will return</span></div><div class="line"><a name="l00241"></a><span class="lineno">  241</span>&#160;<span class="comment">// error.</span></div><div class="line"><a name="l00242"></a><span class="lineno">  242</span>&#160;<span class="comment">// @param   hierarchy   Path to the hierarchy root.</span></div><div class="line"><a name="l00243"></a><span class="lineno">  243</span>&#160;<span class="comment">/
 / @param   cgroup      Path to the cgroup relative to the hierarchy root.</span></div><div class="line"><a name="l00244"></a><span class="lineno">  244</span>&#160;<span class="comment">// @param   control     Name of the control file.</span></div><div class="line"><a name="l00245"></a><span class="lineno">  245</span>&#160;<span class="comment">// @return  The value read from the control file.</span></div><div class="line"><a name="l00246"></a><span class="lineno">  246</span>&#160;<a class="code" href="classTry.html">Try&lt;std::string&gt;</a> <a class="code" href="namespacecgroups.html#aa696e42fa4a13e922dee2d1f869146d2">read</a>(</div><div class="line"><a name="l00247"></a><span class="lineno">  247</span>&#160;    <span class="keyword">const</span> std::string&amp; hierarchy,</div><div class="line"><a name="l00248"></a><span class="lineno">  248</span>&#160;    <span class="keyword">const</span> std::string&amp; cgroup,</div><div class="line"><a name="l00249"></a><span class="li
 neno">  249</span>&#160;    <span class="keyword">const</span> std::string&amp; control);</div><div class="line"><a name="l00250"></a><span class="lineno">  250</span>&#160;</div><div class="line"><a name="l00251"></a><span class="lineno">  251</span>&#160;</div><div class="line"><a name="l00252"></a><span class="lineno">  252</span>&#160;<span class="comment">// Write a control file. Parameter checking is similar to read.</span></div><div class="line"><a name="l00253"></a><span class="lineno">  253</span>&#160;<span class="comment">// @param   hierarchy   Path to the hierarchy root.</span></div><div class="line"><a name="l00254"></a><span class="lineno">  254</span>&#160;<span class="comment">// @param   cgroup      Path to the cgroup relative to the hierarchy root.</span></div><div class="line"><a name="l00255"></a><span class="lineno">  255</span>&#160;<span class="comment">// @param   control     Name of the control file.</span></div><div class="line"><a name="l00256"></a><span 
 class="lineno">  256</span>&#160;<span class="comment">// @param   value       Value to be written.</span></div><div class="line"><a name="l00257"></a><span class="lineno">  257</span>&#160;<span class="comment">// @return  Some if the operation succeeds.</span></div><div class="line"><a name="l00258"></a><span class="lineno">  258</span>&#160;<span class="comment">//          Error if the operation fails.</span></div><div class="line"><a name="l00259"></a><span class="lineno">  259</span>&#160;<a class="code" href="classTry.html">Try&lt;Nothing&gt;</a> <a class="code" href="namespacecgroups.html#ad199dcd922eab26b23b7011c7e0ca34a">write</a>(</div><div class="line"><a name="l00260"></a><span class="lineno">  260</span>&#160;    <span class="keyword">const</span> std::string&amp; hierarchy,</div><div class="line"><a name="l00261"></a><span class="lineno">  261</span>&#160;    <span class="keyword">const</span> std::string&amp; cgroup,</div><div class="line"><a name="l00262"></a><span 
 class="lineno">  262</span>&#160;    <span class="keyword">const</span> std::string&amp; control,</div><div class="line"><a name="l00263"></a><span class="lineno">  263</span>&#160;    <span class="keyword">const</span> std::string&amp; value);</div><div class="line"><a name="l00264"></a><span class="lineno">  264</span>&#160;</div><div class="line"><a name="l00265"></a><span class="lineno">  265</span>&#160;</div><div class="line"><a name="l00266"></a><span class="lineno">  266</span>&#160;<span class="comment">// Check whether a control file is valid under a given cgroup and a given</span></div><div class="line"><a name="l00267"></a><span class="lineno">  267</span>&#160;<span class="comment">// hierarchy. This function will return error if the given hierarchy is not</span></div><div class="line"><a name="l00268"></a><span class="lineno">  268</span>&#160;<span class="comment">// properly mounted with appropriate subsystems, or the given cgroup does not</span></div><div class="lin
 e"><a name="l00269"></a><span class="lineno">  269</span>&#160;<span class="comment">// exist, or the control file does not exist.</span></div><div class="line"><a name="l00270"></a><span class="lineno">  270</span>&#160;<span class="comment">// @param   hierarchy   Path to the hierarchy root.</span></div><div class="line"><a name="l00271"></a><span class="lineno">  271</span>&#160;<span class="comment">// @param   cgroup      Path to the cgroup relative to the hierarchy root.</span></div><div class="line"><a name="l00272"></a><span class="lineno">  272</span>&#160;<span class="comment">// @param   control     Name of the control file.</span></div><div class="line"><a name="l00273"></a><span class="lineno">  273</span>&#160;<span class="comment">// @return  Some if the check succeeds.</span></div><div class="line"><a name="l00274"></a><span class="lineno">  274</span>&#160;<span class="comment">//          Error if the check fails.</span></div><div class="line"><a name="l00275"></a>
 <span class="lineno">  275</span>&#160;<a class="code" href="classTry.html">Try&lt;bool&gt;</a> <a class="code" href="namespacecgroups.html#a8a1f39ed37d38f45bf997bbb2f6b791c">exists</a>(</div><div class="line"><a name="l00276"></a><span class="lineno">  276</span>&#160;    <span class="keyword">const</span> std::string&amp; hierarchy,</div><div class="line"><a name="l00277"></a><span class="lineno">  277</span>&#160;    <span class="keyword">const</span> std::string&amp; cgroup,</div><div class="line"><a name="l00278"></a><span class="lineno">  278</span>&#160;    <span class="keyword">const</span> std::string&amp; control);</div><div class="line"><a name="l00279"></a><span class="lineno">  279</span>&#160;</div><div class="line"><a name="l00280"></a><span class="lineno">  280</span>&#160;</div><div class="line"><a name="l00281"></a><span class="lineno">  281</span>&#160;<span class="comment">// Return the set of process IDs in a given cgroup under a given hierarchy. It</span></div>
 <div class="line"><a name="l00282"></a><span class="lineno">  282</span>&#160;<span class="comment">// will return error if the given hierarchy or the given cgroup is not valid.</span></div><div class="line"><a name="l00283"></a><span class="lineno">  283</span>&#160;<span class="comment">// @param   hierarchy   Path to the hierarchy root.</span></div><div class="line"><a name="l00284"></a><span class="lineno">  284</span>&#160;<span class="comment">// @param   cgroup      Path to the cgroup relative to the hierarchy root.</span></div><div class="line"><a name="l00285"></a><span class="lineno">  285</span>&#160;<span class="comment">// @return  The set of process ids.</span></div><div class="line"><a name="l00286"></a><span class="lineno">  286</span>&#160;<a class="code" href="classTry.html">Try&lt;std::set&lt;pid_t&gt;</a>&gt; <a class="code" href="namespacecgroups.html#ad3e8800b1782f900cead465f7920dfa5">processes</a>(</div><div class="line"><a name="l00287"></a><span class="linen
 o">  287</span>&#160;    <span class="keyword">const</span> std::string&amp; hierarchy,</div><div class="line"><a name="l00288"></a><span class="lineno">  288</span>&#160;    <span class="keyword">const</span> std::string&amp; cgroup);</div><div class="line"><a name="l00289"></a><span class="lineno">  289</span>&#160;</div><div class="line"><a name="l00290"></a><span class="lineno">  290</span>&#160;</div><div class="line"><a name="l00291"></a><span class="lineno">  291</span>&#160;<span class="comment">// Return the set of thread IDs in a given cgroup under a given hierarchy. It</span></div><div class="line"><a name="l00292"></a><span class="lineno">  292</span>&#160;<span class="comment">// will return error if the given hierarchy or the given cgroup is not valid.</span></div><div class="line"><a name="l00293"></a><span class="lineno">  293</span>&#160;<span class="comment">// @param   hierarchy   Path to the hierarchy root.</span></div><div class="line"><a name="l00294"></a><span
  class="lineno">  294</span>&#160;<span class="comment">// @param   cgroup      Path to the cgroup relative to the hierarchy root.</span></div><div class="line"><a name="l00295"></a><span class="lineno">  295</span>&#160;<span class="comment">// @return  The set of thread ids.</span></div><div class="line"><a name="l00296"></a><span class="lineno">  296</span>&#160;<a class="code" href="classTry.html">Try&lt;std::set&lt;pid_t&gt;</a>&gt; <a class="code" href="namespacecgroups.html#a9fb61299862484ab2d1bd382ea109ca9">threads</a>(</div><div class="line"><a name="l00297"></a><span class="lineno">  297</span>&#160;    <span class="keyword">const</span> std::string&amp; hierarchy,</div><div class="line"><a name="l00298"></a><span class="lineno">  298</span>&#160;    <span class="keyword">const</span> std::string&amp; cgroup);</div><div class="line"><a name="l00299"></a><span class="lineno">  299</span>&#160;</div><div class="line"><a name="l00300"></a><span class="lineno">  300</span>&#16
 0;</div><div class="line"><a name="l00301"></a><span class="lineno">  301</span>&#160;<span class="comment">// Assign a given process specified by its pid to a given cgroup. All threads</span></div><div class="line"><a name="l00302"></a><span class="lineno">  302</span>&#160;<span class="comment">// in the pid&#39;s threadgroup will also be moved to the cgroup. This function</span></div><div class="line"><a name="l00303"></a><span class="lineno">  303</span>&#160;<span class="comment">// will return error if the given hierarchy or the given cgroup is not valid.</span></div><div class="line"><a name="l00304"></a><span class="lineno">  304</span>&#160;<span class="comment">// Also, it will return error if the pid has no process associated with it.</span></div><div class="line"><a name="l00305"></a><span class="lineno">  305</span>&#160;<span class="comment">// @param   hierarchy   Path to the hierarchy root.</span></div><div class="line"><a name="l00306"></a><span class="lineno">  306
 </span>&#160;<span class="comment">// @param   cgroup      Path to the cgroup relative to the hierarchy root.</span></div><div class="line"><a name="l00307"></a><span class="lineno">  307</span>&#160;<span class="comment">// @param   pid         The pid of the given process.</span></div><div class="line"><a name="l00308"></a><span class="lineno">  308</span>&#160;<span class="comment">// @return  Some if the operation succeeds.</span></div><div class="line"><a name="l00309"></a><span class="lineno">  309</span>&#160;<span class="comment">//          Error if the operation fails.</span></div><div class="line"><a name="l00310"></a><span class="lineno">  310</span>&#160;<a class="code" href="classTry.html">Try&lt;Nothing&gt;</a> <a class="code" href="namespacecgroups.html#a60fe712940bfb345dc346c1dbc622cf5">assign</a>(</div><div class="line"><a name="l00311"></a><span class="lineno">  311</span>&#160;    <span class="keyword">const</span> std::string&amp; hierarchy,</div><div class="lin
 e"><a name="l00312"></a><span class="lineno">  312</span>&#160;    <span class="keyword">const</span> std::string&amp; cgroup,</div><div class="line"><a name="l00313"></a><span class="lineno">  313</span>&#160;    <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a> pid);</div><div class="line"><a name="l00314"></a><span class="lineno">  314</span>&#160;</div><div class="line"><a name="l00315"></a><span class="lineno">  315</span>&#160;</div><div class="line"><a name="l00316"></a><span class="lineno">  316</span>&#160;<span class="comment">// Isolate a given process specified by its &#39;pid&#39; to a given cgroup</span></div><div class="line"><a name="l00317"></a><span class="lineno">  317</span>&#160;<span class="comment">// by both creating the cgroup (recursively) if it doesn&#39;t exist and</span></div><div class="line"><a name="l00318"></a><span class="lineno">  318</span>&#160;<span class="comment">// then assig
 ning the process to that cgroup.</span></div><div class="line"><a name="l00319"></a><span class="lineno">  319</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00320"></a><span class="lineno">  320</span>&#160;<span class="comment">// @param   hierarchy   Path to the hierarchy root.</span></div><div class="line"><a name="l00321"></a><span class="lineno">  321</span>&#160;<span class="comment">// @param   cgroup      Path to the cgroup relative to the hierarchy root.</span></div><div class="line"><a name="l00322"></a><span class="lineno">  322</span>&#160;<span class="comment">// @param   pid         The pid of the given process.</span></div><div class="line"><a name="l00323"></a><span class="lineno">  323</span>&#160;<span class="comment">// @return  Nothing if the operation succeeds.</span></div><div class="line"><a name="l00324"></a><span class="lineno">  324</span>&#160;<span class="comment">//          Error if the operation fails.</span></div><div cl
 ass="line"><a name="l00325"></a><span class="lineno">  325</span>&#160;<a class="code" href="classTry.html">Try&lt;Nothing&gt;</a> <a class="code" href="namespacecgroups.html#aceb245d6ea6362ac1c2b1247556179d6">isolate</a>(</div><div class="line"><a name="l00326"></a><span class="lineno">  326</span>&#160;    <span class="keyword">const</span> std::string&amp; hierarchy,</div><div class="line"><a name="l00327"></a><span class="lineno">  327</span>&#160;    <span class="keyword">const</span> std::string&amp; cgroup,</div><div class="line"><a name="l00328"></a><span class="lineno">  328</span>&#160;    <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a> pid);</div><div class="line"><a name="l00329"></a><span class="lineno">  329</span>&#160;</div><div class="line"><a name="l00330"></a><span class="lineno">  330</span>&#160;</div><div class="line"><a name="l00331"></a><span class="lineno"><a class="line" href="namespacecg
 roups_1_1event.html">  331</a></span>&#160;<span class="keyword">namespace </span>event {</div><div class="line"><a name="l00332"></a><span class="lineno">  332</span>&#160;</div><div class="line"><a name="l00333"></a><span class="lineno">  333</span>&#160;<span class="comment">// Listen on an event notifier and return a future which will become ready when</span></div><div class="line"><a name="l00334"></a><span class="lineno">  334</span>&#160;<span class="comment">// the certain event happens. This function will return a future failure if some</span></div><div class="line"><a name="l00335"></a><span class="lineno">  335</span>&#160;<span class="comment">// expected happens (e.g. the given hierarchy does not have the proper</span></div><div class="line"><a name="l00336"></a><span class="lineno">  336</span>&#160;<span class="comment">// subsystems attached).</span></div><div class="line"><a name="l00337"></a><span class="lineno">  337</span>&#160;<span class="comment">// @param   h
 ierarchy   Path to the hierarchy root.</span></div><div class="line"><a name="l00338"></a><span class="lineno">  338</span>&#160;<span class="comment">// @param   cgroup      Path to the cgroup relative to the hierarchy root.</span></div><div class="line"><a name="l00339"></a><span class="lineno">  339</span>&#160;<span class="comment">// @param   control     Name of the control file.</span></div><div class="line"><a name="l00340"></a><span class="lineno">  340</span>&#160;<span class="comment">// @param   args        Control specific arguments.</span></div><div class="line"><a name="l00341"></a><span class="lineno">  341</span>&#160;<span class="comment">// @return  A future which contains the value read from the file when ready.</span></div><div class="line"><a name="l00342"></a><span class="lineno">  342</span>&#160;<span class="comment">//          Error if something unexpected happens.</span></div><div class="line"><a name="l00343"></a><span class="lineno">  343</span>&#160;<a 
 class="code" href="classprocess_1_1Future.html">process::Future&lt;uint64_t&gt;</a> <a class="code" href="namespacecgroups_1_1event.html#a6f0a35d2d8f1381bc000001c94155393">listen</a>(</div><div class="line"><a name="l00344"></a><span class="lineno">  344</span>&#160;    <span class="keyword">const</span> std::string&amp; hierarchy,</div><div class="line"><a name="l00345"></a><span class="lineno">  345</span>&#160;    <span class="keyword">const</span> std::string&amp; cgroup,</div><div class="line"><a name="l00346"></a><span class="lineno">  346</span>&#160;    <span class="keyword">const</span> std::string&amp; control,</div><div class="line"><a name="l00347"></a><span class="lineno">  347</span>&#160;    <span class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;std::string&gt;</a>&amp; args = <a class="code" href="classOption.html">Option&lt;std::string&gt;::none</a>());</div><div class="line"><a name="l00348"></a><span class="lineno">  348</span>&#160;<
 /div><div class="line"><a name="l00349"></a><span class="lineno">  349</span>&#160;} <span class="comment">// namespace event {</span></div><div class="line"><a name="l00350"></a><span class="lineno">  350</span>&#160;</div><div class="line"><a name="l00351"></a><span class="lineno">  351</span>&#160;</div><div class="line"><a name="l00352"></a><span class="lineno">  352</span>&#160;<span class="comment">// Destroy a cgroup under a given hierarchy. It will also recursively</span></div><div class="line"><a name="l00353"></a><span class="lineno">  353</span>&#160;<span class="comment">// destroy any sub-cgroups. If the freezer subsystem is attached to</span></div><div class="line"><a name="l00354"></a><span class="lineno">  354</span>&#160;<span class="comment">// the hierarchy, we attempt to kill all tasks in a given cgroup,</span></div><div class="line"><a name="l00355"></a><span class="lineno">  355</span>&#160;<span class="comment">// before removing it. Otherwise, we just attempt
  to remove the</span></div><div class="line"><a name="l00356"></a><span class="lineno">  356</span>&#160;<span class="comment">// cgroup. This function will return an error if the given hierarchy</span></div><div class="line"><a name="l00357"></a><span class="lineno">  357</span>&#160;<span class="comment">// or the given cgroup does not exist or if we failed to destroy any</span></div><div class="line"><a name="l00358"></a><span class="lineno">  358</span>&#160;<span class="comment">// of the cgroups.</span></div><div class="line"><a name="l00359"></a><span class="lineno">  359</span>&#160;<span class="comment">// NOTE: If cgroup is &quot;/&quot; (default), all cgroups under the</span></div><div class="line"><a name="l00360"></a><span class="lineno">  360</span>&#160;<span class="comment">// hierarchy are destroyed.</span></div><div class="line"><a name="l00361"></a><span class="lineno">  361</span>&#160;<span class="comment">// TODO(vinod): Add support for killing tasks when freez
 er subsystem</span></div><div class="line"><a name="l00362"></a><span class="lineno">  362</span>&#160;<span class="comment">// is not present.</span></div><div class="line"><a name="l00363"></a><span class="lineno">  363</span>&#160;<span class="comment">// @param   hierarchy Path to the hierarchy root.</span></div><div class="line"><a name="l00364"></a><span class="lineno">  364</span>&#160;<span class="comment">// @param   cgroup      Path to the cgroup relative to the hierarchy root.</span></div><div class="line"><a name="l00365"></a><span class="lineno">  365</span>&#160;<span class="comment">// @return  A future which will become ready when the operation is done.</span></div><div class="line"><a name="l00366"></a><span class="lineno">  366</span>&#160;<span class="comment">//          Error if something unexpected happens.</span></div><div class="line"><a name="l00367"></a><span class="lineno">  367</span>&#160;<a class="code" href="classprocess_1_1Future.html">process::Future
 &lt;Nothing&gt;</a> <a class="code" href="namespacecgroups.html#aff40863260825f6176d8195102a0a47f">destroy</a>(</div><div class="line"><a name="l00368"></a><span class="lineno">  368</span>&#160;    <span class="keyword">const</span> std::string&amp; hierarchy,</div><div class="line"><a name="l00369"></a><span class="lineno">  369</span>&#160;    <span class="keyword">const</span> std::string&amp; cgroup = <span class="stringliteral">&quot;/&quot;</span>);</div><div class="line"><a name="l00370"></a><span class="lineno">  370</span>&#160;</div><div class="line"><a name="l00371"></a><span class="lineno">  371</span>&#160;</div><div class="line"><a name="l00372"></a><span class="lineno">  372</span>&#160;<span class="comment">// Destroy a cgroup under a given hierarchy. This is a convenience</span></div><div class="line"><a name="l00373"></a><span class="lineno">  373</span>&#160;<span class="comment">// function which wraps the cgroups::destroy() to add a timeout: if</span></div><div
  class="line"><a name="l00374"></a><span class="lineno">  374</span>&#160;<span class="comment">// the cgroup(s) cannot be destroyed after timeout the operation will</span></div><div class="line"><a name="l00375"></a><span class="lineno">  375</span>&#160;<span class="comment">// be discarded.</span></div><div class="line"><a name="l00376"></a><span class="lineno">  376</span>&#160;<a class="code" href="classprocess_1_1Future.html">process::Future&lt;Nothing&gt;</a> <a class="code" href="namespacecgroups.html#aff40863260825f6176d8195102a0a47f">destroy</a>(</div><div class="line"><a name="l00377"></a><span class="lineno">  377</span>&#160;    <span class="keyword">const</span> std::string&amp; hierarchy,</div><div class="line"><a name="l00378"></a><span class="lineno">  378</span>&#160;    <span class="keyword">const</span> std::string&amp; cgroup,</div><div class="line"><a name="l00379"></a><span class="lineno">  379</span>&#160;    <span class="keyword">const</span> <a class="code"
  href="classDuration.html">Duration</a>&amp; timeout);</div><div class="line"><a name="l00380"></a><span class="lineno">  380</span>&#160;</div><div class="line"><a name="l00381"></a><span class="lineno">  381</span>&#160;</div><div class="line"><a name="l00382"></a><span class="lineno">  382</span>&#160;<span class="comment">// Cleanup the hierarchy, by first destroying all the underlying</span></div><div class="line"><a name="l00383"></a><span class="lineno">  383</span>&#160;<span class="comment">// cgroups, unmounting the hierarchy and deleting the mount point.</span></div><div class="line"><a name="l00384"></a><span class="lineno">  384</span>&#160;<span class="comment">// @param   hierarchy Path to the hierarchy root.</span></div><div class="line"><a name="l00385"></a><span class="lineno">  385</span>&#160;<span class="comment">// @return  A future which will become ready when the operation is done.</span></div><div class="line"><a name="l00386"></a><span class="lineno">  386<
 /span>&#160;<span class="comment">//          Error if something unexpected happens.</span></div><div class="line"><a name="l00387"></a><span class="lineno">  387</span>&#160;<a class="code" href="classprocess_1_1Future.html">process::Future&lt;bool&gt;</a> <a class="code" href="namespacecgroups.html#a12d210f286e5fcf7993c0c90b9459606">cleanup</a>(<span class="keyword">const</span> std::string&amp; hierarchy);</div><div class="line"><a name="l00388"></a><span class="lineno">  388</span>&#160;</div><div class="line"><a name="l00389"></a><span class="lineno">  389</span>&#160;</div><div class="line"><a name="l00390"></a><span class="lineno">  390</span>&#160;<span class="comment">// Returns the stat information from the given file.</span></div><div class="line"><a name="l00391"></a><span class="lineno">  391</span>&#160;<span class="comment">// @param   hierarchy   Path to the hierarchy root.</span></div><div class="line"><a name="l00392"></a><span class="lineno">  392</span>&#160;<spa
 n class="comment">// @param   cgroup      Path to the cgroup relative to the hierarchy root.</span></div><div class="line"><a name="l00393"></a><span class="lineno">  393</span>&#160;<span class="comment">// @param   file        The stat file to read from. (Ex: &quot;memory.stat&quot;).</span></div><div class="line"><a name="l00394"></a><span class="lineno">  394</span>&#160;<span class="comment">// @return  The stat information parsed from the file.</span></div><div class="line"><a name="l00395"></a><span class="lineno">  395</span>&#160;<span class="comment">//          Error if reading or parsing fails.</span></div><div class="line"><a name="l00396"></a><span class="lineno">  396</span>&#160;<span class="comment">// TODO(bmahler): Consider namespacing stat for each subsystem (e.g.</span></div><div class="line"><a name="l00397"></a><span class="lineno">  397</span>&#160;<span class="comment">// cgroups::memory::stat and cgroups::cpuacct::stat).</span></div><div class="line"><a nam
 e="l00398"></a><span class="lineno">  398</span>&#160;<a class="code" href="classTry.html">Try&lt;hashmap&lt;std::string, uint64_t&gt;</a>&gt; <a class="code" href="namespacecgroups.html#a78e3c7ca2e422779908eec45f859d757">stat</a>(</div><div class="line"><a name="l00399"></a><span class="lineno">  399</span>&#160;    <span class="keyword">const</span> std::string&amp; hierarchy,</div><div class="line"><a name="l00400"></a><span class="lineno">  400</span>&#160;    <span class="keyword">const</span> std::string&amp; cgroup,</div><div class="line"><a name="l00401"></a><span class="lineno">  401</span>&#160;    <span class="keyword">const</span> std::string&amp; <a class="code" href="namespacemesos_1_1uri.html#a0a3b30c1eb427c4053aaef120b1f453c">file</a>);</div><div class="line"><a name="l00402"></a><span class="lineno">  402</span>&#160;</div><div class="line"><a name="l00403"></a><span class="lineno">  403</span>&#160;</div><div class="line"><a name="l00404"></a><span class="lineno"> 
  404</span>&#160;<span class="comment">// Blkio subsystem.</span></div><div class="line"><a name="l00405"></a><span class="lineno"><a class="line" href="namespacecgroups_1_1blkio.html">  405</a></span>&#160;<span class="keyword">namespace </span>blkio {</div><div class="line"><a name="l00406"></a><span class="lineno">  406</span>&#160;</div><div class="line"><a name="l00407"></a><span class="lineno">  407</span>&#160;<span class="comment">// Returns the cgroup that the specified pid is a member of within the</span></div><div class="line"><a name="l00408"></a><span class="lineno">  408</span>&#160;<span class="comment">// hierarchy that the &#39;blkio&#39; subsystem is mounted, or None if the subsystem</span></div><div class="line"><a name="l00409"></a><span class="lineno">  409</span>&#160;<span class="comment">// is not mounted or the pid is not a member of a cgroup.</span></div><div class="line"><a name="l00410"></a><span class="lineno">  410</span>&#160;<a class="code" href="clas
 sResult.html">Result&lt;std::string&gt;</a> <a class="code" href="namespacecgroups_1_1named.html#a90339a144714dee1c97f9e34553ace0e">cgroup</a>(<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a> pid);</div><div class="line"><a name="l00411"></a><span class="lineno">  411</span>&#160;</div><div class="line"><a name="l00412"></a><span class="lineno">  412</span>&#160;</div><div class="line"><a name="l00413"></a><span class="lineno">  413</span>&#160;<span class="comment">// Wrapper class for dev_t.</span></div><div class="line"><a name="l00414"></a><span class="lineno"><a class="line" href="classcgroups_1_1blkio_1_1Device.html">  414</a></span>&#160;<span class="keyword">class </span><a class="code" href="classcgroups_1_1blkio_1_1Device.html">Device</a></div><div class="line"><a name="l00415"></a><span class="lineno">  415</span>&#160;{</div><div class="line"><a name="l00416"></a><span class="lineno">  416</span>&#160;<
 span class="keyword">public</span>:</div><div class="line"><a name="l00417"></a><span class="lineno"><a class="line" href="classcgroups_1_1blkio_1_1Device.html#a0f1f2e35fe5525c879b74514ded15871">  417</a></span>&#160;  constexpr <a class="code" href="classcgroups_1_1blkio_1_1Device.html#a0f1f2e35fe5525c879b74514ded15871">Device</a>(dev_t device) : value(device) {}</div><div class="line"><a name="l00418"></a><span class="lineno">  418</span>&#160;  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> getMajor() <span class="keyword">const</span>;</div><div class="line"><a name="l00419"></a><span class="lineno">  419</span>&#160;  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> getMinor() <span class="keyword">const</span>;</div><div class="line"><a name="l00420"></a><span class="lineno">  420</span>&#160;</div><div class="line"><a name="l00421"></a><span class="lineno"><a class="line" href="classcgroups_1_1blkio_1_1Device.html#
 a578d8a8719fa30c1284c30fb764727a8">  421</a></span>&#160;  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classcgroups_1_1blkio_1_1Device.html#a578d8a8719fa30c1284c30fb764727a8">operator==</a>(<span class="keyword">const</span> <a class="code" href="classcgroups_1_1blkio_1_1Device.html">Device</a>&amp; that)<span class="keyword"> const</span></div><div class="line"><a name="l00422"></a><span class="lineno">  422</span>&#160;<span class="keyword">  </span>{</div><div class="line"><a name="l00423"></a><span class="lineno">  423</span>&#160;    <span class="keywordflow">return</span> value == that.value;</div><div class="line"><a name="l00424"></a><span class="lineno">  424</span>&#160;  }</div><div class="line"><a name="l00425"></a><span class="lineno">  425</span>&#160;</div><div class="line"><a name="l00426"></a><span class="lineno"><a class="line" href="classcgroups_1_1blkio_1_1Device.html#a95281e7fd14131a91a6e4c20a4a361c5">  426</a>
 </span>&#160;  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classcgroups_1_1blkio_1_1Device.html#a95281e7fd14131a91a6e4c20a4a361c5">operator!=</a>(<span class="keyword">const</span> <a class="code" href="classcgroups_1_1blkio_1_1Device.html">Device</a>&amp; that)<span class="keyword"> const</span></div><div class="line"><a name="l00427"></a><span class="lineno">  427</span>&#160;<span class="keyword">  </span>{</div><div class="line"><a name="l00428"></a><span class="lineno">  428</span>&#160;    <span class="keywordflow">return</span> value != that.value;</div><div class="line"><a name="l00429"></a><span class="lineno">  429</span>&#160;  }</div><div class="line"><a name="l00430"></a><span class="lineno">  430</span>&#160;</div><div class="line"><a name="l00431"></a><span class="lineno"><a class="line" href="classcgroups_1_1blkio_1_1Device.html#a7932aa078a2e641999014f433e5c6acc">  431</a></span>&#160;  <span class="keyword">inline<
 /span> <span class="keyword">operator</span> dev_t()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> value; }</div><div class="line"><a name="l00432"></a><span class="lineno">  432</span>&#160;</div><div class="line"><a name="l00433"></a><span class="lineno">  433</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00434"></a><span class="lineno">  434</span>&#160;  <span class="keyword">static</span> <a class="code" href="classTry.html">Try&lt;Device&gt;</a> <a class="code" href="namespaceappc_1_1spec.html#a2107ae129dd83fbd20b22195247f16b5">parse</a>(<span class="keyword">const</span> std::string&amp; s);</div><div class="line"><a name="l00435"></a><span class="lineno">  435</span>&#160;</div><div class="line"><a name="l00436"></a><span class="lineno">  436</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00437"></a><span class="lineno">  437</span>&#160;  dev_t value;</div><div class="line
 "><a name="l00438"></a><span class="lineno">  438</span>&#160;};</div><div class="line"><a name="l00439"></a><span class="lineno">  439</span>&#160;</div><div class="line"><a name="l00440"></a><span class="lineno">  440</span>&#160;</div><div class="line"><a name="l00441"></a><span class="lineno"><a class="line" href="namespacecgroups_1_1blkio.html#a350b1eb57318afaea7700ab7786b55ef">  441</a></span>&#160;<span class="keyword">enum class</span> <a class="code" href="namespacecgroups_1_1blkio.html#a350b1eb57318afaea7700ab7786b55ef">Operation</a> {</div><div class="line"><a name="l00442"></a><span class="lineno">  442</span>&#160;  <a class="code" href="namespacecgroups_1_1blkio.html#a350b1eb57318afaea7700ab7786b55efa3af22b59f4641bc5501998297f9ac70d">TOTAL</a>,</div><div class="line"><a name="l00443"></a><span class="lineno">  443</span>&#160;  READ,</div><div class="line"><a name="l00444"></a><span class="lineno">  444</span>&#160;  WRITE,</div><div class="line"><a name="l00445"></a><
 span class="lineno">  445</span>&#160;  <a class="code" href="namespacecgroups_1_1blkio.html#a350b1eb57318afaea7700ab7786b55efa274ccef15a21e829d03293a6fd1974f3">SYNC</a>,</div><div class="line"><a name="l00446"></a><span class="lineno">  446</span>&#160;  <a class="code" href="namespacecgroups_1_1blkio.html#a350b1eb57318afaea7700ab7786b55efabe553330beb7b3d994656e0a4e66cd96">ASYNC</a>,</div><div class="line"><a name="l00447"></a><span class="lineno">  447</span>&#160;};</div><div class="line"><a name="l00448"></a><span class="lineno">  448</span>&#160;</div><div class="line"><a name="l00449"></a><span class="lineno">  449</span>&#160;</div><div class="line"><a name="l00450"></a><span class="lineno">  450</span>&#160;<span class="comment">// Entry for a blkio file. The format of each entry can either be:</span></div><div class="line"><a name="l00451"></a><span class="lineno">  451</span>&#160;<span class="comment">// 1. &lt;value&gt;</span></div><div class="line"><a name="l00452"></a>
 <span class="lineno">  452</span>&#160;<span class="comment">// 2. &lt;dev&gt; &lt;value&gt;</span></div><div class="line"><a name="l00453"></a><span class="lineno">  453</span>&#160;<span class="comment">// 3. &lt;dev&gt; &lt;op&gt; &lt;value&gt;</span></div><div class="line"><a name="l00454"></a><span class="lineno">  454</span>&#160;<span class="comment">// 4. &lt;op&gt; &lt;value&gt;</span></div><div class="line"><a name="l00455"></a><span class="lineno">  455</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00456"></a><span class="lineno">  456</span>&#160;<span class="comment">// For details:</span></div><div class="line"><a name="l00457"></a><span class="lineno">  457</span>&#160;<span class="comment">// https://www.kernel.org/doc/Documentation/cgroup-v1/blkio-controller.txt</span></div><div class="line"><a name="l00458"></a><span class="lineno"><a class="line" href="structcgroups_1_1blkio_1_1Value.html">  458</a></span>&#160;<span class="keyword">
 struct </span><a class="code" href="structcgroups_1_1blkio_1_1Value.html">Value</a></div><div class="line"><a name="l00459"></a><span class="lineno">  459</span>&#160;{</div><div class="line"><a name="l00460"></a><span class="lineno"><a class="line" href="structcgroups_1_1blkio_1_1Value.html#a19fac9c72340cc635cb386052e82c157">  460</a></span>&#160;  <a class="code" href="classOption.html">Option&lt;Device&gt;</a> <a class="code" href="structcgroups_1_1blkio_1_1Value.html#a19fac9c72340cc635cb386052e82c157">device</a>;</div><div class="line"><a name="l00461"></a><span class="lineno"><a class="line" href="structcgroups_1_1blkio_1_1Value.html#a579f026b9f741a2c33ebfc0ee7ff48c8">  461</a></span>&#160;  <a class="code" href="classOption.html">Option&lt;Operation&gt;</a> <a class="code" href="structcgroups_1_1blkio_1_1Value.html#a579f026b9f741a2c33ebfc0ee7ff48c8">op</a>;</div><div class="line"><a name="l00462"></a><span class="lineno"><a class="line" href="structcgroups_1_1blkio_1_1Value.ht
 ml#ae00adee746b63d26ff3f3be95dddbbb8">  462</a></span>&#160;  uint64_t <a class="code" href="structcgroups_1_1blkio_1_1Value.html#ae00adee746b63d26ff3f3be95dddbbb8">value</a>;</div><div class="line"><a name="l00463"></a><span class="lineno">  463</span>&#160;</div><div class="line"><a name="l00464"></a><span class="lineno">  464</span>&#160;  <span class="keyword">static</span> <a class="code" href="classTry.html">Try&lt;Value&gt;</a> <a class="code" href="namespaceappc_1_1spec.html#a2107ae129dd83fbd20b22195247f16b5">parse</a>(<span class="keyword">const</span> std::string&amp; s);</div><div class="line"><a name="l00465"></a><span class="lineno">  465</span>&#160;};</div><div class="line"><a name="l00466"></a><span class="lineno">  466</span>&#160;</div><div class="line"><a name="l00467"></a><span class="lineno">  467</span>&#160;</div><div class="line"><a name="l00468"></a><span class="lineno"><a class="line" href="namespacecgroups_1_1blkio_1_1cfq.html">  468</a></span>&#160;<span 
 class="keyword">namespace </span>cfq {</div><div class="line"><a name="l00469"></a><span class="lineno">  469</span>&#160;</div><div class="line"><a name="l00470"></a><span class="lineno">  470</span>&#160;<a class="code" href="classTry.html">Try&lt;std::vector&lt;Value&gt;</a>&gt; <a class="code" href="namespacecgroups_1_1blkio_1_1cfq.html#abe4d7d69fdf7ca70fb30c6cd34a953e4">time</a>(</div><div class="line"><a name="l00471"></a><span class="lineno">  471</span>&#160;    <span class="keyword">const</span> std::string&amp; hierarchy,</div><div class="line"><a name="l00472"></a><span class="lineno">  472</span>&#160;    <span class="keyword">const</span> std::string&amp; cgroup);</div><div class="line"><a name="l00473"></a><span class="lineno">  473</span>&#160;</div><div class="line"><a name="l00474"></a><span class="lineno">  474</span>&#160;</div><div class="line"><a name="l00475"></a><span class="lineno">  475</span>&#160;<a class="code" href="classTry.html">Try&lt;std::vector&lt;V
 alue&gt;</a>&gt; <a class="code" href="namespacecgroups_1_1blkio_1_1cfq.html#a5a9522fa8b40ec2eda4194dddacc1994">time_recursive</a>(</div><div class="line"><a name="l00476"></a><span class="lineno">  476</span>&#160;    <span class="keyword">const</span> std::string&amp; hierarchy,</div><div class="line"><a name="l00477"></a><span class="lineno">  477</span>&#160;    <span class="keyword">const</span> std::string&amp; cgroup);</div><div class="line"><a name="l00478"></a><span class="lineno">  478</span>&#160;</div><div class="line"><a name="l00479"></a><span class="lineno">  479</span>&#160;</div><div class="line"><a name="l00480"></a><span class="lineno">  480</span>&#160;<a class="code" href="classTry.html">Try&lt;std::vector&lt;Value&gt;</a>&gt; <a class="code" href="namespacecgroups_1_1blkio_1_1cfq.html#ae20bcd7db659e6a7e6e6f78e8c0dfce5">sectors</a>(</div><div class="line"><a name="l00481"></a><span class="lineno">  481</span>&#160;    <span class="keyword">const</span> std::stri
 ng&amp; hierarchy,</div><div class="line"><a name="l00482"></a><span class="lineno">  482</span>&#160;    <span class="keyword">const</span> std::string&amp; cgroup);</div><div class="line"><a name="l00483"></a><span class="lineno">  483</span>&#160;</div><div class="line"><a name="l00484"></a><span class="lineno">  484</span>&#160;</div><div class="line"><a name="l00485"></a><span class="lineno">  485</span>&#160;<a class="code" href="classTry.html">Try&lt;std::vector&lt;Value&gt;</a>&gt; <a class="code" href="namespacecgroups_1_1blkio_1_1cfq.html#a93d74b08c57a574b030b284a69665b09">sectors_recursive</a>(</div><div class="line"><a name="l00486"></a><span class="lineno">  486</span>&#160;    <span class="keyword">const</span> std::string&amp; hierarchy,</div><div class="line"><a name="l00487"></a><span class="lineno">  487</span>&#160;    <span class="keyword">const</span> std::string&amp; cgroup);</div><div class="line"><a name="l00488"></a><span class="lineno">  488</span>&#160;</d
 iv><div class="line"><a name="l00489"></a><span class="lineno">  489</span>&#160;</div><div class="line"><a name="l00490"></a><span class="lineno">  490</span>&#160;<span class="comment">// Returns the total number of bios/requests merged into requests</span></div><div class="line"><a name="l00491"></a><span class="lineno">  491</span>&#160;<span class="comment">// belonging to the given cgroup from blkio.io_merged.</span></div><div class="line"><a name="l00492"></a><span class="lineno">  492</span>&#160;<a class="code" href="classTry.html">Try&lt;std::vector&lt;Value&gt;</a>&gt; <a class="code" href="namespacecgroups_1_1blkio_1_1cfq.html#aadb0e71d712040f776c17f46ae932f1e">io_merged</a>(</div><div class="line"><a name="l00493"></a><span class="lineno">  493</span>&#160;    <span class="keyword">const</span> std::string&amp; hierarchy,</div><div class="line"><a name="l00494"></a><span class="lineno">  494</span>&#160;    <span class="keyword">const</span> std::string&amp; cgroup);</d
 iv><div class="line"><a name="l00495"></a><span class="lineno">  495</span>&#160;</div><div class="line"><a name="l00496"></a><span class="lineno">  496</span>&#160;</div><div class="line"><a name="l00497"></a><span class="lineno">  497</span>&#160;<span class="comment">// Returns the total number of bios/requests merged into requests</span></div><div class="line"><a name="l00498"></a><span class="lineno">  498</span>&#160;<span class="comment">// belonging to the given cgroup and all its descendants from</span></div><div class="line"><a name="l00499"></a><span class="lineno">  499</span>&#160;<span class="comment">// blkio.io_merged_recursive.</span></div><div class="line"><a name="l00500"></a><span class="lineno">  500</span>&#160;<a class="code" href="classTry.html">Try&lt;std::vector&lt;Value&gt;</a>&gt; <a class="code" href="namespacecgroups_1_1blkio_1_1cfq.html#a2a52363ef2582fd4c35b89fd798af0b4">io_merged_recursive</a>(</div><div class="line"><a name="l00501"></a><span class="
 lineno">  501</span>&#160;    <span class="keyword">const</span> std::string&amp; hierarchy,</div><div class="line"><a name="l00502"></a><span class="lineno">  502</span>&#160;    <span class="keyword">const</span> std::string&amp; cgroup);</div><div class="line"><a name="l00503"></a><span class="lineno">  503</span>&#160;</div><div class="line"><a name="l00504"></a><span class="lineno">  504</span>&#160;</div><div class="line"><a name="l00505"></a><span class="lineno">  505</span>&#160;<span class="comment">// Returns the total number of requests queued up in the given</span></div><div class="line"><a name="l00506"></a><span class="lineno">  506</span>&#160;<span class="comment">// cgroup from blkio.io_queued.</span></div><div class="line"><a name="l00507"></a><span class="lineno">  507</span>&#160;<a class="code" href="classTry.html">Try&lt;std::vector&lt;Value&gt;</a>&gt; <a class="code" href="namespacecgroups_1_1blkio_1_1cfq.html#a7b61635cf26f0d996aa248742a804a08">io_queued</a>(
 </div><div class="line"><a name="l00508"></a><span class="lineno">  508</span>&#160;    <span class="keyword">const</span> std::string&amp; hierarchy,</div><div class="line"><a name="l00509"></a><span class="lineno">  509</span>&#160;    <span class="keyword">const</span> std::string&amp; cgroup);</div><div class="line"><a name="l00510"></a><span class="lineno">  510</span>&#160;</div><div class="line"><a name="l00511"></a><span class="lineno">  511</span>&#160;</div><div class="line"><a name="l00512"></a><span class="lineno">  512</span>&#160;<span class="comment">// Returns the total number of requests queued up in the given</span></div><div class="line"><a name="l00513"></a><span class="lineno">  513</span>&#160;<span class="comment">// cgroup and all its descendants from blkio.io_queued_recursive.</span></div><div class="line"><a name="l00514"></a><span class="lineno">  514</span>&#160;<a class="code" href="classTry.html">Try&lt;std::vector&lt;Value&gt;</a>&gt; <a class="code" h
 ref="namespacecgroups_1_1blkio_1_1cfq.html#acd59264959c762cda013b9d7117b1c6d">io_queued_recursive</a>(</div><div class="line"><a name="l00515"></a><span class="lineno">  515</span>&#160;    <span class="keyword">const</span> std::string&amp; hierarchy,</div><div class="line"><a name="l00516"></a><span class="lineno">  516</span>&#160;    <span class="keyword">const</span> std::string&amp; cgroup);</div><div class="line"><a name="l00517"></a><span class="lineno">  517</span>&#160;</div><div class="line"><a name="l00518"></a><span class="lineno">  518</span>&#160;</div><div class="line"><a name="l00519"></a><span class="lineno">  519</span>&#160;<span class="comment">// Returns the number of bytes transferred to/from the disk by</span></div><div class="line"><a name="l00520"></a><span class="lineno">  520</span>&#160;<span class="comment">// the given cgroup from blkio.io_service_bytes.</span></div><div class="line"><a name="l00521"></a><span class="lineno">  521</span>&#160;<a class=
 "code" href="classTry.html">Try&lt;std::vector&lt;Value&gt;</a>&gt; <a class="code" href="namespacecgroups_1_1blkio_1_1throttle.html#a3b600e20f0fcfbc89dfb9e30b2000d88">io_service_bytes</a>(</div><div class="line"><a name="l00522"></a><span class="lineno">  522</span>&#160;    <span class="keyword">const</span> std::string&amp; hierarchy,</div><div class="line"><a name="l00523"></a><span class="lineno">  523</span>&#160;    <span class="keyword">const</span> std::string&amp; cgroup);</div><div class="line"><a name="l00524"></a><span class="lineno">  524</span>&#160;</div><div class="line"><a name="l00525"></a><span class="lineno">  525</span>&#160;</div><div class="line"><a name="l00526"></a><span class="lineno">  526</span>&#160;<span class="comment">// Returns the number of bytes transferred to/from the disk by</span></div><div class="line"><a name="l00527"></a><span class="lineno">  527</span>&#160;<span class="comment">// the given cgroup and all its descendants from</span></div>
 <div class="line"><a name="l00528"></a><span class="lineno">  528</span>&#160;<span class="comment">// blkio.io_service_bytes_recursive.</span></div><div class="line"><a name="l00529"></a><span class="lineno">  529</span>&#160;<a class="code" href="classTry.html">Try&lt;std::vector&lt;Value&gt;</a>&gt; <a class="code" href="namespacecgroups_1_1blkio_1_1cfq.html#a1ee0eb51db62f640e7a63833698170b2">io_service_bytes_recursive</a>(</div><div class="line"><a name="l00530"></a><span class="lineno">  530</span>&#160;    <span class="keyword">const</span> std::string&amp; hierarchy,</div><div class="line"><a name="l00531"></a><span class="lineno">  531</span>&#160;    <span class="keyword">const</span> std::string&amp; cgroup);</div><div class="line"><a name="l00532"></a><span class="lineno">  532</span>&#160;</div><div class="line"><a name="l00533"></a><span class="lineno">  533</span>&#160;</div><div class="line"><a name="l00534"></a><span class="lineno">  534</span>&#160;<span class="comm
 ent">// Returns the total amount of time between request dispatch and</span></div><div class="line"><a name="l00535"></a><span class="lineno">  535</span>&#160;<span class="comment">// completion by the IOs done by the given cgroup from</span></div><div class="line"><a name="l00536"></a><span class="lineno">  536</span>&#160;<span class="comment">// blkio.io_service_time.</span></div><div class="line"><a name="l00537"></a><span class="lineno">  537</span>&#160;<a class="code" href="classTry.html">Try&lt;std::vector&lt;Value&gt;</a>&gt; <a class="code" href="namespacecgroups_1_1blkio_1_1cfq.html#ab2d80247957e550deaafc377f4574fe2">io_service_time</a>(</div><div class="line"><a name="l00538"></a><span class="lineno">  538</span>&#160;    <span class="keyword">const</span> std::string&amp; hierarchy,</div><div class="line"><a name="l00539"></a><span class="lineno">  539</span>&#160;    <span class="keyword">const</span> std::string&amp; cgroup);</div><div class="line"><a name="l00540"><
 /a><span class="lineno">  540</span>&#160;</div><div class="line"><a name="l00541"></a><span class="lineno">  541</span>&#160;</div><div class="line"><a name="l00542"></a><span c

<TRUNCATED>

[08/50] mesos-site git commit: Updated the website built from mesos SHA: 7c9c72d.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/subprocess__windows_8hpp.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/subprocess__windows_8hpp.html b/content/api/latest/c++/subprocess__windows_8hpp.html
deleted file mode 100644
index c6e1a69..0000000
--- a/content/api/latest/c++/subprocess__windows_8hpp.html
+++ /dev/null
@@ -1,97 +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: 3rdparty/libprocess/src/subprocess_windows.hpp File 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&#160;Page</span></a></li>
-      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><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="files.html"><span>File&#160;List</span></a></li>
-      <li><a href="globals.html"><span>File&#160;Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_8cab8f464681f7cc51cee77e79a434cd.html">3rdparty</a></li><li class="navelem"><a class="el" href="dir_043a76de98701f9bddf61b5e98f305ff.html">libprocess</a></li><li class="navelem"><a class="el" href="dir_01cbbd8dcbf9de3825992568658f467e.html">src</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="summary">
-<a href="#namespaces">Namespaces</a> &#124;
-<a href="#func-members">Functions</a>  </div>
-  <div class="headertitle">
-<div class="title">subprocess_windows.hpp File Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="textblock"><code>#include &lt;signal.h&gt;</code><br />
-<code>#include &lt;array&gt;</code><br />
-<code>#include &lt;string&gt;</code><br />
-<code>#include &lt;glog/logging.h&gt;</code><br />
-<code>#include &lt;<a class="el" href="subprocess_8hpp_source.html">process/subprocess.hpp</a>&gt;</code><br />
-<code>#include &lt;<a class="el" href="error_8hpp_source.html">stout/error.hpp</a>&gt;</code><br />
-<code>#include &lt;<a class="el" href="foreach_8hpp_source.html">stout/foreach.hpp</a>&gt;</code><br />
-<code>#include &lt;<a class="el" href="hashset_8hpp_source.html">stout/hashset.hpp</a>&gt;</code><br />
-<code>#include &lt;<a class="el" href="option_8hpp_source.html">stout/option.hpp</a>&gt;</code><br />
-<code>#include &lt;<a class="el" href="os_8hpp_source.html">stout/os.hpp</a>&gt;</code><br />
-<code>#include &lt;<a class="el" href="shell_8hpp_source.html">stout/os/shell.hpp</a>&gt;</code><br />
-<code>#include &lt;<a class="el" href="try_8hpp_source.html">stout/try.hpp</a>&gt;</code><br />
-<code>#include &lt;<a class="el" href="3rdparty_2stout_2include_2stout_2windows_8hpp_source.html">stout/windows.hpp</a>&gt;</code><br />
-<code>#include &lt;<a class="el" href="close_8hpp_source.html">stout/os/close.hpp</a>&gt;</code><br />
-<code>#include &lt;<a class="el" href="3rdparty_2stout_2include_2stout_2os_2environment_8hpp_source.html">stout/os/environment.hpp</a>&gt;</code><br />
-<code>#include &lt;userEnv.h&gt;</code><br />
-</div>
-<p><a href="subprocess__windows_8hpp_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr class="memitem:namespaceprocess"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceprocess.html">process</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:namespaceprocess_1_1internal"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceprocess_1_1internal.html">process::internal</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</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:a32020f2bbbcc116f2e055e209b4b8ce7"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classTry.html">Try</a>&lt;::<a class="el" href="structinternal_1_1windows_1_1ProcessData.html">internal::windows::ProcessData</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceprocess_1_1internal.html#a32020f2bbbcc116f2e055e209b4b8ce7">process::internal::createChildProcess</a> (const std::string &amp;path, const std::vector&lt; std::string &gt; &amp;argv, const <a class="el" href="classOption.html">Option</a>&lt; std::map&lt; std::string, std::string &gt;&gt; &amp;environment, const std::vector&lt; Subprocess::ParentHook &gt; &amp;parent_hooks, const InputFileDescriptors &amp;stdinfds, const OutputFileDescriptors &amp;stdoutfds, const OutputFileDescriptors &amp;stderrfds, const std::vector&lt; <a class="el" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> &gt; &amp;whitelist_fds={})</td></tr>
-<tr class="separator:a32020f2bbbcc116f2e055e209b4b8ce7"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table>
-</div><!-- contents -->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated by &#160;<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.11
-</small></address>
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/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
deleted file mode 100644
index e4900cb..0000000
--- a/content/api/latest/c++/subprocess__windows_8hpp_source.html
+++ /dev/null
@@ -1,100 +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: 3rdparty/libprocess/src/subprocess_windows.hpp Source File</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&#160;Page</span></a></li>
-      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><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="files.html"><span>File&#160;List</span></a></li>
-      <li><a href="globals.html"><span>File&#160;Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_8cab8f464681f7cc51cee77e79a434cd.html">3rdparty</a></li><li class="navelem"><a class="el" href="dir_043a76de98701f9bddf61b5e98f305ff.html">libprocess</a></li><li class="navelem"><a class="el" href="dir_01cbbd8dcbf9de3825992568658f467e.html">src</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">subprocess_windows.hpp</div>  </div>
-</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>&#160;<span class="comment">// Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<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>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<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="co
 mment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<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>&#160;<span class="comment">// distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<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>&#160;<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>&#160;<span class="comment">// limitations under the License</span></div><div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;</div><
 div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="preprocessor">#ifndef __PROCESS_WINDOWS_SUBPROCESS_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="preprocessor">#define __PROCESS_WINDOWS_SUBPROCESS_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;</div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="preprocessor">#include &lt;signal.h&gt;</span></div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="preprocessor">#include &lt;array&gt;</span></div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span></div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;</div><d
 iv class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="preprocessor">#include &lt;glog/logging.h&gt;</span></div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="subprocess_8hpp.html">process/subprocess.hpp</a>&gt;</span></div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;</div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="error_8hpp.html">stout/error.hpp</a>&gt;</span></div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="foreach_8hpp.html">stout/foreach.hpp</a>&gt;</span></div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span cla
 ss="preprocessor">#include &lt;<a class="code" href="hashset_8hpp.html">stout/hashset.hpp</a>&gt;</span></div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="option_8hpp.html">stout/option.hpp</a>&gt;</span></div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="os_8hpp.html">stout/os.hpp</a>&gt;</span></div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="shell_8hpp.html">stout/os/shell.hpp</a>&gt;</span></div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="try_8hpp.html">stout/try.hpp</a>&gt;</span></div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;<span class="preprocessor">#include &lt;<a
  class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html">stout/windows.hpp</a>&gt;</span></div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;</div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="close_8hpp.html">stout/os/close.hpp</a>&gt;</span></div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="3rdparty_2stout_2include_2stout_2os_2environment_8hpp.html">stout/os/environment.hpp</a>&gt;</span></div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;</div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;<span class="preprocessor">#include &lt;userEnv.h&gt;</span></div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;</div><div class="line"><a name="l00039"></a><span class
 ="lineno">   39</span>&#160;<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>&#160;<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>&#160;</div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;<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>&#160;<span class="comment">// (for example, paths with spaces in them like `C:\&quot;Program Files&quot;\foo.exe`)</span></div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;<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>&#160;<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>&#160;<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#a32020f2bbbcc116f2e055e209b4b8ce7">   47</a></span>&#160;<span class="keyword">inline</span> <a class="code" href="classTry.html">Try&lt;::internal::windows::ProcessData&gt;</a> <a class="code" href="namespaceprocess_1_1internal.html#a32020f2bbbcc116f2e055e209b4b8ce7">createChildProcess</a>(</div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;    <span class="keyword">const</span> std::string&amp; <a class="code" href="namespacepath.html">path</a>,</div><div class="line"><a name="l00049"></a><span clas
 s="lineno">   49</span>&#160;    <span class="keyword">const</span> std::vector&lt;std::string&gt;&amp; argv,</div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;    <span class="keyword">const</span> <a class="code" href="classOption.html">Option</a>&lt;std::map&lt;std::string, std::string&gt;&gt;&amp; <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>&#160;    <span class="keyword">const</span> std::vector&lt;Subprocess::ParentHook&gt;&amp; parent_hooks,</div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;    <span class="keyword">const</span> <a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors.html">InputFileDescriptors</a>&amp; stdinfds,</div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;    <span class="keyword">const<
 /span> <a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html">OutputFileDescriptors</a>&amp; stdoutfds,</div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;    <span class="keyword">const</span> <a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html">OutputFileDescriptors</a>&amp; stderrfds,</div><div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;    <span class="keyword">const</span> std::vector&lt;int_fd&gt;&amp; whitelist_fds = {})</div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;{</div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;  <span class="keyword">const</span> std::array&lt;int_fd, 3&gt; fds{</div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;    stdinfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors.html#a0a3f315345ef7b7ee
 6f3f1d4d337854d">read</a>, stdoutfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html#a5dabb8e3008efd61ce42478f260b54ac">write</a>, stderrfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html#a5dabb8e3008efd61ce42478f260b54ac">write</a>};</div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;</div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;  <a class="code" href="classTry.html">Try&lt;::internal::windows::ProcessData&gt;</a> process_data =</div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;    <a class="code" href="namespaceinternal_1_1windows.html#a039d5edd816cadff59dd60549c70aa41">::internal::windows::create_process</a>(</div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;        path,</div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;        argv,</di
 v><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;        <a class="code" href="namespacemesos_1_1internal_1_1tests.html#a1396c5e3b0a179220de2792d74770ec2">environment</a>,</div><div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;        <span class="keyword">true</span>, <span class="comment">// Create suspended.</span></div><div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;        fds,</div><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;        whitelist_fds);</div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;</div><div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;  <span class="comment">// Close the child-ends of the file descriptors that are created</span></div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;  <span class="comment">// by this function.</span></div><div class="
 line"><a name="l00071"></a><span class="lineno">   71</span>&#160;  <span class="keywordflow">foreach</span> (<span class="keyword">const</span> <a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a>&amp; fd, fds) {</div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;    <span class="keywordflow">if</span> (fd.is_valid()) {</div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;      <a class="code" href="classTry.html">Try&lt;Nothing&gt;</a> result = <a class="code" href="namespaceos.html#a8df77ec6d6b8d32d9b287a41bc74cfdc">os::close</a>(fd);</div><div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;      <span class="keywordflow">if</span> (result.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;        <span class="keywordflow">return</span> <a cla
 ss="code" href="classError.html">Error</a>(result.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;      }</div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;    }</div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;  }</div><div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;</div><div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;  <span class="keywordflow">if</span> (process_data.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;    <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 clas
 s="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;  }</div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;</div><div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;  <span class="comment">// Run the parent hooks.</span></div><div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;  <span class="keyword">const</span> <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a> pid = process_data-&gt;<a class="code" href="structinternal_1_1windows_1_1ProcessData.html#a65a4a4aba5450087363bfffdb30eea25">pid</a>;</div><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;  <span class="keywordflow">foreach</span> (<span class="keyword">const</span> <a class="code" href="structprocess_1_1Subprocess_1_1ParentHook.html">Subprocess::ParentHook</a>&amp; hook, parent_hooks) {</div><div class="line"><a name="l00087"></
 a><span class="lineno">   87</span>&#160;    <a class="code" href="classTry.html">Try&lt;Nothing&gt;</a> parent_setup = hook.<a class="code" href="structprocess_1_1Subprocess_1_1ParentHook.html#aaf9ff141314d619cd65cd8ec9320fb7d">parent_setup</a>(pid);</div><div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;</div><div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;    <span class="comment">// If the hook callback fails, we shouldn&#39;t proceed with the</span></div><div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;    <span class="comment">// execution and hence the child process should be killed.</span></div><div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;    <span class="keywordflow">if</span> (parent_setup.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#1
 60;      <span class="comment">// Attempt to kill the process. Since it is still in suspended state, we</span></div><div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;      <span class="comment">// do not need to kill any descendents. We also can&#39;t use `os::kill_job`</span></div><div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;      <span class="comment">// because this process is not in a Job Object unless one of the parent</span></div><div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;      <span class="comment">// hooks added it.</span></div><div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;      ::TerminateProcess(process_data-&gt;<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="l00097"></a><span class="lineno">   97</span>&#160;</div><div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;      <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(</div><div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;          <span class="stringliteral">&quot;Failed to execute Parent Hook in child &#39;&quot;</span> + <a class="code" href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(pid) +</div><div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;          <span class="stringliteral">&quot;&#39; with command &#39;&quot;</span> + <a class="code" href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(argv) + <span class="stringliteral">&quot;&#39;: &quot;</span> +</div><div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;          parent_setup.<a class="code" href="classTry.html#aec4a
 11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;    }</div><div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;  }</div><div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;</div><div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;  <span class="comment">// Start child process.</span></div><div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;  <span class="keywordflow">if</span> (::ResumeThread(process_data-&gt;<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="l00107"></a><span class="lineno">  107</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classWindowsError.html">
 WindowsError</a>(</div><div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;        <span class="stringliteral">&quot;Failed to resume child process with command &#39;&quot;</span> +</div><div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;        <a class="code" href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(argv) + <span class="stringliteral">&quot;&#39;&quot;</span>);</div><div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;  }</div><div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;</div><div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;  <span class="keywordflow">return</span> process_data;</div><div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;}</div><div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;</div><div class="line"><a name="l00115"></a><span class="lineno">  1
 15</span>&#160;}  <span class="comment">// namespace internal {</span></div><div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;}  <span class="comment">// namespace process {</span></div><div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;</div><div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;<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: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="namespaceinternal_1_1windows_html_a039d5edd816cadff59dd60549c70aa41"><div class="ttname"><a href="namespaceinternal_1_1windows.html#a039d5edd816cadff59dd60549c70aa41">internal::windows::create_process</a></div><div class="ttdeci">Try&lt; ProcessData &gt; create_process(const std::string &amp;command, const std::vector&lt; std::string &gt; &amp;argv, const Option&lt; std::map&lt; std::string, std::string &gt;&gt; &amp;environment, const bool create_suspended=false, const Option&lt; std::array&lt; int_fd, 3 &gt;&gt; &amp;pipes=None(), const std::vector&lt; int_fd &gt; &amp;whitelist_fds={})</div><div class="ttdef"><b>Definition:</b> shell.hpp:240</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>
-<div class="ttc" id="subprocess_8hpp_html"><div class="ttname"><a href="subprocess_8hpp.html">subprocess.hpp</a></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="classWindowsError_html"><div class="ttname"><a href="classWindowsError.html">WindowsError</a></div><div class="ttdef"><b>Definition:</b> error.hpp:108</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="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors_html_a0a3f315345ef7b7ee6f3f1d4d337854d"><div class="ttname"><a href="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors.html#a0a3f315345ef7b7ee6f3f1d4d337854d">process::Subprocess::IO::InputFileDescriptors::read</a></div><div class="ttdeci">int_fd read</div><div class="ttdef"><b>Definition:</b> subprocess.hpp:75</div></div>
-<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="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="namespaceprocess_1_1internal_html_a32020f2bbbcc116f2e055e209b4b8ce7"><div class="ttname"><a href="namespaceprocess_1_1internal.html#a32020f2bbbcc116f2e055e209b4b8ce7">process::internal::createChildProcess</a></div><div class="ttdeci">Try&lt;::internal::windows::ProcessData &gt; createChildProcess(const std::string &amp;path, const std::vector&lt; std::string &gt; &amp;argv, const Option&lt; std::map&lt; std::string, std::string &gt;&gt; &amp;environment, const std::vector&lt; Subprocess::ParentHook &gt; &amp;parent_hooks, const InputFileDescriptors &amp;stdinfds, const OutputFileDescriptors &amp;stdoutfds, const OutputFileDescriptors &amp;stderrfds, const std::vector&lt; int_fd &gt; &amp;whitelist_fds={})</div><div class="ttdef"><b>Definition:</b> subprocess_windows.hpp:47</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="namespacemesos_1_1internal_1_1tests_html_a1396c5e3b0a179220de2792d74770ec2"><div class="ttname"><a href="namespacemesos_1_1internal_1_1tests.html#a1396c5e3b0a179220de2792d74770ec2">mesos::internal::tests::environment</a></div><div class="ttdeci">Environment * environment</div></div>
-<div class="ttc" id="3rdparty_2stout_2include_2stout_2windows_8hpp_html_ab03ced250ed239bc3b50b669493997f9"><div class="ttname"><a href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a></div><div class="ttdeci">DWORD pid_t</div><div class="ttdef"><b>Definition:</b> windows.hpp:181</div></div>
-<div class="ttc" id="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors_html_a5dabb8e3008efd61ce42478f260b54ac"><div class="ttname"><a href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html#a5dabb8e3008efd61ce42478f260b54ac">process::Subprocess::IO::OutputFileDescriptors::write</a></div><div class="ttdeci">int_fd write</div><div class="ttdef"><b>Definition:</b> subprocess.hpp:91</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&lt; Nothing &gt; close(int fd)</div><div class="ttdef"><b>Definition:</b> close.hpp:24</div></div>
-<div class="ttc" id="structinternal_1_1windows_1_1ProcessData_html_a96c76121644bd430e9ca67cf57636c0d"><div class="ttname"><a href="structinternal_1_1windows_1_1ProcessData.html#a96c76121644bd430e9ca67cf57636c0d">internal::windows::ProcessData::process_handle</a></div><div class="ttdeci">SharedHandle process_handle</div><div class="ttdef"><b>Definition:</b> shell.hpp:214</div></div>
-<div class="ttc" id="structinternal_1_1windows_1_1ProcessData_html_a7160cf48fc6e70d9390233b246b93bee"><div class="ttname"><a href="structinternal_1_1windows_1_1ProcessData.html#a7160cf48fc6e70d9390233b246b93bee">internal::windows::ProcessData::thread_handle</a></div><div class="ttdeci">SharedHandle thread_handle</div><div class="ttdef"><b>Definition:</b> shell.hpp:215</div></div>
-<div class="ttc" id="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors_html"><div class="ttname"><a href="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors.html">process::Subprocess::IO::InputFileDescriptors</a></div><div class="ttdoc">For input file descriptors a child reads from the read file descriptor and a parent may write to the ...</div><div class="ttdef"><b>Definition:</b> subprocess.hpp:73</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="classTry_html_aec4a11ddd3c036e889d90b7eb6258ba7"><div class="ttname"><a href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">Try::error</a></div><div class="ttdeci">static Try error(const E &amp;e)</div><div class="ttdef"><b>Definition:</b> try.hpp:42</div></div>
-<div class="ttc" id="structprocess_1_1Subprocess_1_1ParentHook_html_aaf9ff141314d619cd65cd8ec9320fb7d"><div class="ttname"><a href="structprocess_1_1Subprocess_1_1ParentHook.html#aaf9ff141314d619cd65cd8ec9320fb7d">process::Subprocess::ParentHook::parent_setup</a></div><div class="ttdeci">const lambda::function&lt; Try&lt; Nothing &gt;pid_t)&gt; parent_setup</div><div class="ttdoc">The callback that must be specified for execution after the child has been cloned, but before it starts executing the new process. </div><div class="ttdef"><b>Definition:</b> subprocess.hpp:163</div></div>
-<div class="ttc" id="foreach_8hpp_html"><div class="ttname"><a href="foreach_8hpp.html">foreach.hpp</a></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="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>
-<div class="ttc" id="namespaceprocess_html"><div class="ttname"><a href="namespaceprocess.html">process</a></div><div class="ttdef"><b>Definition:</b> executor.hpp:48</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="hashset_8hpp_html"><div class="ttname"><a href="hashset_8hpp.html">hashset.hpp</a></div></div>
-<div class="ttc" id="structinternal_1_1windows_1_1ProcessData_html_a65a4a4aba5450087363bfffdb30eea25"><div class="ttname"><a href="structinternal_1_1windows_1_1ProcessData.html#a65a4a4aba5450087363bfffdb30eea25">internal::windows::ProcessData::pid</a></div><div class="ttdeci">pid_t pid</div><div class="ttdef"><b>Definition:</b> shell.hpp:216</div></div>
-<div class="ttc" id="shell_8hpp_html"><div class="ttname"><a href="shell_8hpp.html">shell.hpp</a></div></div>
-<div class="ttc" id="structprocess_1_1Subprocess_1_1ParentHook_html"><div class="ttname"><a href="structprocess_1_1Subprocess_1_1ParentHook.html">process::Subprocess::ParentHook</a></div><div class="ttdoc">A hook can be passed to a subprocess call. </div><div class="ttdef"><b>Definition:</b> subprocess.hpp:152</div></div>
-<div class="ttc" id="int__fd_8hpp_html_aea4dbda01c90455f158ffa9b924c2f07"><div class="ttname"><a href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a></div><div class="ttdeci">int int_fd</div><div class="ttdef"><b>Definition:</b> int_fd.hpp:35</div></div>
-<div class="ttc" id="namespacens_html_a28116b46e6543597a11733424cd1aa20"><div class="ttname"><a href="namespacens.html#a28116b46e6543597a11733424cd1aa20">ns::stringify</a></div><div class="ttdeci">std::string stringify(int flags)</div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated by &#160;<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.11
-</small></address>
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/systemd_8hpp.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/systemd_8hpp.html b/content/api/latest/c++/systemd_8hpp.html
index e91d66a..c2c9467 100644
--- a/content/api/latest/c++/systemd_8hpp.html
+++ b/content/api/latest/c++/systemd_8hpp.html
@@ -56,7 +56,7 @@
 <div class="title">systemd.hpp File Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
-<div class="textblock"><code>#include &lt;<a class="el" href="subprocess_8hpp_source.html">process/subprocess.hpp</a>&gt;</code><br />
+<div class="textblock"><code>#include &lt;<a class="el" href="include_2process_2subprocess_8hpp_source.html">process/subprocess.hpp</a>&gt;</code><br />
 <code>#include &lt;<a class="el" href="3rdparty_2stout_2include_2stout_2flags_8hpp_source.html">stout/flags.hpp</a>&gt;</code><br />
 <code>#include &lt;<a class="el" href="nothing_8hpp_source.html">stout/nothing.hpp</a>&gt;</code><br />
 <code>#include &lt;<a class="el" href="path_8hpp_source.html">stout/path.hpp</a>&gt;</code><br />

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/systemd_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/systemd_8hpp_source.html b/content/api/latest/c++/systemd_8hpp_source.html
index d21f544..799affb 100644
--- a/content/api/latest/c++/systemd_8hpp_source.html
+++ b/content/api/latest/c++/systemd_8hpp_source.html
@@ -52,12 +52,12 @@
 <div class="title">systemd.hpp</div>  </div>
 </div><!--header-->
 <div class="contents">
-<a href="systemd_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>&#160;<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>&#160;<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>&#160;<span class="comment">// distributed with this work for additional information</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<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>&#160;<span class="comment">// to you under the Apache License, Version 2.0 (the</span></div><div class="line"><a name="l00006"></a><span cla
 ss="lineno">    6</span>&#160;<span class="comment">// &quot;License&quot;); you may not use this file except in compliance</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<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>&#160;<span class="comment">// distribut
 ed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<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>&#160;<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>&#160;<span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;</div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="preprocessor">#ifndef __SYSTEMD_HPP__</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="preprocessor">#define __SYSTEMD_HPP__</span></div><div class="line"><a name="l00019">
 </a><span class="lineno">   19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="subprocess_8hpp.html">process/subprocess.hpp</a>&gt;</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;</div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="3rdparty_2stout_2include_2stout_2flags_8hpp.html">stout/flags.hpp</a>&gt;</span></div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="nothing_8hpp.html">stout/nothing.hpp</a>&gt;</span></div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="path_8hpp.html">stout/path.hpp</a>&gt;</span></div><div class="line"><a name="l00025"></a><span 
 class="lineno">   25</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="try_8hpp.html">stout/try.hpp</a>&gt;</span></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"><a class="line" href="namespacesystemd.html">   27</a></span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacesystemd.html">systemd</a> {</div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;</div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="comment">// TODO(jmlvanre): Consider moving the generic systemd behaviour into</span></div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="comment">// stout, and leaving the mesos specific behavior here.</span></div><div class="line"><a name="l00031"></a><span class="lineno"><a class="line" href="namespacesystemd_1_1mes
 os.html">   31</a></span>&#160;<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>&#160;</div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;<span class="comment">// TODO(jmlvanre): We may want to allow this to be configured.</span></div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> MESOS_EXECUTORS_SLICE[] = <span class="stringliteral">&quot;mesos_executors.slice&quot;</span>;</div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;</div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;</div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;<a class="code" href="classTry.html">Try&lt;Nothing&gt;</a> <a class="code
 " href="namespacesystemd_1_1mesos.html#a9b82bb47ab116583d017a024db8a9e9c">extendLifetime</a>(<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a> child);</div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;</div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;} <span class="comment">// namespace mesos {</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>&#160;</div><div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="classsystemd_1_1Flags.html">   59</a></span>&#160;<span class="keyword">class </span><a class="code" href="classsystemd_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 c
 lass="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;{</div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;  <a class="code" href="classsystemd_1_1Flags.html">Flags</a>();</div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;</div><div class="line"><a name="l00064"></a><span class="lineno"><a class="line" href="classsystemd_1_1Flags.html#a0f517a5cfeb4f12a088febaf9c3ae583">   64</a></span>&#160;  <span class="keywordtype">bool</span> <a class="code" href="classsystemd_1_1Flags.html#a0f517a5cfeb4f12a088febaf9c3ae583">enabled</a>;</div><div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="classsystemd_1_1Flags.html#a228737cce3b3e4f722819d49bc4d18a4">   65</a></span>&#160;  std::string <a class="code" href="classsystemd_1_1Flags.html#a228737cce3b3e4f722819d49bc4d
 18a4">runtime_directory</a>;</div><div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="classsystemd_1_1Flags.html#a58cb80fd14bab9d5b8b74d0393c5d26b">   66</a></span>&#160;  std::string <a class="code" href="classsystemd_1_1Flags.html#a58cb80fd14bab9d5b8b74d0393c5d26b">cgroups_hierarchy</a>;</div><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;};</div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;</div><div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;</div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;<span class="keyword">const</span> <a class="code" href="classsystemd_1_1Flags.html">Flags</a>&amp; <a class="code" href="namespacesystemd.html#a15e9043febc72cc13ad6a9bc90c99dd7">flags</a>();</div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;</div><div class="line"><a name="l00072"></a><span class="lineno
 ">   72</span>&#160;</div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;<a class="code" href="classTry.html">Try&lt;Nothing&gt;</a> <a class="code" href="namespacesystemd.html#a4e45b8163baf6d307c9884d624472402">initialize</a>(<span class="keyword">const</span> <a class="code" href="classsystemd_1_1Flags.html">Flags</a>&amp; <a class="code" href="namespaceflags.html">flags</a>);</div><div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;</div><div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;</div><div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;<span class="keywordtype">bool</span> <a class="code" href="namespacesystemd.html#aafb563d63243f59f6deaa9a4259ac3ac">exists</a>();</div><div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;</div><div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;</div><div class="line"><a name="l0
 0099"></a><span class="lineno">   99</span>&#160;<span class="keywordtype">bool</span> <a class="code" href="namespacesystemd.html#a6f348a1cb08d5b6ec1a833054114c3eb">enabled</a>();</div><div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;</div><div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;</div><div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;<a class="code" href="classPath.html">Path</a> <a class="code" href="namespacesystemd.html#a91c5f8a92a1e0e61f807c2eb3c011bc9">runtimeDirectory</a>();</div><div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;</div><div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;</div><div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;<a class="code" href="classPath.html">Path</a> <a class="code" href="namespacesystemd.html#a98eb9defbb13574737632e5438aac8e9">hierarchy</a>();</div><div class="line
 "><a name="l00112"></a><span class="lineno">  112</span>&#160;</div><div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;</div><div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;<a class="code" href="classTry.html">Try&lt;Nothing&gt;</a> <a class="code" href="namespacesystemd.html#ad81f682c314645587d28506bcec18489">daemonReload</a>();</div><div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;</div><div class="line"><a name="l00123"></a><span class="lineno"><a class="line" href="namespacesystemd_1_1slices.html">  123</a></span>&#160;<span class="keyword">namespace </span>slices {</div><div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;</div><div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;<span class="keywordtype">bool</span> <a class="code" href="namespacesystemd.html#aafb563d63243f59f6deaa9a4259ac3ac">exists</a>(<span class="keyword">const</span> <a c
 lass="code" href="classPath.html">Path</a>&amp; <a class="code" href="namespacepath.html">path</a>);</div><div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;</div><div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;</div><div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;<a class="code" href="classTry.html">Try&lt;Nothing&gt;</a> <a class="code" href="namespacesystemd_1_1slices.html#a0931fc5806ba560602cb355395671ae2">create</a>(<span class="keyword">const</span> <a class="code" href="classPath.html">Path</a>&amp; path, <span class="keyword">const</span> std::string&amp; data);</div><div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;</div><div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;</div><div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;<a class="code" href="classTry.html">Try&lt;Nothing&gt;</a> <a class="code" href="
 namespacesystemd_1_1slices.html#a95aa197d8eed9f20dacb44f433b15f01">start</a>(<span class="keyword">const</span> std::string&amp; <a class="code" href="namespaceos_1_1Shell.html#acfe16ef2b1146ad49a8651c0a457ce46">name</a>);</div><div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;</div><div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;} <span class="comment">// namespace slices {</span></div><div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;</div><div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;} <span class="comment">// namespace systemd {</span></div><div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;</div><div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;<span class="preprocessor">#endif // __SYSTEMD_HPP__</span></div><div class="ttc" id="namespacesystemd_html_a6f348a1cb08d5b6ec1a833054114c3eb"><div class="ttname"><a 
 href="namespacesystemd.html#a6f348a1cb08d5b6ec1a833054114c3eb">systemd::enabled</a></div><div class="ttdeci">bool enabled()</div><div class="ttdoc">Check if systemd exists, and whether we have initialized it. </div></div>
+<a href="systemd_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>&#160;<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>&#160;<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>&#160;<span class="comment">// distributed with this work for additional information</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<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>&#160;<span class="comment">// to you under the Apache License, Version 2.0 (the</span></div><div class="line"><a name="l00006"></a><span cla
 ss="lineno">    6</span>&#160;<span class="comment">// &quot;License&quot;); you may not use this file except in compliance</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<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>&#160;<span class="comment">// distribut
 ed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<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>&#160;<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>&#160;<span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;</div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="preprocessor">#ifndef __SYSTEMD_HPP__</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="preprocessor">#define __SYSTEMD_HPP__</span></div><div class="line"><a name="l00019">
 </a><span class="lineno">   19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="include_2process_2subprocess_8hpp.html">process/subprocess.hpp</a>&gt;</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;</div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="3rdparty_2stout_2include_2stout_2flags_8hpp.html">stout/flags.hpp</a>&gt;</span></div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="nothing_8hpp.html">stout/nothing.hpp</a>&gt;</span></div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="path_8hpp.html">stout/path.hpp</a>&gt;</span></div><div class="line"><a name="
 l00025"></a><span class="lineno">   25</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="try_8hpp.html">stout/try.hpp</a>&gt;</span></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"><a class="line" href="namespacesystemd.html">   27</a></span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacesystemd.html">systemd</a> {</div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;</div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="comment">// TODO(jmlvanre): Consider moving the generic systemd behaviour into</span></div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="comment">// stout, and leaving the mesos specific behavior here.</span></div><div class="line"><a name="l00031"></a><span class="lineno"><a class="line" href="names
 pacesystemd_1_1mesos.html">   31</a></span>&#160;<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>&#160;</div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;<span class="comment">// TODO(jmlvanre): We may want to allow this to be configured.</span></div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> MESOS_EXECUTORS_SLICE[] = <span class="stringliteral">&quot;mesos_executors.slice&quot;</span>;</div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;</div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;</div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;<a class="code" href="classTry.html">Try&lt;Nothing&gt;<
 /a> <a class="code" href="namespacesystemd_1_1mesos.html#a9b82bb47ab116583d017a024db8a9e9c">extendLifetime</a>(<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a> child);</div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;</div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;} <span class="comment">// namespace mesos {</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>&#160;</div><div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="classsystemd_1_1Flags.html">   59</a></span>&#160;<span class="keyword">class </span><a class="code" href="classsystemd_1_1Flags.html">Flags</a> : <span class="keyword">public</span> <span class="keyword">virtual</span> <a class="code" href="classflags_1_1FlagsBase.html">flags::FlagsBa
 se</a></div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;{</div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;  <a class="code" href="classsystemd_1_1Flags.html">Flags</a>();</div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;</div><div class="line"><a name="l00064"></a><span class="lineno"><a class="line" href="classsystemd_1_1Flags.html#a0f517a5cfeb4f12a088febaf9c3ae583">   64</a></span>&#160;  <span class="keywordtype">bool</span> <a class="code" href="classsystemd_1_1Flags.html#a0f517a5cfeb4f12a088febaf9c3ae583">enabled</a>;</div><div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="classsystemd_1_1Flags.html#a228737cce3b3e4f722819d49bc4d18a4">   65</a></span>&#160;  std::string <a class="code" href="classsystemd_1_1Flags.html#a228737cce3
 b3e4f722819d49bc4d18a4">runtime_directory</a>;</div><div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="classsystemd_1_1Flags.html#a58cb80fd14bab9d5b8b74d0393c5d26b">   66</a></span>&#160;  std::string <a class="code" href="classsystemd_1_1Flags.html#a58cb80fd14bab9d5b8b74d0393c5d26b">cgroups_hierarchy</a>;</div><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;};</div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;</div><div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;</div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;<span class="keyword">const</span> <a class="code" href="classsystemd_1_1Flags.html">Flags</a>&amp; <a class="code" href="namespacesystemd.html#a15e9043febc72cc13ad6a9bc90c99dd7">flags</a>();</div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;</div><div class="line"><a name="l00072"></a><
 span class="lineno">   72</span>&#160;</div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;<a class="code" href="classTry.html">Try&lt;Nothing&gt;</a> <a class="code" href="namespacesystemd.html#a4e45b8163baf6d307c9884d624472402">initialize</a>(<span class="keyword">const</span> <a class="code" href="classsystemd_1_1Flags.html">Flags</a>&amp; <a class="code" href="namespaceflags.html">flags</a>);</div><div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;</div><div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;</div><div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;<span class="keywordtype">bool</span> <a class="code" href="namespacesystemd.html#aafb563d63243f59f6deaa9a4259ac3ac">exists</a>();</div><div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;</div><div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;</div><div class=
 "line"><a name="l00099"></a><span class="lineno">   99</span>&#160;<span class="keywordtype">bool</span> <a class="code" href="namespacesystemd.html#a6f348a1cb08d5b6ec1a833054114c3eb">enabled</a>();</div><div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;</div><div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;</div><div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;<a class="code" href="classPath.html">Path</a> <a class="code" href="namespacesystemd.html#a91c5f8a92a1e0e61f807c2eb3c011bc9">runtimeDirectory</a>();</div><div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;</div><div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;</div><div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;<a class="code" href="classPath.html">Path</a> <a class="code" href="namespacesystemd.html#a98eb9defbb13574737632e5438aac8e9">hierarchy</a>();</di
 v><div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;</div><div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;</div><div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;<a class="code" href="classTry.html">Try&lt;Nothing&gt;</a> <a class="code" href="namespacesystemd.html#ad81f682c314645587d28506bcec18489">daemonReload</a>();</div><div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;</div><div class="line"><a name="l00123"></a><span class="lineno"><a class="line" href="namespacesystemd_1_1slices.html">  123</a></span>&#160;<span class="keyword">namespace </span>slices {</div><div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;</div><div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;<span class="keywordtype">bool</span> <a class="code" href="namespacesystemd.html#aafb563d63243f59f6deaa9a4259ac3ac">exists</a>(<span class="keyword"
 >const</span> <a class="code" href="classPath.html">Path</a>&amp; <a class="code" href="namespacepath.html">path</a>);</div><div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;</div><div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;</div><div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;<a class="code" href="classTry.html">Try&lt;Nothing&gt;</a> <a class="code" href="namespacesystemd_1_1slices.html#a0931fc5806ba560602cb355395671ae2">create</a>(<span class="keyword">const</span> <a class="code" href="classPath.html">Path</a>&amp; path, <span class="keyword">const</span> std::string&amp; data);</div><div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;</div><div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;</div><div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;<a class="code" href="classTry.html">Try&lt;Nothing&gt;</a> <a c
 lass="code" href="namespacesystemd_1_1slices.html#a95aa197d8eed9f20dacb44f433b15f01">start</a>(<span class="keyword">const</span> std::string&amp; <a class="code" href="namespaceos_1_1Shell.html#acfe16ef2b1146ad49a8651c0a457ce46">name</a>);</div><div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;</div><div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;} <span class="comment">// namespace slices {</span></div><div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;</div><div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;} <span class="comment">// namespace systemd {</span></div><div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;</div><div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;<span class="preprocessor">#endif // __SYSTEMD_HPP__</span></div><div class="ttc" id="namespacesystemd_html_a6f348a1cb08d5b6ec1a833054114c3eb"><div 
 class="ttname"><a href="namespacesystemd.html#a6f348a1cb08d5b6ec1a833054114c3eb">systemd::enabled</a></div><div class="ttdeci">bool enabled()</div><div class="ttdoc">Check if systemd exists, and whether we have initialized it. </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="namespacesystemd_1_1mesos_html_a9b82bb47ab116583d017a024db8a9e9c"><div class="ttname"><a href="namespacesystemd_1_1mesos.html#a9b82bb47ab116583d017a024db8a9e9c">systemd::mesos::extendLifetime</a></div><div class="ttdeci">Try&lt; Nothing &gt; extendLifetime(pid_t child)</div><div class="ttdoc">A hook that is executed in the parent process. </div></div>
 <div class="ttc" id="namespacesystemd_1_1slices_html_a0931fc5806ba560602cb355395671ae2"><div class="ttname"><a href="namespacesystemd_1_1slices.html#a0931fc5806ba560602cb355395671ae2">systemd::slices::create</a></div><div class="ttdeci">Try&lt; Nothing &gt; create(const Path &amp;path, const std::string &amp;data)</div><div class="ttdoc">Creates a slice configuration with the provided contents at the given path. </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="subprocess_8hpp_html"><div class="ttname"><a href="subprocess_8hpp.html">subprocess.hpp</a></div></div>
+<div class="ttc" id="include_2process_2subprocess_8hpp_html"><div class="ttname"><a href="include_2process_2subprocess_8hpp.html">subprocess.hpp</a></div></div>
 <div class="ttc" id="classsystemd_1_1Flags_html_a228737cce3b3e4f722819d49bc4d18a4"><div class="ttname"><a href="classsystemd_1_1Flags.html#a228737cce3b3e4f722819d49bc4d18a4">systemd::Flags::runtime_directory</a></div><div class="ttdeci">std::string runtime_directory</div><div class="ttdef"><b>Definition:</b> systemd.hpp:65</div></div>
 <div class="ttc" id="namespacesystemd_1_1slices_html_a95aa197d8eed9f20dacb44f433b15f01"><div class="ttname"><a href="namespacesystemd_1_1slices.html#a95aa197d8eed9f20dacb44f433b15f01">systemd::slices::start</a></div><div class="ttdeci">Try&lt; Nothing &gt; start(const std::string &amp;name)</div><div class="ttdoc">Starts the slice with the given name (via &amp;#39;systemctl start &lt;name&gt;&amp;#39;). </div></div>
 <div class="ttc" id="namespacesystemd_html"><div class="ttname"><a href="namespacesystemd.html">systemd</a></div><div class="ttdef"><b>Definition:</b> systemd.hpp:27</div></div>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/tests_2containerizer_2launcher_8hpp.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/tests_2containerizer_2launcher_8hpp.html b/content/api/latest/c++/tests_2containerizer_2launcher_8hpp.html
index dd3582d..c4b15bc 100644
--- a/content/api/latest/c++/tests_2containerizer_2launcher_8hpp.html
+++ b/content/api/latest/c++/tests_2containerizer_2launcher_8hpp.html
@@ -63,7 +63,7 @@
 <code>#include &lt;<a class="el" href="include_2mesos_2slave_2isolator_8hpp_source.html">mesos/slave/isolator.hpp</a>&gt;</code><br />
 <code>#include &lt;<a class="el" href="future_8hpp_source.html">process/future.hpp</a>&gt;</code><br />
 <code>#include &lt;<a class="el" href="owned_8hpp_source.html">process/owned.hpp</a>&gt;</code><br />
-<code>#include &lt;<a class="el" href="subprocess_8hpp_source.html">process/subprocess.hpp</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="include_2process_2subprocess_8hpp_source.html">process/subprocess.hpp</a>&gt;</code><br />
 <code>#include &lt;<a class="el" href="3rdparty_2stout_2include_2stout_2flags_8hpp_source.html">stout/flags.hpp</a>&gt;</code><br />
 <code>#include &lt;<a class="el" href="lambda_8hpp_source.html">stout/lambda.hpp</a>&gt;</code><br />
 <code>#include &lt;<a class="el" href="nothing_8hpp_source.html">stout/nothing.hpp</a>&gt;</code><br />


[34/50] mesos-site git commit: Updated the website built from mesos SHA: 7c9c72d.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/grpc_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/grpc_8hpp_source.html b/content/api/latest/c++/grpc_8hpp_source.html
index e91ddfa..cb5194f 100644
--- a/content/api/latest/c++/grpc_8hpp_source.html
+++ b/content/api/latest/c++/grpc_8hpp_source.html
@@ -52,7 +52,7 @@
 <div class="title">grpc.hpp</div>  </div>
 </div><!--header-->
 <div class="contents">
-<a href="grpc_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>&#160;<span class="comment">// Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<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>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<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>&#160;<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>&#160;<span class="comment">// distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<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>&#160;<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>&#160;<span class="comment">// limitations under the License</span></div><div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;</div><div class="line
 "><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="preprocessor">#ifndef __PROCESS_GRPC_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="preprocessor">#define __PROCESS_GRPC_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;</div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="preprocessor">#include &lt;chrono&gt;</span></div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="preprocessor">#include &lt;memory&gt;</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span></div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;<span class="preprocessor">#include &lt;thread&gt;</span></div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&
 #160;<span class="preprocessor">#include &lt;type_traits&gt;</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="preprocessor">#include &lt;utility&gt;</span></div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="preprocessor">#include &lt;google/protobuf/message.h&gt;</span></div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;</div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="preprocessor">#include &lt;grpcpp/grpcpp.h&gt;</span></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>&#160;<span class="preprocessor">#include &lt;<a class="code" href="libprocess_2include_2process_2check_8hpp.html">process/check.hpp</a>&gt;</span><
 /div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="dispatch_8hpp.html">process/dispatch.hpp</a>&gt;</span></div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="future_8hpp.html">process/future.hpp</a>&gt;</span></div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="3rdparty_2libprocess_2include_2process_2pid_8hpp.html">process/pid.hpp</a>&gt;</span></div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="libprocess_2include_2process_2process_8hpp.html">process/process.hpp</a>&gt;</span></div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;</div><div class="line"><a name="l00033"></a><span class
 ="lineno">   33</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="error_8hpp.html">stout/error.hpp</a>&gt;</span></div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="lambda_8hpp.html">stout/lambda.hpp</a>&gt;</span></div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="nothing_8hpp.html">stout/nothing.hpp</a>&gt;</span></div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="try_8hpp.html">stout/try.hpp</a>&gt;</span></div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;</div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;<span class="comment">// Th
 is file provides libprocess &quot;support&quot; for using gRPC. In particular, it</span></div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;<span class="comment">// defines two wrapper classes: `client::Connection` which represents a</span></div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;<span class="comment">// connection to a gRPC server, and `client::Runtime` which integrates an event</span></div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;<span class="comment">// loop waiting for gRPC responses and provides the `call` interface to create</span></div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;<span class="comment">// an asynchronous gRPC call and return a `Future`.</span></div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;</div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;</div><div
  class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="grpc_8hpp.html#af26d5c763831ad955bb9742db25c5f75">   46</a></span>&#160;<span class="preprocessor">#define GRPC_CLIENT_METHOD(service, rpc) \</span></div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;<span class="preprocessor">  (&amp;service::Stub::PrepareAsync##rpc)</span></div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;</div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceprocess.html">process</a> {</div><div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="namespaceprocess_1_1grpc.html">   50</a></span>&#160;<span class="keyword">namespace </span>grpc {</div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;</div><div class="line"><a name="l00056"></a><span class="lineno"><a class="l
 ine" href="classprocess_1_1grpc_1_1StatusError.html">   56</a></span>&#160;<span class="keyword">class </span><a class="code" href="classprocess_1_1grpc_1_1StatusError.html">StatusError</a> : <span class="keyword">public</span> <a class="code" href="classError.html">Error</a></div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;{</div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="classprocess_1_1grpc_1_1StatusError.html#af8b12349660968c3171d71d48d82111b">   59</a></span>&#160;  <a class="code" href="classprocess_1_1grpc_1_1StatusError.html#af8b12349660968c3171d71d48d82111b">StatusError</a>(::grpc::Status _status)</div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;    : <a class="code" href="classError.html">Error</a>(_status.error_message()), <a class="code" href="clas
 sprocess_1_1grpc_1_1StatusError.html#a7182af947b263c08393be3c9420199b5">status</a>(<a class="code" href="namespacestd.html">std</a>::move(_status))</div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;  {</div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;    CHECK(!<a class="code" href="classprocess_1_1grpc_1_1StatusError.html#a7182af947b263c08393be3c9420199b5">status</a>.ok());</div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;  }</div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;</div><div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="classprocess_1_1grpc_1_1StatusError.html#a7182af947b263c08393be3c9420199b5">   65</a></span>&#160;  const ::grpc::Status <a class="code" href="classprocess_1_1grpc_1_1StatusError.html#a7182af947b263c08393be3c9420199b5">status</a>;</div><div class="line"><a name="l00066"></a><span class="lineno
 ">   66</span>&#160;};</div><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;</div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;</div><div class="line"><a name="l00069"></a><span class="lineno"><a class="line" href="namespaceprocess_1_1grpc_1_1client.html">   69</a></span>&#160;<span class="keyword">namespace </span>client {</div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;</div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;<span class="comment">// Internal helper utilities.</span></div><div class="line"><a name="l00072"></a><span class="lineno"><a class="line" href="namespaceprocess_1_1grpc_1_1client_1_1internal.html">   72</a></span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceinternal.html">internal</a> {</div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;</div><div class="line"><a name="l000
 74"></a><span class="lineno">   74</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l00075"></a><span class="lineno"><a class="line" href="structprocess_1_1grpc_1_1client_1_1internal_1_1MethodTraits.html">   75</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structprocess_1_1grpc_1_1client_1_1internal_1_1MethodTraits.html">MethodTraits</a>; <span class="comment">// Undefined.</span></div><div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;</div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;</div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Stub, <span class="keyword">typename</span> Request, <span class="keyword">typename</span> Response&gt;</div><div class="line"><a name="l00079"></a><span class="lineno"><a c
 lass="line" href="structprocess_1_1grpc_1_1client_1_1internal_1_1MethodTraits_3_01std_1_1unique__ptr_3_1_1grpc_1_1b922a69900827d65b241714130bc07ca.html">   79</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structprocess_1_1grpc_1_1client_1_1internal_1_1MethodTraits.html">MethodTraits</a>&lt;</div><div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;    <a class="code" href="namespacestd.html">std</a>::unique_ptr&lt;::grpc::ClientAsyncResponseReader&lt;Response&gt;&gt;(Stub::*)(</div><div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;        ::grpc::ClientContext*,</div><div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;        const Request&amp;,</div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;        ::grpc::CompletionQueue*)&gt;</div><div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;{</div><div class="line"><a name
 ="l00085"></a><span class="lineno"><a class="line" href="structprocess_1_1grpc_1_1client_1_1internal_1_1MethodTraits_3_01std_1_1unique__ptr_3_1_1grpc_1_1b922a69900827d65b241714130bc07ca.html#af96bd68c2ee624f2bade6bb587726897">   85</a></span>&#160;  <span class="keyword">typedef</span> Stub <a class="code" href="structprocess_1_1grpc_1_1client_1_1internal_1_1MethodTraits_3_01std_1_1unique__ptr_3_1_1grpc_1_1b922a69900827d65b241714130bc07ca.html#af96bd68c2ee624f2bade6bb587726897">stub_type</a>;</div><div class="line"><a name="l00086"></a><span class="lineno"><a class="line" href="structprocess_1_1grpc_1_1client_1_1internal_1_1MethodTraits_3_01std_1_1unique__ptr_3_1_1grpc_1_1b922a69900827d65b241714130bc07ca.html#adcf2f58a91926bbfbbf3f9aa4979cd38">   86</a></span>&#160;  <span class="keyword">typedef</span> Request <a class="code" href="structprocess_1_1grpc_1_1client_1_1internal_1_1MethodTraits_3_01std_1_1unique__ptr_3_1_1grpc_1_1b922a69900827d65b241714130bc07ca.html#adcf2f58a91926bbfb
 bf3f9aa4979cd38">request_type</a>;</div><div class="line"><a name="l00087"></a><span class="lineno"><a class="line" href="structprocess_1_1grpc_1_1client_1_1internal_1_1MethodTraits_3_01std_1_1unique__ptr_3_1_1grpc_1_1b922a69900827d65b241714130bc07ca.html#a39b26e8b5b508708af0b6468a31dcab5">   87</a></span>&#160;  <span class="keyword">typedef</span> <a class="code" href="namespacemesos_1_1internal_1_1tests_1_1v1_1_1scheduler.html#a4e7892daaddcb4dd2e4ebb1266715316">Response</a> <a class="code" href="structprocess_1_1grpc_1_1client_1_1internal_1_1MethodTraits_3_01std_1_1unique__ptr_3_1_1grpc_1_1b922a69900827d65b241714130bc07ca.html#a39b26e8b5b508708af0b6468a31dcab5">response_type</a>;</div><div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;};</div><div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;</div><div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;} <span class="comment">// namespace internal {</spa
 n></div><div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;</div><div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;</div><div class="line"><a name="l00099"></a><span class="lineno"><a class="line" href="classprocess_1_1grpc_1_1client_1_1Connection.html">   99</a></span>&#160;<span class="keyword">class </span><a class="code" href="classprocess_1_1grpc_1_1client_1_1Connection.html">Connection</a></div><div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;{</div><div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00102"></a><span class="lineno"><a class="line" href="classprocess_1_1grpc_1_1client_1_1Connection.html#a60863492f258db095f4ce19c45d4fed5">  102</a></span>&#160;  <a class="code" href="classprocess_1_1grpc_1_1client_1_1Connection.html#a60863492f258db095f4ce19c45d4fed5">Connection</a>(</div><div class="li
 ne"><a name="l00103"></a><span class="lineno">  103</span>&#160;      <span class="keyword">const</span> std::string&amp; <a class="code" href="namespaceuri.html">uri</a>,</div><div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;      <span class="keyword">const</span> std::shared_ptr&lt;::grpc::ChannelCredentials&gt;&amp; credentials =</div><div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;        ::grpc::InsecureChannelCredentials())</div><div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;    : channel(::grpc::CreateChannel(uri, credentials)) {}</div><div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;</div><div class="line"><a name="l00108"></a><span class="lineno"><a class="line" href="classprocess_1_1grpc_1_1client_1_1Connection.html#abe61ce221a6e43836ea28d97e6b2db94">  108</a></span>&#160;  <span class="keyword">explicit</span> <a class="code" href="classprocess_1_1grpc_1
 _1client_1_1Connection.html#abe61ce221a6e43836ea28d97e6b2db94">Connection</a>(std::shared_ptr&lt;::grpc::Channel&gt; _channel)</div><div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;    : channel(<a class="code" href="namespacestd.html">std</a>::move(_channel)) {}</div><div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;</div><div class="line"><a name="l00111"></a><span class="lineno"><a class="line" href="classprocess_1_1grpc_1_1client_1_1Connection.html#a2ee6f5abf57c66128bb1c5a4751880f8">  111</a></span>&#160;  <span class="keyword">const</span> std::shared_ptr&lt;::grpc::Channel&gt; <a class="code" href="classprocess_1_1grpc_1_1client_1_1Connection.html#a2ee6f5abf57c66128bb1c5a4751880f8">channel</a>;</div><div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;};</div><div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;</div><div class="line"><a name="l00114"></a><span class="lin
 eno">  114</span>&#160;</div><div class="line"><a name="l00127"></a><span class="lineno"><a class="line" href="classprocess_1_1grpc_1_1client_1_1Runtime.html">  127</a></span>&#160;<span class="keyword">class </span><a class="code" href="classprocess_1_1grpc_1_1client_1_1Runtime.html">Runtime</a></div><div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;{</div><div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00130"></a><span class="lineno"><a class="line" href="classprocess_1_1grpc_1_1client_1_1Runtime.html#a5f7e56d9ebb540a9dbc52c5fb816a024">  130</a></span>&#160;  <a class="code" href="classprocess_1_1grpc_1_1client_1_1Runtime.html#a5f7e56d9ebb540a9dbc52c5fb816a024">Runtime</a>() : data(new Data()) {}</div><div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;</div><div class="line"><a name="l00147"></a><span class="lineno">  147</span>
 &#160;  <span class="keyword">template</span> &lt;</div><div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;      <span class="keyword">typename</span> Method,</div><div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;      <span class="keyword">typename</span> Request =</div><div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;        <span class="keyword">typename</span> <a class="code" href="structprocess_1_1grpc_1_1client_1_1internal_1_1MethodTraits.html">internal::MethodTraits&lt;Method&gt;::request_type</a>,</div><div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;      <span class="keyword">typename</span> <a class="code" href="namespacemesos_1_1internal_1_1tests_1_1v1_1_1scheduler.html#a4e7892daaddcb4dd2e4ebb1266715316">Response</a> =</div><div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;        <span class="keyword">typename</span> <a class="cod
 e" href="structprocess_1_1grpc_1_1client_1_1internal_1_1MethodTraits.html">internal::MethodTraits&lt;Method&gt;::response_type</a>,</div><div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;      <span class="keyword">typename</span> std::enable_if&lt;</div><div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;          std::is_convertible&lt;</div><div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;              <span class="keyword">typename</span> <a class="code" href="namespacemesos_1_1internal_1_1fs.html#a2343e2642db514496ba8380776487fba">std::decay&lt;Request&gt;::type</a>*,</div><div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;              google::protobuf::Message*&gt;::value,</div><div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;          <span class="keywordtype">int</span>&gt;<a class="code" href="namespacemesos_1_1internal_1_1fs.html#a2343
 e2642db514496ba8380776487fba">::type</a> = 0&gt;</div><div class="line"><a name="l00158"></a><span class="lineno"><a class="line" href="classprocess_1_1grpc_1_1client_1_1Runtime.html#a09983451181cdf4c19dd5231e8dfaa86">  158</a></span>&#160;  <a class="code" href="classprocess_1_1Future.html">Future&lt;Try&lt;Response, StatusError&gt;</a>&gt; <a class="code" href="classprocess_1_1grpc_1_1client_1_1Runtime.html#a09983451181cdf4c19dd5231e8dfaa86">call</a>(</div><div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;      <span class="keyword">const</span> <a class="code" href="classprocess_1_1grpc_1_1client_1_1Connection.html">Connection</a>&amp; connection,</div><div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;      Method&amp;&amp; method,</div><div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;      Request&amp;&amp; <a class="code" href="namespaceprocess_1_1http.html#ad8f400b5e54038df7e5662ec35da05fa">re
 quest</a>)</div><div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;  {</div><div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;    <span class="comment">// Create a `Promise` that will be set upon receiving a response.</span></div><div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;    <span class="comment">// TODO(chhsiao): The `Promise` in the `shared_ptr` is not shared, but only</span></div><div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;    <span class="comment">// to be captured by the lambda below. Use a `unique_ptr` once we get C++14.</span></div><div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;    std::shared_ptr&lt;Promise&lt;Try&lt;Response, StatusError&gt;&gt;&gt; <a class="code" href="namespacemesos_1_1internal_1_1log_1_1protocol.html#a3b1f8bd7b18c51af9d1f58842950b545">promise</a>(</div><div class="line"><a name="l00167"></a><span cla
 ss="lineno">  167</span>&#160;        <span class="keyword">new</span> <a class="code" href="classprocess_1_1Promise.html">Promise</a>&lt;<a class="code" href="classTry.html">Try&lt;Response, StatusError&gt;</a>&gt;);</div><div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;    <a class="code" href="classprocess_1_1Future.html">Future&lt;Try&lt;Response, StatusError&gt;</a>&gt; future = promise-&gt;future();</div><div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;</div><div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;    <span class="comment">// Send the request in the internal runtime process.</span></div><div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;    <span class="comment">// TODO(chhsiao): We use `std::bind` here to forward `request` to avoid an</span></div><div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;    <span class="comment">// ext
 ra copy. We should capture it by forwarding once we get C++14.</span></div><div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;    <a class="code" href="namespaceprocess.html#acfbc29404bc653268289691b0dd59e22">dispatch</a>(data-&gt;pid, &amp;<a class="code" href="namespacenet.html#aa0a46766b4aca53ea50e1921567ddb40">RuntimeProcess::send</a>, <a class="code" href="namespaceprocess_1_1network.html#ad067110a4b38cc83785a43f49bf6c8e2">std::bind</a>(</div><div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;        [connection, method, promise](</div><div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;            <span class="keyword">const</span> Request&amp; <a class="code" href="namespaceprocess_1_1http.html#ad8f400b5e54038df7e5662ec35da05fa">request</a>,</div><div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;            <span class="keywordtype">bool</span> terminating,</div><div cl
 ass="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;            ::grpc::CompletionQueue* queue) {</div><div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;          if (terminating) {</div><div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;            promise-&gt;fail(<span class="stringliteral">&quot;Runtime has been terminated&quot;</span>);</div><div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;            return;</div><div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;          }</div><div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160;</div><div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;          <span class="comment">// TODO(chhsiao): The `shared_ptr`s here aren&#39;t shared, but only to be</span></div><div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;          <span c
 lass="comment">// captured by the lambda below. Use `unique_ptr`s once we get C++14.</span></div><div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;          std::shared_ptr&lt;::grpc::ClientContext&gt; <a class="code" href="namespaceprocess_1_1network_1_1openssl.html#a9ea7f1e144d9731d6fb4e4a0d80a7c56">context</a>(</div><div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;              new ::grpc::ClientContext());</div><div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;</div><div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;          <span class="comment">// TODO(chhsiao): Allow the caller to specify a timeout.</span></div><div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160;          <a class="code" href="namespaceprocess_1_1network_1_1openssl.html#a9ea7f1e144d9731d6fb4e4a0d80a7c56">context</a>-&gt;set_deadline(</div><div class="line"><a name="l00190"
 ></a><span class="lineno">  190</span>&#160;              std::chrono::system_clock::now() + std::chrono::seconds(5));</div><div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160;</div><div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;          <span class="comment">// Enable the gRPC wait-for-ready semantics by default. See:</span></div><div class="line"><a name="l00193"></a><span class="lineno">  193</span>&#160;          <span class="comment">// https://github.com/grpc/grpc/blob/master/doc/wait-for-ready.md</span></div><div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#160;          <span class="comment">// TODO(chhsiao): Allow the caller to set the option.</span></div><div class="line"><a name="l00195"></a><span class="lineno">  195</span>&#160;          <a class="code" href="namespaceprocess_1_1network_1_1openssl.html#a9ea7f1e144d9731d6fb4e4a0d80a7c56">context</a>-&gt;set_wait_for_ready(<span class="keywo
 rd">true</span>);</div><div class="line"><a name="l00196"></a><span class="lineno">  196</span>&#160;</div><div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;          promise-&gt;future().onDiscard([=] { <a class="code" href="namespaceprocess_1_1network_1_1openssl.html#a9ea7f1e144d9731d6fb4e4a0d80a7c56">context</a>-&gt;TryCancel(); });</div><div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160;</div><div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160;          std::shared_ptr&lt;Response&gt; response(<span class="keyword">new</span> <a class="code" href="namespacemesos_1_1internal_1_1tests_1_1v1_1_1scheduler.html#a4e7892daaddcb4dd2e4ebb1266715316">Response</a>());</div><div class="line"><a name="l00200"></a><span class="lineno">  200</span>&#160;          std::shared_ptr&lt;::grpc::Status&gt; <a class="code" href="classprocess_1_1grpc_1_1StatusError.html#a7182af947b263c08393be3c9420199b5">status</a>(new ::
 grpc::Status());</div><div class="line"><a name="l00201"></a><span class="lineno">  201</span>&#160;</div><div class="line"><a name="l00202"></a><span class="lineno">  202</span>&#160;          std::shared_ptr&lt;::grpc::ClientAsyncResponseReader&lt;Response&gt;&gt; reader =</div><div class="line"><a name="l00203"></a><span class="lineno">  203</span>&#160;            (<span class="keyword">typename</span> <a class="code" href="structprocess_1_1grpc_1_1client_1_1internal_1_1MethodTraits.html">internal::MethodTraits&lt;Method&gt;::stub_type</a>(</div><div class="line"><a name="l00204"></a><span class="lineno">  204</span>&#160;                connection.<a class="code" href="classprocess_1_1grpc_1_1client_1_1Connection.html#a2ee6f5abf57c66128bb1c5a4751880f8">channel</a>).*method)(<a class="code" href="namespaceprocess_1_1network_1_1openssl.html#a9ea7f1e144d9731d6fb4e4a0d80a7c56">context</a>.get(), <a class="code" href="namespaceprocess_1_1http.html#ad8f400b5e54038df7e5662ec35da05fa">
 request</a>, queue);</div><div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160;</div><div class="line"><a name="l00206"></a><span class="lineno">  206</span>&#160;          reader-&gt;StartCall();</div><div class="line"><a name="l00207"></a><span class="lineno">  207</span>&#160;</div><div class="line"><a name="l00208"></a><span class="lineno">  208</span>&#160;          <span class="comment">// Create a `ReceiveCallback` as a tag in the `CompletionQueue` for</span></div><div class="line"><a name="l00209"></a><span class="lineno">  209</span>&#160;          <span class="comment">// the current asynchronous gRPC call. The callback will set up the</span></div><div class="line"><a name="l00210"></a><span class="lineno">  210</span>&#160;          <span class="comment">// above `Promise` upon receiving a response.</span></div><div class="line"><a name="l00211"></a><span class="lineno">  211</span>&#160;          <span class="comment">// NOTE: `context` and `read
 er` need to be held on in order to get</span></div><div class="line"><a name="l00212"></a><span class="lineno">  212</span>&#160;          <span class="comment">// updates for the ongoing RPC, and thus are captured here. The</span></div><div class="line"><a name="l00213"></a><span class="lineno">  213</span>&#160;          <span class="comment">// callback itself will later be retrieved and managed in the</span></div><div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160;          <span class="comment">// looper thread.</span></div><div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160;          <span class="keywordtype">void</span>* tag = <span class="keyword">new</span> <a class="code" href="classlambda_1_1CallableOnce.html">ReceiveCallback</a>(</div><div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#160;              [<a class="code" href="namespaceprocess_1_1network_1_1openssl.html#a9ea7f1e144d9731d6fb4e4a0d80a
 7c56">context</a>, reader, response, status, promise]() {</div><div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160;                <a class="code" href="libprocess_2include_2process_2check_8hpp.html#a3e2ba5c8589f7f5799251a12409e142c">CHECK_PENDING</a>(promise-&gt;future());</div><div class="line"><a name="l00218"></a><span class="lineno">  218</span>&#160;                <span class="keywordflow">if</span> (promise-&gt;future().hasDiscard()) {</div><div class="line"><a name="l00219"></a><span class="lineno">  219</span>&#160;                  promise-&gt;discard();</div><div class="line"><a name="l00220"></a><span class="lineno">  220</span>&#160;                } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00221"></a><span class="lineno">  221</span>&#160;                  promise-&gt;set(status-&gt;ok()</div><div class="line"><a name="l00222"></a><span class="lineno">  222</span>&#160;                    ? std::move(*response)
 </div><div class="line"><a name="l00223"></a><span class="lineno">  223</span>&#160;                    : <a class="code" href="classTry.html#abb21343eabcba0eb0d88f13c4fbdf1f7">Try&lt;Response, StatusError&gt;::error</a>(std::move(*status)));</div><div class="line"><a name="l00224"></a><span class="lineno">  224</span>&#160;                }</div><div class="line"><a name="l00225"></a><span class="lineno">  225</span>&#160;              });</div><div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;</div><div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160;          reader-&gt;Finish(response.get(), status.get(), tag);</div><div class="line"><a name="l00228"></a><span class="lineno">  228</span>&#160;        },</div><div class="line"><a name="l00229"></a><span class="lineno">  229</span>&#160;        std::forward&lt;Request&gt;(<a class="code" href="namespaceprocess_1_1http.html#ad8f400b5e54038df7e5662ec35da05fa">request</a>),</div><d
 iv class="line"><a name="l00230"></a><span class="lineno">  230</span>&#160;        lambda::_1,</div><div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160;        lambda::_2));</div><div class="line"><a name="l00232"></a><span class="lineno">  232</span>&#160;</div><div class="line"><a name="l00233"></a><span class="lineno">  233</span>&#160;    <span class="keywordflow">return</span> future;</div><div class="line"><a name="l00234"></a><span class="lineno">  234</span>&#160;  }</div><div class="line"><a name="l00235"></a><span class="lineno">  235</span>&#160;</div><div class="line"><a name="l00241"></a><span class="lineno">  241</span>&#160;  <span class="keywordtype">void</span> <a class="code" href="namespaceprocess.html#a20443908afa3212215166e26065349e5">terminate</a>();</div><div class="line"><a name="l00242"></a><span class="lineno">  242</span>&#160;</div><div class="line"><a name="l00248"></a><span class="lineno">  248</span>&#160;  <a class="code" hr
 ef="classprocess_1_1Future.html">Future&lt;Nothing&gt;</a> <a class="code" href="namespaceprocess.html#a07833fb41a8b0c1f18fa5485ca8c18d4">wait</a>();</div><div class="line"><a name="l00249"></a><span class="lineno">  249</span>&#160;</div><div class="line"><a name="l00250"></a><span class="lineno">  250</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00251"></a><span class="lineno">  251</span>&#160;  <span class="comment">// Type of the callback functions that can get invoked when sending a request</span></div><div class="line"><a name="l00252"></a><span class="lineno">  252</span>&#160;  <span class="comment">// or receiving a response.</span></div><div class="line"><a name="l00253"></a><span class="lineno">  253</span>&#160;  <span class="keyword">typedef</span> <a class="code" href="classlambda_1_1CallableOnce.html">lambda::CallableOnce</a>&lt;</div><div class="line"><a name="l00254"></a><span class="lineno">  254</span>&#160;      void(<span c
 lass="keywordtype">bool</span>, ::grpc::CompletionQueue*)&gt; <a class="code" href="classlambda_1_1CallableOnce.html">SendCallback</a>;</div><div class="line"><a name="l00255"></a><span class="lineno">  255</span>&#160;  <span class="keyword">typedef</span> <a class="code" href="classlambda_1_1CallableOnce.html">lambda::CallableOnce&lt;void()&gt;</a> <a class="code" href="classlambda_1_1CallableOnce.html">ReceiveCallback</a>;</div><div class="line"><a name="l00256"></a><span class="lineno">  256</span>&#160;</div><div class="line"><a name="l00257"></a><span class="lineno">  257</span>&#160;  <span class="keyword">class </span>RuntimeProcess : <span class="keyword">public</span> <a class="code" href="classprocess_1_1Process.html">Process</a>&lt;RuntimeProcess&gt;</div><div class="line"><a name="l00258"></a><span class="lineno">  258</span>&#160;  {</div><div class="line"><a name="l00259"></a><span class="lineno">  259</span>&#160;  <span class="keyword">public</span>:</div><div class
 ="line"><a name="l00260"></a><span class="lineno">  260</span>&#160;    RuntimeProcess();</div><div class="line"><a name="l00261"></a><span class="lineno">  261</span>&#160;    <span class="keyword">virtual</span> ~RuntimeProcess();</div><div class="line"><a name="l00262"></a><span class="lineno">  262</span>&#160;</div><div class="line"><a name="l00263"></a><span class="lineno">  263</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="namespacenet.html#aa0a46766b4aca53ea50e1921567ddb40">send</a>(SendCallback callback);</div><div class="line"><a name="l00264"></a><span class="lineno">  264</span>&#160;    <span class="keywordtype">void</span> receive(ReceiveCallback callback);</div><div class="line"><a name="l00265"></a><span class="lineno">  265</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="namespaceprocess.html#a20443908afa3212215166e26065349e5">terminate</a>();</div><div class="line"><a name="l00266"></a><span class="lineno"> 
  266</span>&#160;    <a class="code" href="classprocess_1_1Future.html">Future&lt;Nothing&gt;</a> <a class="code" href="namespaceprocess.html#a07833fb41a8b0c1f18fa5485ca8c18d4">wait</a>();</div><div class="line"><a name="l00267"></a><span class="lineno">  267</span>&#160;</div><div class="line"><a name="l00268"></a><span class="lineno">  268</span>&#160;  <span class="keyword">private</span>:</div><div class="line"><a name="l00269"></a><span class="lineno">  269</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="namespaceprocess.html#a6c9cd01950a98038b2a6df3e5066418f">initialize</a>() <span class="keyword">override</span>;</div><div class="line"><a name="l00270"></a><span class="lineno">  270</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="namespaceprocess.html#a238371634a6637198c58ea740b0890ca">finalize</a>() <span class="keyword">override</span>;</div><div class="line"><a name="l00271"></a><span class="lineno">  271</span>&#160;
 </div><div class="line"><a name="l00272"></a><span class="lineno">  272</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="namespaceprocess.html#a59c192ee8ea5abbbee1642957f47c92a">loop</a>();</div><div class="line"><a name="l00273"></a><span class="lineno">  273</span>&#160;</div><div class="line"><a name="l00274"></a><span class="lineno">  274</span>&#160;    ::grpc::CompletionQueue queue;</div><div class="line"><a name="l00275"></a><span class="lineno">  275</span>&#160;    std::unique_ptr&lt;std::thread&gt; looper;</div><div class="line"><a name="l00276"></a><span class="lineno">  276</span>&#160;    <span class="keywordtype">bool</span> terminating;</div><div class="line"><a name="l00277"></a><span class="lineno">  277</span>&#160;    <a class="code" href="classprocess_1_1Promise.html">Promise&lt;Nothing&gt;</a> terminated;</div><div class="line"><a name="l00278"></a><span class="lineno">  278</span>&#160;  };</div><div class="line"><a name="l00279"></a>
 <span class="lineno">  279</span>&#160;</div><div class="line"><a name="l00280"></a><span class="lineno">  280</span>&#160;  <span class="keyword">struct </span>Data</div><div class="line"><a name="l00281"></a><span class="lineno">  281</span>&#160;  {</div><div class="line"><a name="l00282"></a><span class="lineno">  282</span>&#160;     Data();</div><div class="line"><a name="l00283"></a><span class="lineno">  283</span>&#160;     ~Data();</div><div class="line"><a name="l00284"></a><span class="lineno">  284</span>&#160;</div><div class="line"><a name="l00285"></a><span class="lineno">  285</span>&#160;     <a class="code" href="structprocess_1_1PID.html">PID&lt;RuntimeProcess&gt;</a> pid;</div><div class="line"><a name="l00286"></a><span class="lineno">  286</span>&#160;     <a class="code" href="classprocess_1_1Future.html">Future&lt;Nothing&gt;</a> terminated;</div><div class="line"><a name="l00287"></a><span class="lineno">  287</span>&#160;  };</div><div class="line"><a name
 ="l00288"></a><span class="lineno">  288</span>&#160;</div><div class="line"><a name="l00289"></a><span class="lineno">  289</span>&#160;  std::shared_ptr&lt;Data&gt; data;</div><div class="line"><a name="l00290"></a><span class="lineno">  290</span>&#160;};</div><div class="line"><a name="l00291"></a><span class="lineno">  291</span>&#160;</div><div class="line"><a name="l00292"></a><span class="lineno">  292</span>&#160;} <span class="comment">// namespace client {</span></div><div class="line"><a name="l00293"></a><span class="lineno">  293</span>&#160;</div><div class="line"><a name="l00294"></a><span class="lineno">  294</span>&#160;} <span class="comment">// namespace grpc {</span></div><div class="line"><a name="l00295"></a><span class="lineno">  295</span>&#160;} <span class="comment">// namespace process {</span></div><div class="line"><a name="l00296"></a><span class="lineno">  296</span>&#160;</div><div class="line"><a name="l00297"></a><span class="lineno">  297</span>&#
 160;<span class="preprocessor">#endif // __PROCESS_GRPC_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>
+<a href="grpc_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>&#160;<span class="comment">// Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<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>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<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>&#160;<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>&#160;<span class="comment">// distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<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>&#160;<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>&#160;<span class="comment">// limitations under the License</span></div><div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;</div><div class="line
 "><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="preprocessor">#ifndef __PROCESS_GRPC_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="preprocessor">#define __PROCESS_GRPC_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;</div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="preprocessor">#include &lt;chrono&gt;</span></div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="preprocessor">#include &lt;memory&gt;</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span></div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;<span class="preprocessor">#include &lt;thread&gt;</span></div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&
 #160;<span class="preprocessor">#include &lt;type_traits&gt;</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="preprocessor">#include &lt;utility&gt;</span></div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="preprocessor">#include &lt;google/protobuf/message.h&gt;</span></div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;</div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="preprocessor">#include &lt;grpcpp/grpcpp.h&gt;</span></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>&#160;<span class="preprocessor">#include &lt;<a class="code" href="libprocess_2include_2process_2check_8hpp.html">process/check.hpp</a>&gt;</span><
 /div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="dispatch_8hpp.html">process/dispatch.hpp</a>&gt;</span></div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="future_8hpp.html">process/future.hpp</a>&gt;</span></div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="3rdparty_2libprocess_2include_2process_2pid_8hpp.html">process/pid.hpp</a>&gt;</span></div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="libprocess_2include_2process_2process_8hpp.html">process/process.hpp</a>&gt;</span></div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;</div><div class="line"><a name="l00033"></a><span class
 ="lineno">   33</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="error_8hpp.html">stout/error.hpp</a>&gt;</span></div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="lambda_8hpp.html">stout/lambda.hpp</a>&gt;</span></div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="nothing_8hpp.html">stout/nothing.hpp</a>&gt;</span></div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="try_8hpp.html">stout/try.hpp</a>&gt;</span></div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;</div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;<span class="comment">// Th
 is file provides libprocess &quot;support&quot; for using gRPC. In particular, it</span></div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;<span class="comment">// defines two wrapper classes: `client::Connection` which represents a</span></div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;<span class="comment">// connection to a gRPC server, and `client::Runtime` which integrates an event</span></div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;<span class="comment">// loop waiting for gRPC responses and provides the `call` interface to create</span></div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;<span class="comment">// an asynchronous gRPC call and return a `Future`.</span></div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;</div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;</div><div
  class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="grpc_8hpp.html#af26d5c763831ad955bb9742db25c5f75">   46</a></span>&#160;<span class="preprocessor">#define GRPC_CLIENT_METHOD(service, rpc) \</span></div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;<span class="preprocessor">  (&amp;service::Stub::PrepareAsync##rpc)</span></div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;</div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceprocess.html">process</a> {</div><div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="namespaceprocess_1_1grpc.html">   50</a></span>&#160;<span class="keyword">namespace </span>grpc {</div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;</div><div class="line"><a name="l00056"></a><span class="lineno"><a class="l
 ine" href="classprocess_1_1grpc_1_1StatusError.html">   56</a></span>&#160;<span class="keyword">class </span><a class="code" href="classprocess_1_1grpc_1_1StatusError.html">StatusError</a> : <span class="keyword">public</span> <a class="code" href="classError.html">Error</a></div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;{</div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="classprocess_1_1grpc_1_1StatusError.html#af8b12349660968c3171d71d48d82111b">   59</a></span>&#160;  <a class="code" href="classprocess_1_1grpc_1_1StatusError.html#af8b12349660968c3171d71d48d82111b">StatusError</a>(::grpc::Status _status)</div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;    : <a class="code" href="classError.html">Error</a>(_status.error_message()), <a class="code" href="clas
 sprocess_1_1grpc_1_1StatusError.html#a7182af947b263c08393be3c9420199b5">status</a>(<a class="code" href="namespacestd.html">std</a>::move(_status))</div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;  {</div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;    CHECK(!<a class="code" href="classprocess_1_1grpc_1_1StatusError.html#a7182af947b263c08393be3c9420199b5">status</a>.ok());</div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;  }</div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;</div><div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="classprocess_1_1grpc_1_1StatusError.html#a7182af947b263c08393be3c9420199b5">   65</a></span>&#160;  const ::grpc::Status <a class="code" href="classprocess_1_1grpc_1_1StatusError.html#a7182af947b263c08393be3c9420199b5">status</a>;</div><div class="line"><a name="l00066"></a><span class="lineno
 ">   66</span>&#160;};</div><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;</div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;</div><div class="line"><a name="l00069"></a><span class="lineno"><a class="line" href="namespaceprocess_1_1grpc_1_1client.html">   69</a></span>&#160;<span class="keyword">namespace </span>client {</div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;</div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;<span class="comment">// Internal helper utilities.</span></div><div class="line"><a name="l00072"></a><span class="lineno"><a class="line" href="namespaceprocess_1_1grpc_1_1client_1_1internal.html">   72</a></span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceinternal.html">internal</a> {</div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;</div><div class="line"><a name="l000
 74"></a><span class="lineno">   74</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l00075"></a><span class="lineno"><a class="line" href="structprocess_1_1grpc_1_1client_1_1internal_1_1MethodTraits.html">   75</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structprocess_1_1grpc_1_1client_1_1internal_1_1MethodTraits.html">MethodTraits</a>; <span class="comment">// Undefined.</span></div><div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;</div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;</div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Stub, <span class="keyword">typename</span> Request, <span class="keyword">typename</span> Response&gt;</div><div class="line"><a name="l00079"></a><span class="lineno"><a c
 lass="line" href="structprocess_1_1grpc_1_1client_1_1internal_1_1MethodTraits_3_01std_1_1unique__ptr_3_1_1grpc_1_1b922a69900827d65b241714130bc07ca.html">   79</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structprocess_1_1grpc_1_1client_1_1internal_1_1MethodTraits.html">MethodTraits</a>&lt;</div><div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;    <a class="code" href="namespacestd.html">std</a>::unique_ptr&lt;::grpc::ClientAsyncResponseReader&lt;Response&gt;&gt;(Stub::*)(</div><div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;        ::grpc::ClientContext*,</div><div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;        const Request&amp;,</div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;        ::grpc::CompletionQueue*)&gt;</div><div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;{</div><div class="line"><a name
 ="l00085"></a><span class="lineno"><a class="line" href="structprocess_1_1grpc_1_1client_1_1internal_1_1MethodTraits_3_01std_1_1unique__ptr_3_1_1grpc_1_1b922a69900827d65b241714130bc07ca.html#af96bd68c2ee624f2bade6bb587726897">   85</a></span>&#160;  <span class="keyword">typedef</span> Stub <a class="code" href="structprocess_1_1grpc_1_1client_1_1internal_1_1MethodTraits_3_01std_1_1unique__ptr_3_1_1grpc_1_1b922a69900827d65b241714130bc07ca.html#af96bd68c2ee624f2bade6bb587726897">stub_type</a>;</div><div class="line"><a name="l00086"></a><span class="lineno"><a class="line" href="structprocess_1_1grpc_1_1client_1_1internal_1_1MethodTraits_3_01std_1_1unique__ptr_3_1_1grpc_1_1b922a69900827d65b241714130bc07ca.html#adcf2f58a91926bbfbbf3f9aa4979cd38">   86</a></span>&#160;  <span class="keyword">typedef</span> Request <a class="code" href="structprocess_1_1grpc_1_1client_1_1internal_1_1MethodTraits_3_01std_1_1unique__ptr_3_1_1grpc_1_1b922a69900827d65b241714130bc07ca.html#adcf2f58a91926bbfb
 bf3f9aa4979cd38">request_type</a>;</div><div class="line"><a name="l00087"></a><span class="lineno"><a class="line" href="structprocess_1_1grpc_1_1client_1_1internal_1_1MethodTraits_3_01std_1_1unique__ptr_3_1_1grpc_1_1b922a69900827d65b241714130bc07ca.html#a39b26e8b5b508708af0b6468a31dcab5">   87</a></span>&#160;  <span class="keyword">typedef</span> <a class="code" href="namespacemesos_1_1internal_1_1tests_1_1v1_1_1scheduler.html#a4e7892daaddcb4dd2e4ebb1266715316">Response</a> <a class="code" href="structprocess_1_1grpc_1_1client_1_1internal_1_1MethodTraits_3_01std_1_1unique__ptr_3_1_1grpc_1_1b922a69900827d65b241714130bc07ca.html#a39b26e8b5b508708af0b6468a31dcab5">response_type</a>;</div><div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;};</div><div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;</div><div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;} <span class="comment">// namespace internal {</spa
 n></div><div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;</div><div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;</div><div class="line"><a name="l00099"></a><span class="lineno"><a class="line" href="classprocess_1_1grpc_1_1client_1_1Connection.html">   99</a></span>&#160;<span class="keyword">class </span><a class="code" href="classprocess_1_1grpc_1_1client_1_1Connection.html">Connection</a></div><div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;{</div><div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00102"></a><span class="lineno"><a class="line" href="classprocess_1_1grpc_1_1client_1_1Connection.html#a60863492f258db095f4ce19c45d4fed5">  102</a></span>&#160;  <a class="code" href="classprocess_1_1grpc_1_1client_1_1Connection.html#a60863492f258db095f4ce19c45d4fed5">Connection</a>(</div><div class="li
 ne"><a name="l00103"></a><span class="lineno">  103</span>&#160;      <span class="keyword">const</span> std::string&amp; <a class="code" href="namespaceuri.html">uri</a>,</div><div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;      <span class="keyword">const</span> std::shared_ptr&lt;::grpc::ChannelCredentials&gt;&amp; credentials =</div><div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;        ::grpc::InsecureChannelCredentials())</div><div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;    : channel(::grpc::CreateChannel(uri, credentials)) {}</div><div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;</div><div class="line"><a name="l00108"></a><span class="lineno"><a class="line" href="classprocess_1_1grpc_1_1client_1_1Connection.html#abe61ce221a6e43836ea28d97e6b2db94">  108</a></span>&#160;  <span class="keyword">explicit</span> <a class="code" href="classprocess_1_1grpc_1
 _1client_1_1Connection.html#abe61ce221a6e43836ea28d97e6b2db94">Connection</a>(std::shared_ptr&lt;::grpc::Channel&gt; _channel)</div><div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;    : channel(<a class="code" href="namespacestd.html">std</a>::move(_channel)) {}</div><div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;</div><div class="line"><a name="l00111"></a><span class="lineno"><a class="line" href="classprocess_1_1grpc_1_1client_1_1Connection.html#a2ee6f5abf57c66128bb1c5a4751880f8">  111</a></span>&#160;  <span class="keyword">const</span> std::shared_ptr&lt;::grpc::Channel&gt; <a class="code" href="classprocess_1_1grpc_1_1client_1_1Connection.html#a2ee6f5abf57c66128bb1c5a4751880f8">channel</a>;</div><div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;};</div><div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;</div><div class="line"><a name="l00114"></a><span class="lin
 eno">  114</span>&#160;</div><div class="line"><a name="l00127"></a><span class="lineno"><a class="line" href="classprocess_1_1grpc_1_1client_1_1Runtime.html">  127</a></span>&#160;<span class="keyword">class </span><a class="code" href="classprocess_1_1grpc_1_1client_1_1Runtime.html">Runtime</a></div><div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;{</div><div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00130"></a><span class="lineno"><a class="line" href="classprocess_1_1grpc_1_1client_1_1Runtime.html#a5f7e56d9ebb540a9dbc52c5fb816a024">  130</a></span>&#160;  <a class="code" href="classprocess_1_1grpc_1_1client_1_1Runtime.html#a5f7e56d9ebb540a9dbc52c5fb816a024">Runtime</a>() : data(new Data()) {}</div><div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;</div><div class="line"><a name="l00147"></a><span class="lineno">  147</span>
 &#160;  <span class="keyword">template</span> &lt;</div><div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;      <span class="keyword">typename</span> Method,</div><div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;      <span class="keyword">typename</span> Request =</div><div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;        <span class="keyword">typename</span> <a class="code" href="structprocess_1_1grpc_1_1client_1_1internal_1_1MethodTraits.html">internal::MethodTraits&lt;Method&gt;::request_type</a>,</div><div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;      <span class="keyword">typename</span> <a class="code" href="namespacemesos_1_1internal_1_1tests_1_1v1_1_1scheduler.html#a4e7892daaddcb4dd2e4ebb1266715316">Response</a> =</div><div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;        <span class="keyword">typename</span> <a class="cod
 e" href="structprocess_1_1grpc_1_1client_1_1internal_1_1MethodTraits.html">internal::MethodTraits&lt;Method&gt;::response_type</a>,</div><div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;      <span class="keyword">typename</span> std::enable_if&lt;</div><div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;          std::is_convertible&lt;</div><div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;              <span class="keyword">typename</span> <a class="code" href="namespacemesos_1_1internal_1_1fs.html#a2343e2642db514496ba8380776487fba">std::decay&lt;Request&gt;::type</a>*,</div><div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;              google::protobuf::Message*&gt;::value,</div><div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;          <span class="keywordtype">int</span>&gt;<a class="code" href="namespacemesos_1_1internal_1_1fs.html#a2343
 e2642db514496ba8380776487fba">::type</a> = 0&gt;</div><div class="line"><a name="l00158"></a><span class="lineno"><a class="line" href="classprocess_1_1grpc_1_1client_1_1Runtime.html#a09983451181cdf4c19dd5231e8dfaa86">  158</a></span>&#160;  <a class="code" href="classprocess_1_1Future.html">Future&lt;Try&lt;Response, StatusError&gt;</a>&gt; <a class="code" href="classprocess_1_1grpc_1_1client_1_1Runtime.html#a09983451181cdf4c19dd5231e8dfaa86">call</a>(</div><div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;      <span class="keyword">const</span> <a class="code" href="classprocess_1_1grpc_1_1client_1_1Connection.html">Connection</a>&amp; connection,</div><div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;      Method&amp;&amp; method,</div><div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;      Request&amp;&amp; <a class="code" href="namespaceprocess_1_1http.html#ad8f400b5e54038df7e5662ec35da05fa">re
 quest</a>)</div><div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;  {</div><div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;    <span class="comment">// Create a `Promise` that will be set upon receiving a response.</span></div><div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;    <span class="comment">// TODO(chhsiao): The `Promise` in the `shared_ptr` is not shared, but only</span></div><div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;    <span class="comment">// to be captured by the lambda below. Use a `unique_ptr` once we get C++14.</span></div><div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;    std::shared_ptr&lt;Promise&lt;Try&lt;Response, StatusError&gt;&gt;&gt; <a class="code" href="namespacemesos_1_1internal_1_1log_1_1protocol.html#a3b1f8bd7b18c51af9d1f58842950b545">promise</a>(</div><div class="line"><a name="l00167"></a><span cla
 ss="lineno">  167</span>&#160;        <span class="keyword">new</span> <a class="code" href="classprocess_1_1Promise.html">Promise</a>&lt;<a class="code" href="classTry.html">Try&lt;Response, StatusError&gt;</a>&gt;);</div><div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;    <a class="code" href="classprocess_1_1Future.html">Future&lt;Try&lt;Response, StatusError&gt;</a>&gt; future = promise-&gt;future();</div><div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;</div><div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;    <span class="comment">// Send the request in the internal runtime process.</span></div><div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;    <span class="comment">// TODO(chhsiao): We use `std::bind` here to forward `request` to avoid an</span></div><div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;    <span class="comment">// ext
 ra copy. We should capture it by forwarding once we get C++14.</span></div><div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;    <a class="code" href="namespaceprocess.html#acfbc29404bc653268289691b0dd59e22">dispatch</a>(data-&gt;pid, &amp;<a class="code" href="namespaceprocess_1_1windows.html#a04c64346155d34517acdf8b587162868">RuntimeProcess::send</a>, <a class="code" href="namespaceprocess_1_1network.html#ad067110a4b38cc83785a43f49bf6c8e2">std::bind</a>(</div><div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;        [connection, method, promise](</div><div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;            <span class="keyword">const</span> Request&amp; <a class="code" href="namespaceprocess_1_1http.html#ad8f400b5e54038df7e5662ec35da05fa">request</a>,</div><div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;            <span class="keywordtype">bool</span> terminatin
 g,</div><div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;            ::grpc::CompletionQueue* queue) {</div><div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;          if (terminating) {</div><div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;            promise-&gt;fail(<span class="stringliteral">&quot;Runtime has been terminated&quot;</span>);</div><div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;            return;</div><div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;          }</div><div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160;</div><div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;          <span class="comment">// TODO(chhsiao): The `shared_ptr`s here aren&#39;t shared, but only to be</span></div><div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;  
         <span class="comment">// captured by the lambda below. Use `unique_ptr`s once we get C++14.</span></div><div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;          std::shared_ptr&lt;::grpc::ClientContext&gt; <a class="code" href="namespaceprocess_1_1network_1_1openssl.html#a9ea7f1e144d9731d6fb4e4a0d80a7c56">context</a>(</div><div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;              new ::grpc::ClientContext());</div><div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;</div><div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;          <span class="comment">// TODO(chhsiao): Allow the caller to specify a timeout.</span></div><div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160;          <a class="code" href="namespaceprocess_1_1network_1_1openssl.html#a9ea7f1e144d9731d6fb4e4a0d80a7c56">context</a>-&gt;set_deadline(</div><div class="line"><
 a name="l00190"></a><span class="lineno">  190</span>&#160;              std::chrono::system_clock::now() + std::chrono::seconds(5));</div><div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160;</div><div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;          <span class="comment">// Enable the gRPC wait-for-ready semantics by default. See:</span></div><div class="line"><a name="l00193"></a><span class="lineno">  193</span>&#160;          <span class="comment">// https://github.com/grpc/grpc/blob/master/doc/wait-for-ready.md</span></div><div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#160;          <span class="comment">// TODO(chhsiao): Allow the caller to set the option.</span></div><div class="line"><a name="l00195"></a><span class="lineno">  195</span>&#160;          <a class="code" href="namespaceprocess_1_1network_1_1openssl.html#a9ea7f1e144d9731d6fb4e4a0d80a7c56">context</a>-&gt;set_wait_for_ready(<sp
 an class="keyword">true</span>);</div><div class="line"><a name="l00196"></a><span class="lineno">  196</span>&#160;</div><div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;          promise-&gt;future().onDiscard([=] { <a class="code" href="namespaceprocess_1_1network_1_1openssl.html#a9ea7f1e144d9731d6fb4e4a0d80a7c56">context</a>-&gt;TryCancel(); });</div><div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160;</div><div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160;          std::shared_ptr&lt;Response&gt; response(<span class="keyword">new</span> <a class="code" href="namespacemesos_1_1internal_1_1tests_1_1v1_1_1scheduler.html#a4e7892daaddcb4dd2e4ebb1266715316">Response</a>());</div><div class="line"><a name="l00200"></a><span class="lineno">  200</span>&#160;          std::shared_ptr&lt;::grpc::Status&gt; <a class="code" href="classprocess_1_1grpc_1_1StatusError.html#a7182af947b263c08393be3c9420199b5">st
 atus</a>(new ::grpc::Status());</div><div class="line"><a name="l00201"></a><span class="lineno">  201</span>&#160;</div><div class="line"><a name="l00202"></a><span class="lineno">  202</span>&#160;          std::shared_ptr&lt;::grpc::ClientAsyncResponseReader&lt;Response&gt;&gt; reader =</div><div class="line"><a name="l00203"></a><span class="lineno">  203</span>&#160;            (<span class="keyword">typename</span> <a class="code" href="structprocess_1_1grpc_1_1client_1_1internal_1_1MethodTraits.html">internal::MethodTraits&lt;Method&gt;::stub_type</a>(</div><div class="line"><a name="l00204"></a><span class="lineno">  204</span>&#160;                connection.<a class="code" href="classprocess_1_1grpc_1_1client_1_1Connection.html#a2ee6f5abf57c66128bb1c5a4751880f8">channel</a>).*method)(<a class="code" href="namespaceprocess_1_1network_1_1openssl.html#a9ea7f1e144d9731d6fb4e4a0d80a7c56">context</a>.get(), <a class="code" href="namespaceprocess_1_1http.html#ad8f400b5e54038df7e5
 662ec35da05fa">request</a>, queue);</div><div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160;</div><div class="line"><a name="l00206"></a><span class="lineno">  206</span>&#160;          reader-&gt;StartCall();</div><div class="line"><a name="l00207"></a><span class="lineno">  207</span>&#160;</div><div class="line"><a name="l00208"></a><span class="lineno">  208</span>&#160;          <span class="comment">// Create a `ReceiveCallback` as a tag in the `CompletionQueue` for</span></div><div class="line"><a name="l00209"></a><span class="lineno">  209</span>&#160;          <span class="comment">// the current asynchronous gRPC call. The callback will set up the</span></div><div class="line"><a name="l00210"></a><span class="lineno">  210</span>&#160;          <span class="comment">// above `Promise` upon receiving a response.</span></div><div class="line"><a name="l00211"></a><span class="lineno">  211</span>&#160;          <span class="comment">// NOTE: `con
 text` and `reader` need to be held on in order to get</span></div><div class="line"><a name="l00212"></a><span class="lineno">  212</span>&#160;          <span class="comment">// updates for the ongoing RPC, and thus are captured here. The</span></div><div class="line"><a name="l00213"></a><span class="lineno">  213</span>&#160;          <span class="comment">// callback itself will later be retrieved and managed in the</span></div><div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160;          <span class="comment">// looper thread.</span></div><div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160;          <span class="keywordtype">void</span>* tag = <span class="keyword">new</span> <a class="code" href="classlambda_1_1CallableOnce.html">ReceiveCallback</a>(</div><div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#160;              [<a class="code" href="namespaceprocess_1_1network_1_1openssl.html#a9ea7f1e144d97
 31d6fb4e4a0d80a7c56">context</a>, reader, response, status, promise]() {</div><div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160;                <a class="code" href="libprocess_2include_2process_2check_8hpp.html#a3e2ba5c8589f7f5799251a12409e142c">CHECK_PENDING</a>(promise-&gt;future());</div><div class="line"><a name="l00218"></a><span class="lineno">  218</span>&#160;                <span class="keywordflow">if</span> (promise-&gt;future().hasDiscard()) {</div><div class="line"><a name="l00219"></a><span class="lineno">  219</span>&#160;                  promise-&gt;discard();</div><div class="line"><a name="l00220"></a><span class="lineno">  220</span>&#160;                } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00221"></a><span class="lineno">  221</span>&#160;                  promise-&gt;set(status-&gt;ok()</div><div class="line"><a name="l00222"></a><span class="lineno">  222</span>&#160;                    ? std::
 move(*response)</div><div class="line"><a name="l00223"></a><span class="lineno">  223</span>&#160;                    : <a class="code" href="classTry.html#abb21343eabcba0eb0d88f13c4fbdf1f7">Try&lt;Response, StatusError&gt;::error</a>(std::move(*status)));</div><div class="line"><a name="l00224"></a><span class="lineno">  224</span>&#160;                }</div><div class="line"><a name="l00225"></a><span class="lineno">  225</span>&#160;              });</div><div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;</div><div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160;          reader-&gt;Finish(response.get(), status.get(), tag);</div><div class="line"><a name="l00228"></a><span class="lineno">  228</span>&#160;        },</div><div class="line"><a name="l00229"></a><span class="lineno">  229</span>&#160;        std::forward&lt;Request&gt;(<a class="code" href="namespaceprocess_1_1http.html#ad8f400b5e54038df7e5662ec35da05fa">reques
 t</a>),</div><div class="line"><a name="l00230"></a><span class="lineno">  230</span>&#160;        lambda::_1,</div><div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160;        lambda::_2));</div><div class="line"><a name="l00232"></a><span class="lineno">  232</span>&#160;</div><div class="line"><a name="l00233"></a><span class="lineno">  233</span>&#160;    <span class="keywordflow">return</span> future;</div><div class="line"><a name="l00234"></a><span class="lineno">  234</span>&#160;  }</div><div class="line"><a name="l00235"></a><span class="lineno">  235</span>&#160;</div><div class="line"><a name="l00241"></a><span class="lineno">  241</span>&#160;  <span class="keywordtype">void</span> <a class="code" href="namespaceprocess.html#a20443908afa3212215166e26065349e5">terminate</a>();</div><div class="line"><a name="l00242"></a><span class="lineno">  242</span>&#160;</div><div class="line"><a name="l00248"></a><span class="lineno">  248</span>&#160;  <a 
 class="code" href="classprocess_1_1Future.html">Future&lt;Nothing&gt;</a> <a class="code" href="namespaceprocess.html#a07833fb41a8b0c1f18fa5485ca8c18d4">wait</a>();</div><div class="line"><a name="l00249"></a><span class="lineno">  249</span>&#160;</div><div class="line"><a name="l00250"></a><span class="lineno">  250</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00251"></a><span class="lineno">  251</span>&#160;  <span class="comment">// Type of the callback functions that can get invoked when sending a request</span></div><div class="line"><a name="l00252"></a><span class="lineno">  252</span>&#160;  <span class="comment">// or receiving a response.</span></div><div class="line"><a name="l00253"></a><span class="lineno">  253</span>&#160;  <span class="keyword">typedef</span> <a class="code" href="classlambda_1_1CallableOnce.html">lambda::CallableOnce</a>&lt;</div><div class="line"><a name="l00254"></a><span class="lineno">  254</span>&#160;   
    void(<span class="keywordtype">bool</span>, ::grpc::CompletionQueue*)&gt; <a class="code" href="classlambda_1_1CallableOnce.html">SendCallback</a>;</div><div class="line"><a name="l00255"></a><span class="lineno">  255</span>&#160;  <span class="keyword">typedef</span> <a class="code" href="classlambda_1_1CallableOnce.html">lambda::CallableOnce&lt;void()&gt;</a> <a class="code" href="classlambda_1_1CallableOnce.html">ReceiveCallback</a>;</div><div class="line"><a name="l00256"></a><span class="lineno">  256</span>&#160;</div><div class="line"><a name="l00257"></a><span class="lineno">  257</span>&#160;  <span class="keyword">class </span>RuntimeProcess : <span class="keyword">public</span> <a class="code" href="classprocess_1_1Process.html">Process</a>&lt;RuntimeProcess&gt;</div><div class="line"><a name="l00258"></a><span class="lineno">  258</span>&#160;  {</div><div class="line"><a name="l00259"></a><span class="lineno">  259</span>&#160;  <span class="keyword">public</span>:<
 /div><div class="line"><a name="l00260"></a><span class="lineno">  260</span>&#160;    RuntimeProcess();</div><div class="line"><a name="l00261"></a><span class="lineno">  261</span>&#160;    <span class="keyword">virtual</span> ~RuntimeProcess();</div><div class="line"><a name="l00262"></a><span class="lineno">  262</span>&#160;</div><div class="line"><a name="l00263"></a><span class="lineno">  263</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="namespaceprocess_1_1windows.html#a04c64346155d34517acdf8b587162868">send</a>(SendCallback callback);</div><div class="line"><a name="l00264"></a><span class="lineno">  264</span>&#160;    <span class="keywordtype">void</span> receive(ReceiveCallback callback);</div><div class="line"><a name="l00265"></a><span class="lineno">  265</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="namespaceprocess.html#a20443908afa3212215166e26065349e5">terminate</a>();</div><div class="line"><a name="l002
 66"></a><span class="lineno">  266</span>&#160;    <a class="code" href="classprocess_1_1Future.html">Future&lt;Nothing&gt;</a> <a class="code" href="namespaceprocess.html#a07833fb41a8b0c1f18fa5485ca8c18d4">wait</a>();</div><div class="line"><a name="l00267"></a><span class="lineno">  267</span>&#160;</div><div class="line"><a name="l00268"></a><span class="lineno">  268</span>&#160;  <span class="keyword">private</span>:</div><div class="line"><a name="l00269"></a><span class="lineno">  269</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="namespaceprocess.html#a6c9cd01950a98038b2a6df3e5066418f">initialize</a>() <span class="keyword">override</span>;</div><div class="line"><a name="l00270"></a><span class="lineno">  270</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="namespaceprocess.html#a238371634a6637198c58ea740b0890ca">finalize</a>() <span class="keyword">override</span>;</div><div class="line"><a name="l00271"></a><span cla
 ss="lineno">  271</span>&#160;</div><div class="line"><a name="l00272"></a><span class="lineno">  272</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="namespaceprocess.html#a59c192ee8ea5abbbee1642957f47c92a">loop</a>();</div><div class="line"><a name="l00273"></a><span class="lineno">  273</span>&#160;</div><div class="line"><a name="l00274"></a><span class="lineno">  274</span>&#160;    ::grpc::CompletionQueue queue;</div><div class="line"><a name="l00275"></a><span class="lineno">  275</span>&#160;    std::unique_ptr&lt;std::thread&gt; looper;</div><div class="line"><a name="l00276"></a><span class="lineno">  276</span>&#160;    <span class="keywordtype">bool</span> terminating;</div><div class="line"><a name="l00277"></a><span class="lineno">  277</span>&#160;    <a class="code" href="classprocess_1_1Promise.html">Promise&lt;Nothing&gt;</a> terminated;</div><div class="line"><a name="l00278"></a><span class="lineno">  278</span>&#160;  };</div><div clas
 s="line"><a name="l00279"></a><span class="lineno">  279</span>&#160;</div><div class="line"><a name="l00280"></a><span class="lineno">  280</span>&#160;  <span class="keyword">struct </span>Data</div><div class="line"><a name="l00281"></a><span class="lineno">  281</span>&#160;  {</div><div class="line"><a name="l00282"></a><span class="lineno">  282</span>&#160;     Data();</div><div class="line"><a name="l00283"></a><span class="lineno">  283</span>&#160;     ~Data();</div><div class="line"><a name="l00284"></a><span class="lineno">  284</span>&#160;</div><div class="line"><a name="l00285"></a><span class="lineno">  285</span>&#160;     <a class="code" href="structprocess_1_1PID.html">PID&lt;RuntimeProcess&gt;</a> pid;</div><div class="line"><a name="l00286"></a><span class="lineno">  286</span>&#160;     <a class="code" href="classprocess_1_1Future.html">Future&lt;Nothing&gt;</a> terminated;</div><div class="line"><a name="l00287"></a><span class="lineno">  287</span>&#160;  };<
 /div><div class="line"><a name="l00288"></a><span class="lineno">  288</span>&#160;</div><div class="line"><a name="l00289"></a><span class="lineno">  289</span>&#160;  std::shared_ptr&lt;Data&gt; data;</div><div class="line"><a name="l00290"></a><span class="lineno">  290</span>&#160;};</div><div class="line"><a name="l00291"></a><span class="lineno">  291</span>&#160;</div><div class="line"><a name="l00292"></a><span class="lineno">  292</span>&#160;} <span class="comment">// namespace client {</span></div><div class="line"><a name="l00293"></a><span class="lineno">  293</span>&#160;</div><div class="line"><a name="l00294"></a><span class="lineno">  294</span>&#160;} <span class="comment">// namespace grpc {</span></div><div class="line"><a name="l00295"></a><span class="lineno">  295</span>&#160;} <span class="comment">// namespace process {</span></div><div class="line"><a name="l00296"></a><span class="lineno">  296</span>&#160;</div><div class="line"><a name="l00297"></a><span
  class="lineno">  297</span>&#160;<span class="preprocessor">#endif // __PROCESS_GRPC_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="libprocess_2include_2process_2check_8hpp_html_a3e2ba5c8589f7f5799251a12409e142c"><div class="ttname"><a href="libprocess_2include_2process_2check_8hpp.html#a3e2ba5c8589f7f5799251a12409e142c">CHECK_PENDING</a></div><div class="ttdeci">#define CHECK_PENDING(expression)</div><div class="ttdef"><b>Definition:</b> check.hpp:26</div></div>
 <div class="ttc" id="namespaceprocess_html_a238371634a6637198c58ea740b0890ca"><div class="ttname"><a href="namespaceprocess.html#a238371634a6637198c58ea740b0890ca">process::finalize</a></div><div class="ttdeci">void finalize(bool finalize_wsa=false)</div><div class="ttdoc">Clean up the library. </div></div>
 <div class="ttc" id="structprocess_1_1grpc_1_1client_1_1internal_1_1MethodTraits_html"><div class="ttname"><a href="structprocess_1_1grpc_1_1client_1_1internal_1_1MethodTraits.html">process::grpc::client::internal::MethodTraits</a></div><div class="ttdef"><b>Definition:</b> grpc.hpp:75</div></div>
@@ -69,7 +69,6 @@
 <div class="ttc" id="namespaceprocess_1_1network_1_1openssl_html_a9ea7f1e144d9731d6fb4e4a0d80a7c56"><div class="ttname"><a href="namespaceprocess_1_1network_1_1openssl.html#a9ea7f1e144d9731d6fb4e4a0d80a7c56">process::network::openssl::context</a></div><div class="ttdeci">SSL_CTX * context()</div></div>
 <div class="ttc" id="namespaceprocess_html_acfbc29404bc653268289691b0dd59e22"><div class="ttname"><a href="namespaceprocess.html#acfbc29404bc653268289691b0dd59e22">process::dispatch</a></div><div class="ttdeci">void dispatch(const PID&lt; T &gt; &amp;pid, void(T::*method)())</div><div class="ttdef"><b>Definition:</b> dispatch.hpp:174</div></div>
 <div class="ttc" id="structprocess_1_1grpc_1_1client_1_1internal_1_1MethodTraits_3_01std_1_1unique__ptr_3_1_1grpc_1_1b922a69900827d65b241714130bc07ca_html_af96bd68c2ee624f2bade6bb587726897"><div class="ttname"><a href="structprocess_1_1grpc_1_1client_1_1internal_1_1MethodTraits_3_01std_1_1unique__ptr_3_1_1grpc_1_1b922a69900827d65b241714130bc07ca.html#af96bd68c2ee624f2bade6bb587726897">process::grpc::client::internal::MethodTraits&lt; std::unique_ptr&lt;::grpc::ClientAsyncResponseReader&lt; Response &gt; &gt;(Stub::*)(::grpc::ClientContext *, const Request &amp;,::grpc::CompletionQueue *)&gt;::stub_type</a></div><div class="ttdeci">Stub stub_type</div><div class="ttdef"><b>Definition:</b> grpc.hpp:85</div></div>
-<div class="ttc" id="namespacenet_html_aa0a46766b4aca53ea50e1921567ddb40"><div class="ttname"><a href="namespacenet.html#aa0a46766b4aca53ea50e1921567ddb40">net::send</a></div><div class="ttdeci">ssize_t send(const int_fd &amp;fd, const void *buf, size_t len, int flags)</div><div class="ttdef"><b>Definition:</b> socket.hpp:159</div></div>
 <div class="ttc" id="classprocess_1_1grpc_1_1client_1_1Connection_html_abe61ce221a6e43836ea28d97e6b2db94"><div class="ttname"><a href="classprocess_1_1grpc_1_1client_1_1Connection.html#abe61ce221a6e43836ea28d97e6b2db94">process::grpc::client::Connection::Connection</a></div><div class="ttdeci">Connection(std::shared_ptr&lt;::grpc::Channel &gt; _channel)</div><div class="ttdef"><b>Definition:</b> grpc.hpp:108</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="structprocess_1_1grpc_1_1client_1_1internal_1_1MethodTraits_3_01std_1_1unique__ptr_3_1_1grpc_1_1b922a69900827d65b241714130bc07ca_html_adcf2f58a91926bbfbbf3f9aa4979cd38"><div class="ttname"><a href="structprocess_1_1grpc_1_1client_1_1internal_1_1MethodTraits_3_01std_1_1unique__ptr_3_1_1grpc_1_1b922a69900827d65b241714130bc07ca.html#adcf2f58a91926bbfbbf3f9aa4979cd38">process::grpc::client::internal::MethodTraits&lt; std::unique_ptr&lt;::grpc::ClientAsyncResponseReader&lt; Response &gt; &gt;(Stub::*)(::grpc::ClientContext *, const Request &amp;,::grpc::CompletionQueue *)&gt;::request_type</a></div><div class="ttdeci">Request request_type</div><div class="ttdef"><b>Definition:</b> grpc.hpp:86</div></div>
@@ -101,6 +100,7 @@
 <div class="ttc" id="libprocess_2include_2process_2process_8hpp_html"><div class="ttname"><a href="libprocess_2include_2process_2process_8hpp.html">process.hpp</a></div></div>
 <div class="ttc" id="classlambda_1_1CallableOnce_html"><div class="ttname"><a href="classlambda_1_1CallableOnce.html">lambda::CallableOnce</a></div><div class="ttdef"><b>Definition:</b> lambda.hpp:414</div></div>
 <div class="ttc" id="classprocess_1_1Future_html"><div class="ttname"><a href="classprocess_1_1Future.html">process::Future</a></div><div class="ttdef"><b>Definition:</b> future.hpp:58</div></div>
+<div class="ttc" id="namespaceprocess_1_1windows_html_a04c64346155d34517acdf8b587162868"><div class="ttname"><a href="n

<TRUNCATED>

[44/50] mesos-site git commit: Updated the website built from mesos SHA: 7c9c72d.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/annotated.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/annotated.html b/content/api/latest/c++/annotated.html
index 36bfb74..97a561d 100644
--- a/content/api/latest/c++/annotated.html
+++ b/content/api/latest/c++/annotated.html
@@ -786,114 +786,117 @@
 <tr id="row_23_3_10_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structprocess_1_1internal_1_1unwrap_3_01Future_3_01X_01_4_01_4.html" target="_self">unwrap&lt; Future&lt; X &gt; &gt;</a></td><td class="desc"></td></tr>
 <tr id="row_23_3_11_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structprocess_1_1internal_1_1wrap.html" target="_self">wrap</a></td><td class="desc"></td></tr>
 <tr id="row_23_3_12_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structprocess_1_1internal_1_1wrap_3_01Future_3_01X_01_4_01_4.html" target="_self">wrap&lt; Future&lt; X &gt; &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_23_4_" class="even" style="display:none;"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_23_4_" class="arrow" onclick="toggleFolder('23_4_')">&#9658;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespaceprocess_1_1metrics.html" target="_self">metrics</a></td><td class="desc"></td></tr>
-<tr id="row_23_4_0_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span id="arr_23_4_0_" class="arrow" onclick="toggleFolder('23_4_0_')">&#9658;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespaceprocess_1_1metrics_1_1internal.html" target="_self">internal</a></td><td class="desc"></td></tr>
-<tr id="row_23_4_0_0_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1metrics_1_1internal_1_1MetricsProcess.html" target="_self">MetricsProcess</a></td><td class="desc"></td></tr>
-<tr id="row_23_4_1_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1metrics_1_1Counter.html" target="_self">Counter</a></td><td class="desc"></td></tr>
-<tr id="row_23_4_2_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1metrics_1_1Metric.html" target="_self">Metric</a></td><td class="desc"></td></tr>
-<tr id="row_23_4_3_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1metrics_1_1PullGauge.html" target="_self">PullGauge</a></td><td class="desc"></td></tr>
-<tr id="row_23_4_4_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1metrics_1_1PushGauge.html" target="_self">PushGauge</a></td><td class="desc"></td></tr>
-<tr id="row_23_4_5_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1metrics_1_1Timer.html" target="_self">Timer</a></td><td class="desc"></td></tr>
-<tr id="row_23_5_" class="even" style="display:none;"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_23_5_" class="arrow" onclick="toggleFolder('23_5_')">&#9658;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespaceprocess_1_1network.html" target="_self">network</a></td><td class="desc"></td></tr>
-<tr id="row_23_5_0_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span id="arr_23_5_0_" class="arrow" onclick="toggleFolder('23_5_0_')">&#9658;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespaceprocess_1_1network_1_1inet.html" target="_self">inet</a></td><td class="desc"></td></tr>
-<tr id="row_23_5_0_0_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1network_1_1inet_1_1Address.html" target="_self">Address</a></td><td class="desc"></td></tr>
-<tr id="row_23_5_1_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span id="arr_23_5_1_" class="arrow" onclick="toggleFolder('23_5_1_')">&#9658;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespaceprocess_1_1network_1_1inet4.html" target="_self">inet4</a></td><td class="desc"></td></tr>
-<tr id="row_23_5_1_0_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1network_1_1inet4_1_1Address.html" target="_self">Address</a></td><td class="desc"></td></tr>
-<tr id="row_23_5_2_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span id="arr_23_5_2_" class="arrow" onclick="toggleFolder('23_5_2_')">&#9658;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespaceprocess_1_1network_1_1inet6.html" target="_self">inet6</a></td><td class="desc"></td></tr>
-<tr id="row_23_5_2_0_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1network_1_1inet6_1_1Address.html" target="_self">Address</a></td><td class="desc"></td></tr>
-<tr id="row_23_5_3_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span id="arr_23_5_3_" class="arrow" onclick="toggleFolder('23_5_3_')">&#9658;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespaceprocess_1_1network_1_1internal.html" target="_self">internal</a></td><td class="desc"></td></tr>
-<tr id="row_23_5_3_0_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1network_1_1internal_1_1LibeventSSLSocketImpl.html" target="_self">LibeventSSLSocketImpl</a></td><td class="desc"></td></tr>
-<tr id="row_23_5_3_1_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1network_1_1internal_1_1PollSocketImpl.html" target="_self">PollSocketImpl</a></td><td class="desc"></td></tr>
-<tr id="row_23_5_3_2_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1network_1_1internal_1_1Socket.html" target="_self">Socket</a></td><td class="desc">An abstraction around a socket (file descriptor) </td></tr>
-<tr id="row_23_5_3_3_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html" target="_self">SocketImpl</a></td><td class="desc">Implementation interface for a <code><a class="el" href="classprocess_1_1network_1_1internal_1_1Socket.html" title="An abstraction around a socket (file descriptor). ">Socket</a></code> </td></tr>
-<tr id="row_23_5_4_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span id="arr_23_5_4_" class="arrow" onclick="toggleFolder('23_5_4_')">&#9658;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespaceprocess_1_1network_1_1unix.html" target="_self">unix</a></td><td class="desc"></td></tr>
-<tr id="row_23_5_4_0_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1network_1_1unix_1_1Address.html" target="_self">Address</a></td><td class="desc"></td></tr>
-<tr id="row_23_5_5_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1network_1_1Address.html" target="_self">Address</a></td><td class="desc"></td></tr>
-<tr id="row_23_6_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structprocess_1_1__Deferred.html" target="_self">_Deferred</a></td><td class="desc"></td></tr>
-<tr id="row_23_7_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1AsyncExecutor.html" target="_self">AsyncExecutor</a></td><td class="desc"></td></tr>
-<tr id="row_23_8_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1Clock.html" target="_self">Clock</a></td><td class="desc">Provides timers </td></tr>
-<tr id="row_23_9_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1ClockTestEventListener.html" target="_self">ClockTestEventListener</a></td><td class="desc"></td></tr>
-<tr id="row_23_10_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structprocess_1_1Continue.html" target="_self">Continue</a></td><td class="desc"></td></tr>
-<tr id="row_23_11_" class="even" style="display:none;"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_23_11_" class="arrow" onclick="toggleFolder('23_11_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1ControlFlow.html" target="_self">ControlFlow</a></td><td class="desc"></td></tr>
-<tr id="row_23_11_0_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1ControlFlow_1_1Break.html" target="_self">Break</a></td><td class="desc"></td></tr>
-<tr id="row_23_11_1_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1ControlFlow_1_1Continue.html" target="_self">Continue</a></td><td class="desc"></td></tr>
-<tr id="row_23_12_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1CountDownLatch.html" target="_self">CountDownLatch</a></td><td class="desc"></td></tr>
-<tr id="row_23_13_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1DataDecoder.html" target="_self">DataDecoder</a></td><td class="desc"></td></tr>
-<tr id="row_23_14_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1DataEncoder.html" target="_self">DataEncoder</a></td><td class="desc"></td></tr>
-<tr id="row_23_15_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structprocess_1_1Deferred.html" target="_self">Deferred</a></td><td class="desc"></td></tr>
-<tr id="row_23_16_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structprocess_1_1DispatchEvent.html" target="_self">DispatchEvent</a></td><td class="desc"></td></tr>
-<tr id="row_23_17_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1Encoder.html" target="_self">Encoder</a></td><td class="desc"></td></tr>
-<tr id="row_23_18_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structprocess_1_1ErrnoFailure.html" target="_self">ErrnoFailure</a></td><td class="desc"></td></tr>
-<tr id="row_23_19_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structprocess_1_1Event.html" target="_self">Event</a></td><td class="desc"></td></tr>
-<tr id="row_23_20_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structprocess_1_1EventConsumer.html" target="_self">EventConsumer</a></td><td class="desc"></td></tr>
-<tr id="row_23_21_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1EventLoop.html" target="_self">EventLoop</a></td><td class="desc"></td></tr>
-<tr id="row_23_22_" class="even" style="display:none;"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_23_22_" class="arrow" onclick="toggleFolder('23_22_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1EventQueue.html" target="_self">EventQueue</a></td><td class="desc"></td></tr>
-<tr id="row_23_22_0_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1EventQueue_1_1Consumer.html" target="_self">Consumer</a></td><td class="desc"></td></tr>
-<tr id="row_23_22_1_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1EventQueue_1_1Producer.html" target="_self">Producer</a></td><td class="desc"></td></tr>
-<tr id="row_23_23_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structprocess_1_1EventVisitor.html" target="_self">EventVisitor</a></td><td class="desc"></td></tr>
-<tr id="row_23_24_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1Executor.html" target="_self">Executor</a></td><td class="desc"></td></tr>
-<tr id="row_23_25_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structprocess_1_1ExitedEvent.html" target="_self">ExitedEvent</a></td><td class="desc"></td></tr>
-<tr id="row_23_26_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structprocess_1_1Failure.html" target="_self">Failure</a></td><td class="desc"></td></tr>
-<tr id="row_23_27_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1FileEncoder.html" target="_self">FileEncoder</a></td><td class="desc"></td></tr>
-<tr id="row_23_28_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1Filter.html" target="_self">Filter</a></td><td class="desc"></td></tr>
-<tr id="row_23_29_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1FilterTestEventListener.html" target="_self">FilterTestEventListener</a></td><td class="desc"></td></tr>
-<tr id="row_23_30_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1Future.html" target="_self">Future</a></td><td class="desc"></td></tr>
-<tr id="row_23_31_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1Gate.html" target="_self">Gate</a></td><td class="desc"></td></tr>
-<tr id="row_23_32_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1Help.html" target="_self">Help</a></td><td class="desc"></td></tr>
-<tr id="row_23_33_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structprocess_1_1HttpEvent.html" target="_self">HttpEvent</a></td><td class="desc"></td></tr>
-<tr id="row_23_34_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1HttpProxy.html" target="_self">HttpProxy</a></td><td class="desc"></td></tr>
-<tr id="row_23_35_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1HttpResponseEncoder.html" target="_self">HttpResponseEncoder</a></td><td class="desc"></td></tr>
-<tr id="row_23_36_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1Latch.html" target="_self">Latch</a></td><td class="desc"></td></tr>
-<tr id="row_23_37_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1Logging.html" target="_self">Logging</a></td><td class="desc"></td></tr>
-<tr id="row_23_38_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1MemoryProfiler.html" target="_self">MemoryProfiler</a></td><td class="desc"></td></tr>
-<tr id="row_23_39_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structprocess_1_1Message.html" target="_self">Message</a></td><td class="desc"></td></tr>
-<tr id="row_23_40_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1MessageEncoder.html" target="_self">MessageEncoder</a></td><td class="desc"></td></tr>
-<tr id="row_23_41_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structprocess_1_1MessageEvent.html" target="_self">MessageEvent</a></td><td class="desc"></td></tr>
-<tr id="row_23_42_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1MockFilter.html" target="_self">MockFilter</a></td><td class="desc"></td></tr>
-<tr id="row_23_43_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1Mutex.html" target="_self">Mutex</a></td><td class="desc"></td></tr>
-<tr id="row_23_44_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1Once.html" target="_self">Once</a></td><td class="desc"></td></tr>
-<tr id="row_23_45_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1Owned.html" target="_self">Owned</a></td><td class="desc"></td></tr>
-<tr id="row_23_46_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structprocess_1_1PID.html" target="_self">PID</a></td><td class="desc">A "process identifier" used to uniquely identify a process when dispatching messages </td></tr>
-<tr id="row_23_47_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1Process.html" target="_self">Process</a></td><td class="desc"></td></tr>
-<tr id="row_23_48_" class="even" style="display:none;"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_23_48_" class="arrow" onclick="toggleFolder('23_48_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1ProcessBase.html" target="_self">ProcessBase</a></td><td class="desc"></td></tr>
-<tr id="row_23_48_0_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structprocess_1_1ProcessBase_1_1RouteOptions.html" target="_self">RouteOptions</a></td><td class="desc"></td></tr>
-<tr id="row_23_49_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1ProcessReference.html" target="_self">ProcessReference</a></td><td class="desc"></td></tr>
-<tr id="row_23_50_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1Profiler.html" target="_self">Profiler</a></td><td class="desc"></td></tr>
-<tr id="row_23_51_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1Promise.html" target="_self">Promise</a></td><td class="desc"></td></tr>
-<tr id="row_23_52_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1Queue.html" target="_self">Queue</a></td><td class="desc"></td></tr>
-<tr id="row_23_53_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1RateLimiter.html" target="_self">RateLimiter</a></td><td class="desc"></td></tr>
-<tr id="row_23_54_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1RateLimiterProcess.html" target="_self">RateLimiterProcess</a></td><td class="desc"></td></tr>
-<tr id="row_23_55_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1ReadWriteLock.html" target="_self">ReadWriteLock</a></td><td class="desc"><a class="el" href="classprocess_1_1ReadWriteLock.html" title="ReadWriteLock is a lock that allows concurrent reads and exclusive writes. ">ReadWriteLock</a> is a lock that allows concurrent reads and exclusive writes </td></tr>
-<tr id="row_23_56_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1ResponseDecoder.html" target="_self">ResponseDecoder</a></td><td class="desc"></td></tr>
-<tr id="row_23_57_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1RFC1123.html" target="_self">RFC1123</a></td><td class="desc"></td></tr>
-<tr id="row_23_58_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1RFC3339.html" target="_self">RFC3339</a></td><td class="desc"></td></tr>
-<tr id="row_23_59_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1RunQueue.html" target="_self">RunQueue</a></td><td class="desc"></td></tr>
-<tr id="row_23_60_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1Sequence.html" target="_self">Sequence</a></td><td class="desc"></td></tr>
-<tr id="row_23_61_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1SequenceProcess.html" target="_self">SequenceProcess</a></td><td class="desc"></td></tr>
-<tr id="row_23_62_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1Shared.html" target="_self">Shared</a></td><td class="desc"></td></tr>
-<tr id="row_23_63_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1SocketManager.html" target="_self">SocketManager</a></td><td class="desc"></td></tr>
-<tr id="row_23_64_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1StateMachine.html" target="_self">StateMachine</a></td><td class="desc"></td></tr>
-<tr id="row_23_65_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structprocess_1_1Statistics.html" target="_self">Statistics</a></td><td class="desc"></td></tr>
-<tr id="row_23_66_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1StreamingRequestDecoder.html" target="_self">StreamingRequestDecoder</a></td><td class="desc"></td></tr>
-<tr id="row_23_67_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1StreamingResponseDecoder.html" target="_self">StreamingResponseDecoder</a></td><td class="desc"></td></tr>
-<tr id="row_23_68_" class="even" style="display:none;"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_23_68_" class="arrow" onclick="toggleFolder('23_68_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1Subprocess.html" target="_self">Subprocess</a></td><td class="desc">Represents a fork() exec()ed subprocess </td></tr>
-<tr id="row_23_68_0_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1Subprocess_1_1ChildHook.html" target="_self">ChildHook</a></td><td class="desc">A <code><a class="el" href="classprocess_1_1Subprocess_1_1ChildHook.html" title="A ChildHook can be passed to a subprocess call. ">ChildHook</a></code> can be passed to a <code>subprocess</code> call </td></tr>
-<tr id="row_23_68_1_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span id="arr_23_68_1_" class="arrow" onclick="toggleFolder('23_68_1_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1Subprocess_1_1IO.html" target="_self">IO</a></td><td class="desc">Describes how the I/O is redirected for stdin/stdout/stderr </td></tr>
-<tr id="row_23_68_1_0_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors.html" target="_self">InputFileDescriptors</a></td><td class="desc">For input file descriptors a child reads from the <code>read</code> file descriptor and a parent may write to the <code>write</code> file descriptor if one is present </td></tr>
-<tr id="row_23_68_1_1_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html" target="_self">OutputFileDescriptors</a></td><td class="desc">For output file descriptors a child writes to the <code>write</code> file descriptor and a parent may read from the <code>read</code> file descriptor if one is present </td></tr>
-<tr id="row_23_68_2_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structprocess_1_1Subprocess_1_1ParentHook.html" target="_self">ParentHook</a></td><td class="desc">A hook can be passed to a <code>subprocess</code> call </td></tr>
-<tr id="row_23_69_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1System.html" target="_self">System</a></td><td class="desc"></td></tr>
-<tr id="row_23_70_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structprocess_1_1TerminateEvent.html" target="_self">TerminateEvent</a></td><td class="desc"></td></tr>
-<tr id="row_23_71_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1TestsFilter.html" target="_self">TestsFilter</a></td><td class="desc"></td></tr>
-<tr id="row_23_72_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1Time.html" target="_self">Time</a></td><td class="desc"></td></tr>
-<tr id="row_23_73_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1Timeout.html" target="_self">Timeout</a></td><td class="desc"></td></tr>
-<tr id="row_23_74_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1Timer.html" target="_self">Timer</a></td><td class="desc"></td></tr>
-<tr id="row_23_75_" class="even" style="display:none;"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_23_75_" class="arrow" onclick="toggleFolder('23_75_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structprocess_1_1TimeSeries.html" target="_self">TimeSeries</a></td><td class="desc"></td></tr>
-<tr id="row_23_75_0_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structprocess_1_1TimeSeries_1_1Value.html" target="_self">Value</a></td><td class="desc"></td></tr>
-<tr id="row_23_76_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structprocess_1_1UndiscardableDecorator.html" target="_self">UndiscardableDecorator</a></td><td class="desc"></td></tr>
-<tr id="row_23_77_" class="even" style="display:none;"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_23_77_" class="arrow" onclick="toggleFolder('23_77_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structprocess_1_1UPID.html" target="_self">UPID</a></td><td class="desc">An "untyped" <code><a class="el" href="structprocess_1_1PID.html" title="A &quot;process identifier&quot; used to uniquely identify a process when dispatching messages. ">PID</a></code>, used to encapsulate the process <a class="el" href="structprocess_1_1UPID_1_1ID.html">ID</a> for lower-layer abstractions (eg, when receiving incoming requests) in the dispatching mechanism </td></tr>
-<tr id="row_23_77_0_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structprocess_1_1UPID_1_1ID.html" target="_self">ID</a></td><td class="desc"></td></tr>
-<tr id="row_23_78_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1WeakFuture.html" target="_self">WeakFuture</a></td><td class="desc"></td></tr>
+<tr id="row_23_4_" class="even" style="display:none;"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_23_4_" class="arrow" onclick="toggleFolder('23_4_')">&#9658;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespaceprocess_1_1io.html" target="_self">io</a></td><td class="desc"></td></tr>
+<tr id="row_23_5_" class="even" style="display:none;"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_23_5_" class="arrow" onclick="toggleFolder('23_5_')">&#9658;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespaceprocess_1_1metrics.html" target="_self">metrics</a></td><td class="desc"></td></tr>
+<tr id="row_23_5_0_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span id="arr_23_5_0_" class="arrow" onclick="toggleFolder('23_5_0_')">&#9658;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespaceprocess_1_1metrics_1_1internal.html" target="_self">internal</a></td><td class="desc"></td></tr>
+<tr id="row_23_5_0_0_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1metrics_1_1internal_1_1MetricsProcess.html" target="_self">MetricsProcess</a></td><td class="desc"></td></tr>
+<tr id="row_23_5_1_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1metrics_1_1Counter.html" target="_self">Counter</a></td><td class="desc"></td></tr>
+<tr id="row_23_5_2_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1metrics_1_1Metric.html" target="_self">Metric</a></td><td class="desc"></td></tr>
+<tr id="row_23_5_3_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1metrics_1_1PullGauge.html" target="_self">PullGauge</a></td><td class="desc"></td></tr>
+<tr id="row_23_5_4_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1metrics_1_1PushGauge.html" target="_self">PushGauge</a></td><td class="desc"></td></tr>
+<tr id="row_23_5_5_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1metrics_1_1Timer.html" target="_self">Timer</a></td><td class="desc"></td></tr>
+<tr id="row_23_6_" class="even" style="display:none;"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_23_6_" class="arrow" onclick="toggleFolder('23_6_')">&#9658;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespaceprocess_1_1network.html" target="_self">network</a></td><td class="desc"></td></tr>
+<tr id="row_23_6_0_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span id="arr_23_6_0_" class="arrow" onclick="toggleFolder('23_6_0_')">&#9658;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespaceprocess_1_1network_1_1inet.html" target="_self">inet</a></td><td class="desc"></td></tr>
+<tr id="row_23_6_0_0_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1network_1_1inet_1_1Address.html" target="_self">Address</a></td><td class="desc"></td></tr>
+<tr id="row_23_6_1_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span id="arr_23_6_1_" class="arrow" onclick="toggleFolder('23_6_1_')">&#9658;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespaceprocess_1_1network_1_1inet4.html" target="_self">inet4</a></td><td class="desc"></td></tr>
+<tr id="row_23_6_1_0_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1network_1_1inet4_1_1Address.html" target="_self">Address</a></td><td class="desc"></td></tr>
+<tr id="row_23_6_2_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span id="arr_23_6_2_" class="arrow" onclick="toggleFolder('23_6_2_')">&#9658;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespaceprocess_1_1network_1_1inet6.html" target="_self">inet6</a></td><td class="desc"></td></tr>
+<tr id="row_23_6_2_0_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1network_1_1inet6_1_1Address.html" target="_self">Address</a></td><td class="desc"></td></tr>
+<tr id="row_23_6_3_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span id="arr_23_6_3_" class="arrow" onclick="toggleFolder('23_6_3_')">&#9658;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespaceprocess_1_1network_1_1internal.html" target="_self">internal</a></td><td class="desc"></td></tr>
+<tr id="row_23_6_3_0_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1network_1_1internal_1_1LibeventSSLSocketImpl.html" target="_self">LibeventSSLSocketImpl</a></td><td class="desc"></td></tr>
+<tr id="row_23_6_3_1_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1network_1_1internal_1_1PollSocketImpl.html" target="_self">PollSocketImpl</a></td><td class="desc"></td></tr>
+<tr id="row_23_6_3_2_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1network_1_1internal_1_1Socket.html" target="_self">Socket</a></td><td class="desc">An abstraction around a socket (file descriptor) </td></tr>
+<tr id="row_23_6_3_3_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html" target="_self">SocketImpl</a></td><td class="desc">Implementation interface for a <code><a class="el" href="classprocess_1_1network_1_1internal_1_1Socket.html" title="An abstraction around a socket (file descriptor). ">Socket</a></code> </td></tr>
+<tr id="row_23_6_4_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span id="arr_23_6_4_" class="arrow" onclick="toggleFolder('23_6_4_')">&#9658;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespaceprocess_1_1network_1_1unix.html" target="_self">unix</a></td><td class="desc"></td></tr>
+<tr id="row_23_6_4_0_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1network_1_1unix_1_1Address.html" target="_self">Address</a></td><td class="desc"></td></tr>
+<tr id="row_23_6_5_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1network_1_1Address.html" target="_self">Address</a></td><td class="desc"></td></tr>
+<tr id="row_23_7_" class="even" style="display:none;"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_23_7_" class="arrow" onclick="toggleFolder('23_7_')">&#9658;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespaceprocess_1_1windows.html" target="_self">windows</a></td><td class="desc"></td></tr>
+<tr id="row_23_7_0_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1windows_1_1EventLoop.html" target="_self">EventLoop</a></td><td class="desc"></td></tr>
+<tr id="row_23_8_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structprocess_1_1__Deferred.html" target="_self">_Deferred</a></td><td class="desc"></td></tr>
+<tr id="row_23_9_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1AsyncExecutor.html" target="_self">AsyncExecutor</a></td><td class="desc"></td></tr>
+<tr id="row_23_10_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1Clock.html" target="_self">Clock</a></td><td class="desc">Provides timers </td></tr>
+<tr id="row_23_11_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1ClockTestEventListener.html" target="_self">ClockTestEventListener</a></td><td class="desc"></td></tr>
+<tr id="row_23_12_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structprocess_1_1Continue.html" target="_self">Continue</a></td><td class="desc"></td></tr>
+<tr id="row_23_13_" class="even" style="display:none;"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_23_13_" class="arrow" onclick="toggleFolder('23_13_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1ControlFlow.html" target="_self">ControlFlow</a></td><td class="desc"></td></tr>
+<tr id="row_23_13_0_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1ControlFlow_1_1Break.html" target="_self">Break</a></td><td class="desc"></td></tr>
+<tr id="row_23_13_1_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1ControlFlow_1_1Continue.html" target="_self">Continue</a></td><td class="desc"></td></tr>
+<tr id="row_23_14_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1CountDownLatch.html" target="_self">CountDownLatch</a></td><td class="desc"></td></tr>
+<tr id="row_23_15_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1DataDecoder.html" target="_self">DataDecoder</a></td><td class="desc"></td></tr>
+<tr id="row_23_16_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1DataEncoder.html" target="_self">DataEncoder</a></td><td class="desc"></td></tr>
+<tr id="row_23_17_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structprocess_1_1Deferred.html" target="_self">Deferred</a></td><td class="desc"></td></tr>
+<tr id="row_23_18_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structprocess_1_1DispatchEvent.html" target="_self">DispatchEvent</a></td><td class="desc"></td></tr>
+<tr id="row_23_19_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1Encoder.html" target="_self">Encoder</a></td><td class="desc"></td></tr>
+<tr id="row_23_20_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structprocess_1_1ErrnoFailure.html" target="_self">ErrnoFailure</a></td><td class="desc"></td></tr>
+<tr id="row_23_21_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structprocess_1_1Event.html" target="_self">Event</a></td><td class="desc"></td></tr>
+<tr id="row_23_22_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structprocess_1_1EventConsumer.html" target="_self">EventConsumer</a></td><td class="desc"></td></tr>
+<tr id="row_23_23_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1EventLoop.html" target="_self">EventLoop</a></td><td class="desc"></td></tr>
+<tr id="row_23_24_" class="even" style="display:none;"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_23_24_" class="arrow" onclick="toggleFolder('23_24_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1EventQueue.html" target="_self">EventQueue</a></td><td class="desc"></td></tr>
+<tr id="row_23_24_0_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1EventQueue_1_1Consumer.html" target="_self">Consumer</a></td><td class="desc"></td></tr>
+<tr id="row_23_24_1_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1EventQueue_1_1Producer.html" target="_self">Producer</a></td><td class="desc"></td></tr>
+<tr id="row_23_25_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structprocess_1_1EventVisitor.html" target="_self">EventVisitor</a></td><td class="desc"></td></tr>
+<tr id="row_23_26_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1Executor.html" target="_self">Executor</a></td><td class="desc"></td></tr>
+<tr id="row_23_27_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structprocess_1_1ExitedEvent.html" target="_self">ExitedEvent</a></td><td class="desc"></td></tr>
+<tr id="row_23_28_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structprocess_1_1Failure.html" target="_self">Failure</a></td><td class="desc"></td></tr>
+<tr id="row_23_29_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1FileEncoder.html" target="_self">FileEncoder</a></td><td class="desc"></td></tr>
+<tr id="row_23_30_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1Filter.html" target="_self">Filter</a></td><td class="desc"></td></tr>
+<tr id="row_23_31_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1FilterTestEventListener.html" target="_self">FilterTestEventListener</a></td><td class="desc"></td></tr>
+<tr id="row_23_32_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1Future.html" target="_self">Future</a></td><td class="desc"></td></tr>
+<tr id="row_23_33_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1Gate.html" target="_self">Gate</a></td><td class="desc"></td></tr>
+<tr id="row_23_34_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1Help.html" target="_self">Help</a></td><td class="desc"></td></tr>
+<tr id="row_23_35_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structprocess_1_1HttpEvent.html" target="_self">HttpEvent</a></td><td class="desc"></td></tr>
+<tr id="row_23_36_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1HttpProxy.html" target="_self">HttpProxy</a></td><td class="desc"></td></tr>
+<tr id="row_23_37_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1HttpResponseEncoder.html" target="_self">HttpResponseEncoder</a></td><td class="desc"></td></tr>
+<tr id="row_23_38_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1Latch.html" target="_self">Latch</a></td><td class="desc"></td></tr>
+<tr id="row_23_39_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1Logging.html" target="_self">Logging</a></td><td class="desc"></td></tr>
+<tr id="row_23_40_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1MemoryProfiler.html" target="_self">MemoryProfiler</a></td><td class="desc"></td></tr>
+<tr id="row_23_41_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structprocess_1_1Message.html" target="_self">Message</a></td><td class="desc"></td></tr>
+<tr id="row_23_42_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1MessageEncoder.html" target="_self">MessageEncoder</a></td><td class="desc"></td></tr>
+<tr id="row_23_43_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structprocess_1_1MessageEvent.html" target="_self">MessageEvent</a></td><td class="desc"></td></tr>
+<tr id="row_23_44_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1MockFilter.html" target="_self">MockFilter</a></td><td class="desc"></td></tr>
+<tr id="row_23_45_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1Mutex.html" target="_self">Mutex</a></td><td class="desc"></td></tr>
+<tr id="row_23_46_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1Once.html" target="_self">Once</a></td><td class="desc"></td></tr>
+<tr id="row_23_47_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1Owned.html" target="_self">Owned</a></td><td class="desc"></td></tr>
+<tr id="row_23_48_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structprocess_1_1PID.html" target="_self">PID</a></td><td class="desc">A "process identifier" used to uniquely identify a process when dispatching messages </td></tr>
+<tr id="row_23_49_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1Process.html" target="_self">Process</a></td><td class="desc"></td></tr>
+<tr id="row_23_50_" class="even" style="display:none;"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_23_50_" class="arrow" onclick="toggleFolder('23_50_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1ProcessBase.html" target="_self">ProcessBase</a></td><td class="desc"></td></tr>
+<tr id="row_23_50_0_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structprocess_1_1ProcessBase_1_1RouteOptions.html" target="_self">RouteOptions</a></td><td class="desc"></td></tr>
+<tr id="row_23_51_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1ProcessReference.html" target="_self">ProcessReference</a></td><td class="desc"></td></tr>
+<tr id="row_23_52_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1Profiler.html" target="_self">Profiler</a></td><td class="desc"></td></tr>
+<tr id="row_23_53_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1Promise.html" target="_self">Promise</a></td><td class="desc"></td></tr>
+<tr id="row_23_54_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1Queue.html" target="_self">Queue</a></td><td class="desc"></td></tr>
+<tr id="row_23_55_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1RateLimiter.html" target="_self">RateLimiter</a></td><td class="desc"></td></tr>
+<tr id="row_23_56_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1RateLimiterProcess.html" target="_self">RateLimiterProcess</a></td><td class="desc"></td></tr>
+<tr id="row_23_57_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1ReadWriteLock.html" target="_self">ReadWriteLock</a></td><td class="desc"><a class="el" href="classprocess_1_1ReadWriteLock.html" title="ReadWriteLock is a lock that allows concurrent reads and exclusive writes. ">ReadWriteLock</a> is a lock that allows concurrent reads and exclusive writes </td></tr>
+<tr id="row_23_58_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1ResponseDecoder.html" target="_self">ResponseDecoder</a></td><td class="desc"></td></tr>
+<tr id="row_23_59_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1RFC1123.html" target="_self">RFC1123</a></td><td class="desc"></td></tr>
+<tr id="row_23_60_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1RFC3339.html" target="_self">RFC3339</a></td><td class="desc"></td></tr>
+<tr id="row_23_61_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1RunQueue.html" target="_self">RunQueue</a></td><td class="desc"></td></tr>
+<tr id="row_23_62_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1Sequence.html" target="_self">Sequence</a></td><td class="desc"></td></tr>
+<tr id="row_23_63_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1SequenceProcess.html" target="_self">SequenceProcess</a></td><td class="desc"></td></tr>
+<tr id="row_23_64_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1Shared.html" target="_self">Shared</a></td><td class="desc"></td></tr>
+<tr id="row_23_65_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1SocketManager.html" target="_self">SocketManager</a></td><td class="desc"></td></tr>
+<tr id="row_23_66_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1StateMachine.html" target="_self">StateMachine</a></td><td class="desc"></td></tr>
+<tr id="row_23_67_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structprocess_1_1Statistics.html" target="_self">Statistics</a></td><td class="desc"></td></tr>
+<tr id="row_23_68_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1StreamingRequestDecoder.html" target="_self">StreamingRequestDecoder</a></td><td class="desc"></td></tr>
+<tr id="row_23_69_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1StreamingResponseDecoder.html" target="_self">StreamingResponseDecoder</a></td><td class="desc"></td></tr>
+<tr id="row_23_70_" class="even" style="display:none;"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_23_70_" class="arrow" onclick="toggleFolder('23_70_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1Subprocess.html" target="_self">Subprocess</a></td><td class="desc">Represents a fork() exec()ed subprocess </td></tr>
+<tr id="row_23_70_0_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1Subprocess_1_1ChildHook.html" target="_self">ChildHook</a></td><td class="desc">A <code><a class="el" href="classprocess_1_1Subprocess_1_1ChildHook.html" title="A ChildHook can be passed to a subprocess call. ">ChildHook</a></code> can be passed to a <code>subprocess</code> call </td></tr>
+<tr id="row_23_70_1_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span id="arr_23_70_1_" class="arrow" onclick="toggleFolder('23_70_1_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1Subprocess_1_1IO.html" target="_self">IO</a></td><td class="desc">Describes how the I/O is redirected for stdin/stdout/stderr </td></tr>
+<tr id="row_23_70_1_0_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors.html" target="_self">InputFileDescriptors</a></td><td class="desc">For input file descriptors a child reads from the <code>read</code> file descriptor and a parent may write to the <code>write</code> file descriptor if one is present </td></tr>
+<tr id="row_23_70_1_1_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html" target="_self">OutputFileDescriptors</a></td><td class="desc">For output file descriptors a child writes to the <code>write</code> file descriptor and a parent may read from the <code>read</code> file descriptor if one is present </td></tr>
+<tr id="row_23_70_2_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structprocess_1_1Subprocess_1_1ParentHook.html" target="_self">ParentHook</a></td><td class="desc">A hook can be passed to a <code>subprocess</code> call </td></tr>
+<tr id="row_23_71_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1System.html" target="_self">System</a></td><td class="desc"></td></tr>
+<tr id="row_23_72_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structprocess_1_1TerminateEvent.html" target="_self">TerminateEvent</a></td><td class="desc"></td></tr>
+<tr id="row_23_73_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1TestsFilter.html" target="_self">TestsFilter</a></td><td class="desc"></td></tr>
+<tr id="row_23_74_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1Time.html" target="_self">Time</a></td><td class="desc"></td></tr>
+<tr id="row_23_75_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1Timeout.html" target="_self">Timeout</a></td><td class="desc"></td></tr>
+<tr id="row_23_76_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1Timer.html" target="_self">Timer</a></td><td class="desc"></td></tr>
+<tr id="row_23_77_" class="even" style="display:none;"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_23_77_" class="arrow" onclick="toggleFolder('23_77_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structprocess_1_1TimeSeries.html" target="_self">TimeSeries</a></td><td class="desc"></td></tr>
+<tr id="row_23_77_0_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structprocess_1_1TimeSeries_1_1Value.html" target="_self">Value</a></td><td class="desc"></td></tr>
+<tr id="row_23_78_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structprocess_1_1UndiscardableDecorator.html" target="_self">UndiscardableDecorator</a></td><td class="desc"></td></tr>
+<tr id="row_23_79_" class="even" style="display:none;"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_23_79_" class="arrow" onclick="toggleFolder('23_79_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structprocess_1_1UPID.html" target="_self">UPID</a></td><td class="desc">An "untyped" <code><a class="el" href="structprocess_1_1PID.html" title="A &quot;process identifier&quot; used to uniquely identify a process when dispatching messages. ">PID</a></code>, used to encapsulate the process <a class="el" href="structprocess_1_1UPID_1_1ID.html">ID</a> for lower-layer abstractions (eg, when receiving incoming requests) in the dispatching mechanism </td></tr>
+<tr id="row_23_79_0_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structprocess_1_1UPID_1_1ID.html" target="_self">ID</a></td><td class="desc"></td></tr>
+<tr id="row_23_80_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1WeakFuture.html" target="_self">WeakFuture</a></td><td class="desc"></td></tr>
 <tr id="row_24_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_24_" class="arrow" onclick="toggleFolder('24_')">&#9658;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespaceprotobuf.html" target="_self">protobuf</a></td><td class="desc"></td></tr>
 <tr id="row_24_0_" style="display:none;"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_24_0_" class="arrow" onclick="toggleFolder('24_0_')">&#9658;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespaceprotobuf_1_1internal.html" target="_self">internal</a></td><td class="desc"></td></tr>
 <tr id="row_24_0_0_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structprotobuf_1_1internal_1_1Parse.html" target="_self">Parse</a></td><td class="desc"></td></tr>


[03/50] mesos-site git commit: Updated the website built from mesos SHA: 7c9c72d.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/windows_2stat_8hpp.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/windows_2stat_8hpp.html b/content/api/latest/c++/windows_2stat_8hpp.html
index 3c1089f..a0b4d14 100644
--- a/content/api/latest/c++/windows_2stat_8hpp.html
+++ b/content/api/latest/c++/windows_2stat_8hpp.html
@@ -62,6 +62,7 @@
 <code>#include &lt;<a class="el" href="unreachable_8hpp_source.html">stout/unreachable.hpp</a>&gt;</code><br />
 <code>#include &lt;<a class="el" href="3rdparty_2stout_2include_2stout_2windows_8hpp_source.html">stout/windows.hpp</a>&gt;</code><br />
 <code>#include &lt;<a class="el" href="int__fd_8hpp_source.html">stout/os/int_fd.hpp</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="windows_2os_8hpp_source.html">stout/windows/os.hpp</a>&gt;</code><br />
 <code>#include &lt;<a class="el" href="3rdparty_2stout_2include_2stout_2internal_2windows_2attributes_8hpp_source.html">stout/internal/windows/attributes.hpp</a>&gt;</code><br />
 <code>#include &lt;<a class="el" href="longpath_8hpp_source.html">stout/internal/windows/longpath.hpp</a>&gt;</code><br />
 <code>#include &lt;<a class="el" href="reparsepoint_8hpp_source.html">stout/internal/windows/reparsepoint.hpp</a>&gt;</code><br />

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/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 894f0e6..7fe39ba 100644
--- a/content/api/latest/c++/windows_2stat_8hpp_source.html
+++ b/content/api/latest/c++/windows_2stat_8hpp_source.html
@@ -52,7 +52,7 @@
 <div class="title">stat.hpp</div>  </div>
 </div><!--header-->
 <div class="contents">
-<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>&#160;<span class="comment">// Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<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>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<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>&#160;<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>&#160;<span class="comment">// distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<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>&#160;<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>&#160;<span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;</div><div clas
 s="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="preprocessor">#ifndef __STOUT_OS_WINDOWS_STAT_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="preprocessor">#define __STOUT_OS_WINDOWS_STAT_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;</div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span></div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="preprocessor">#include &lt;type_traits&gt;</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;</div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="bytes_8hpp.html">stout/bytes.hpp</a>&gt;</span></div><div class="line"><a name="l00020"></a><span cla
 ss="lineno">   20</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="try_8hpp.html">stout/try.hpp</a>&gt;</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="unreachable_8hpp.html">stout/unreachable.hpp</a>&gt;</span></div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html">stout/windows.hpp</a>&gt;</span></div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;</div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="int__fd_8hpp.html">stout/os/int_fd.hpp</a>&gt;</span></div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;</div><div class="line"><a name="l00026"></a><span class="li
 neno">   26</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="3rdparty_2stout_2include_2stout_2internal_2windows_2attributes_8hpp.html">stout/internal/windows/attributes.hpp</a>&gt;</span></div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="longpath_8hpp.html">stout/internal/windows/longpath.hpp</a>&gt;</span></div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="reparsepoint_8hpp.html">stout/internal/windows/reparsepoint.hpp</a>&gt;</span></div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="symlink_8hpp.html">stout/internal/windows/symlink.hpp</a>&gt;</span></div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;</div><div class="line"><a name="l00031"></a><s
 pan class="lineno">   31</span>&#160;<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>&#160;<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>&#160;</div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;<span class="comment">// Forward declaration.</span></div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;<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&amp; <a class="code" href="namespacepath.html">path</a>);</div><div class="line"><a name="l00036"></a><span class="lineno">   36
 </span>&#160;</div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;<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>&#160;    <span class="keyword">const</span> std::string&amp; <a class="code" href="namespacepath.html">path</a>,</div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;    <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>&#160;{</div><div class="line"><a name="l00041"></a><span class="lineno">   41</span
 >&#160;  <span class="comment">// A symlink itself is not a directory.</span></div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;  <span class="comment">// If it&#39;s not a link, we ignore `follow`.</span></div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;  <span class="keywordflow">if</span> (follow == <a class="code" href="namespaceos_1_1stat.html#a305c82e6d53ccd82665b4b3648afcd1ca884cbffa48c7e5b804161fdc71389c7e">FollowSymlink::DO_NOT_FOLLOW_SYMLINK</a> &amp;&amp; <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>&#160;    <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;  }</div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;</div><div class="line">
 <a name="l00047"></a><span class="lineno">   47</span>&#160;  <span class="keyword">const</span> <a class="code" href="classTry.html">Try&lt;DWORD&gt;</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>&#160;      ::<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>&#160;</div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;  <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>&#160;    <span class="keywordflow">return</span> <span class="keyword">false</span>;</d
 iv><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;  }</div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;</div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;  <span class="keywordflow">return</span> attributes.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>() &amp; FILE_ATTRIBUTE_DIRECTORY;</div><div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;}</div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;</div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;</div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;<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>&#160;<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>&amp; fd)</div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;{</div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;  BY_HANDLE_FILE_INFORMATION info;</div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;  <span class="keyword">const</span> BOOL result = ::GetFileInformationByHandle(fd, &amp;info);</div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;  <span class="keywordflow">if</span> (result == FALSE) {</div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;    <span class="keywordflow">return</span> <span class="key
 word">false</span>;</div><div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;  }</div><div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;</div><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;  <span class="keywordflow">return</span> info.dwFileAttributes &amp; FILE_ATTRIBUTE_DIRECTORY;</div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;}</div><div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;</div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;</div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;<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>&#160;    <span class="keyword">const</span> s
 td::string&amp; path,</div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;    <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>&#160;{</div><div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;  <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>&#160;  <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>&#160;  <span class="comment">// returns false for symbolic links.</span></div><div class="line
 "><a name="l00078"></a><span class="lineno">   78</span>&#160;  <span class="comment">// If it&#39;s not a link, we ignore `follow`.</span></div><div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;  <span class="keywordflow">if</span> (follow == <a class="code" href="namespaceos_1_1stat.html#a305c82e6d53ccd82665b4b3648afcd1ca884cbffa48c7e5b804161fdc71389c7e">FollowSymlink::DO_NOT_FOLLOW_SYMLINK</a> &amp;&amp; <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>&#160;    <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;  }</div><div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;</div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;  <span class="keyword">const</span> <a
  class="code" href="classTry.html">Try&lt;DWORD&gt;</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>&#160;      ::<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>&#160;</div><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;  <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>&#160;    <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;  }</div><div clas
 s="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;</div><div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;  <span class="comment">// NOTE: Windows files attributes do not define a flag for &quot;regular&quot;</span></div><div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;  <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>&#160;  <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>&#160;  <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>&#160;  <span class="keywordflow">return</span> !(attributes.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007
 be5">get</a>() &amp; FILE_ATTRIBUTE_DIRECTORY);</div><div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;}</div><div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;</div><div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;</div><div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;<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&amp; path)</div><div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;{</div><div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;  <a class="code" href="classTry.html">Try&lt;::internal::windows::SymbolicLink&gt;</a> <a class="code" href="namespacefs.html#a68279f7514744bb2af74dfce8bb0bbc7">symlink</a> =</div><div class="line"><a name="l00101"></a>
 <span class="lineno">  101</span>&#160;    <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>&#160;</div><div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;  <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>&#160;}</div><div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;</div><div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;</div><div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;<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>&#160;<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>&#160;<span class="comment">// zero because that&#39;s what Windows says.</span></div><div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;<span class="keyword">inline</span> <a class="code" href="classTry.html">Try&lt;Bytes&gt;</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>&#160;    <span class="keyword">const</span> std::string&amp; path,</div><div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;    <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>&#160;{</div><div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;  <span class="keyword">const</span> <a class="code" href="classTry.html">Try&lt;SharedHandle&gt;</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>&#160;    ? ::<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>&#160;    : <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>&#160;  <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>&#160;    <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">&quot;Error obtaining handle to file: &quot;</span> + handle.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;  }</div><div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;</div><div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;  LARGE_INTEGER file_size;</div><div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;</div><div class="line"><a name="l00123"></a><span class="lineno">  123</sp
 an>&#160;  <span class="keywordflow">if</span> (::GetFileSizeEx(handle-&gt;<a class="code" href="classSharedHandle.html#a800385e17e17cb826147968e748fd8fa">get_handle</a>(), &amp;file_size) == 0) {</div><div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;    <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>&#160;  }</div><div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;</div><div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;  <span class="keywordflow">return</span> <a class="code" href="classBytes.html">Bytes</a>(file_size.QuadPart);</div><div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;}</div><div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;</div><div class="line"><a name="l00130"></a><span class="lineno">  130</
 span>&#160;</div><div class="line"><a name="l00131"></a><span class="lineno"><a class="line" href="namespaceos_1_1stat.html#af7fab12f2f4bf8ec51d5791202d41abc">  131</a></span>&#160;<span class="keyword">inline</span> <a class="code" href="classTry.html">Try&lt;Bytes&gt;</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>&amp; fd)</div><div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;{</div><div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;  LARGE_INTEGER file_size;</div><div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;</div><div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;  <span class="keywordflow">if</span> (::GetFileSizeEx(fd, &amp;file_size) == 0) {</div><div class="line"><a name="l00136"></a><span class=
 "lineno">  136</span>&#160;    <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>&#160;  }</div><div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;</div><div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;  <span class="keywordflow">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>&#160;}</div><div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;</div><div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;</div><div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;<span class="keyword">inline</span> <a class="code" href="classTry.html">Try&lt;long&gt;</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>&#160;    <span class="keyword">const</span> std::string&amp; path,</div><div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;    <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>&#160;{</div><div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;  <span class="keywordflow">if</span> (follow == <a class="code" href="namespaceos_1_1stat.html#a305c82e6d53ccd82665b4b3648afcd1ca884cbffa48c7e5b804161fdc71389c7e">FollowSymlink::DO_NOT_FOLLOW_SYMLINK</a> &amp;&amp; <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>&#160;    <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>&#160;        <span class="stringliteral">&quot;Requested mtime for &#39;&quot;</span> + path +</div><div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;        <span class="stringliteral">&quot;&#39;, but symbolic links don&#39;t have an mtime on Windows&quot;</span>);</div><div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;  }</div><div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;</div><div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;  <a class="code" href="classTry.html">Try&lt;SharedHandle&gt;</a> handle =</div><div class="line"><a name="l00154"></a><span class="lineno">  154</s
 pan>&#160;    (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>&#160;      ? ::<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>&#160;      : <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>&#160;  <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>&#160;    <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>&#160;  }</div><div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;</div><div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;  FILETIME filetime;</div><div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;  <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>&#160;  <span class="keyword">const</span> BOOL result =</div><div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;    ::GetFileTime(handle-&gt;<a class="code" href="classSharedHandle.html#a800385e17e17cb826147968e748fd8fa">get_handle</a>(), <span class="keyword">nullptr</span>, <span class="keyword">nullptr</sp
 an>, &amp;filetime);</div><div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;  <span class="keywordflow">if</span> (result == FALSE) {</div><div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;    <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>&#160;  }</div><div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;</div><div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;  <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>&#160;  ULARGE_INTEGER largetime;</div><div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;  largetime.LowPart = filetime.dwLowDateTime;</div><div class="line"><a name="l00172"></a><span class="lineno">  
 172</span>&#160;  largetime.HighPart = filetime.dwHighDateTime;</div><div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;  <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>&#160;  <span class="comment">// layout of the `ULARGE_INTEGER` struct.</span></div><div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;  static_assert(</div><div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;      <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>&#160;      <span class="stringliteral">&quot;Expected `QuadPart` to be of type `__int64`&quot;</span>);</div><div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;  <span class="keyword">const</span>
  __int64 windowstime = largetime.QuadPart;</div><div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;  <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>&#160;  <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>&#160;  <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>&#160;  <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>&#160;  <span class="comment">// +0000.</span></div><div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;  <span class="comment">//</spa
 n></div><div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;  <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>&#160;  <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>&#160;  <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>&#160;  <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>&#160;  <span class="keyword">const</span> __int64 unixtime = (windowstime / 10000000) - 11644473600;</div><div class="line"><a name="l00190"></a><span class="lineno">  190</span>&#160;  <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>&#160;  <span class="comment">// truncation to not cause information loss.</span></div><div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;  <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><span class="keywordtype">long</span><span class="keyword">&gt;</span>(unixtime);</div><div class="line"><a name="l00193"></a><span class="lineno">  193</span>&#160;}</div><div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#160;</div><div class="line"><a name="l00195"></a><span class="lineno">  195</span>&#160;</div><div class="line"><a name="l00196"></a><span class="lineno">  196</span>&#160;<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>&#160;<span class="comment
 ">// the CRT API `_stat`, which we want to avoid, and they&#39;re not</span></div><div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160;<span class="comment">// currently used on Windows.</span></div><div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160;<span class="keyword">inline</span> <a class="code" href="classTry.html">Try&lt;mode_t&gt;</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>&#160;  <span class="keyword">const</span> std::string&amp; path,</div><div class="line"><a name="l00201"></a><span class="lineno">  201</span>&#160;  <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>&#160;</div><div clas
 s="line"><a name="l00203"></a><span class="lineno">  203</span>&#160;</div><div class="line"><a name="l00204"></a><span class="lineno">  204</span>&#160;<span class="keyword">inline</span> <a class="code" href="classTry.html">Try&lt;dev_t&gt;</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>&#160;  <span class="keyword">const</span> std::string&amp; path,</div><div class="line"><a name="l00206"></a><span class="lineno">  206</span>&#160;  <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>&#160;</div><div class="line"><a name="l00208"></a><span class="lineno">  208</span>&#160;</div><div class="line"><a name="l00209"></a><span class="lineno">  209</span>&#16
 0;<span class="keyword">inline</span> <a class="code" href="classTry.html">Try&lt;ino_t&gt;</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>&#160;  <span class="keyword">const</span> std::string&amp; path,</div><div class="line"><a name="l00211"></a><span class="lineno">  211</span>&#160;  <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>&#160;</div><div class="line"><a name="l00213"></a><span class="lineno">  213</span>&#160;} <span class="comment">// namespace stat {</span></div><div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160;} <span class="comment">// namespace os {</span></div><div class="line"><a name="l00215"></a><spa
 n class="lineno">  215</span>&#160;</div><div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#160;<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>
+<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>&#160;<span class="comment">// Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<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>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<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>&#160;<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>&#160;<span class="comment">// distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<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>&#160;<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>&#160;<span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;</div><div clas
 s="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="preprocessor">#ifndef __STOUT_OS_WINDOWS_STAT_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="preprocessor">#define __STOUT_OS_WINDOWS_STAT_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;</div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span></div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="preprocessor">#include &lt;type_traits&gt;</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;</div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="bytes_8hpp.html">stout/bytes.hpp</a>&gt;</span></div><div class="line"><a name="l00020"></a><span cla
 ss="lineno">   20</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="try_8hpp.html">stout/try.hpp</a>&gt;</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="unreachable_8hpp.html">stout/unreachable.hpp</a>&gt;</span></div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html">stout/windows.hpp</a>&gt;</span></div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;</div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="int__fd_8hpp.html">stout/os/int_fd.hpp</a>&gt;</span></div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;</div><div class="line"><a name="l00026"></a><span class="li
 neno">   26</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="windows_2os_8hpp.html">stout/windows/os.hpp</a>&gt;</span></div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;</div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="3rdparty_2stout_2include_2stout_2internal_2windows_2attributes_8hpp.html">stout/internal/windows/attributes.hpp</a>&gt;</span></div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="longpath_8hpp.html">stout/internal/windows/longpath.hpp</a>&gt;</span></div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="reparsepoint_8hpp.html">stout/internal/windows/reparsepoint.hpp</a>&gt;</span></div><div class="line"><a name="l00031"></a><span class=
 "lineno">   31</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="symlink_8hpp.html">stout/internal/windows/symlink.hpp</a>&gt;</span></div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;<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>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceos_1_1stat_1_1internal.html#a1e8d1b1fd61d53e84b399c10bb67520d">stat</a> {</div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;</div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;<span class="comment">// Forward declaration.</span></div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;<span class="keyword">inline</span> <span class="keywo
 rdtype">bool</span> <a class="code" href="namespaceos_1_1stat.html#a0ba4d272b938da76e404648103077480">islink</a>(<span class="keyword">const</span> std::string&amp; <a class="code" href="namespacepath.html">path</a>);</div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;<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="l00040"></a><span class="lineno">   40</span>&#160;    <span class="keyword">const</span> std::string&amp; <a class="code" href="namespacepath.html">path</a>,</div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;    <span class="keyword">const</span> <a class="code" href="namespaceos_1_1stat.html#a305c82e6d53ccd82665b4b3648afcd1c">FollowSymlink</a> follow = <a class="code" href="n
 amespaceos_1_1stat.html#a305c82e6d53ccd82665b4b3648afcd1ca52881123108233bc671c71041ff852c5">FollowSymlink::FOLLOW_SYMLINK</a>)</div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;{</div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;  <span class="comment">// A symlink itself is not a directory.</span></div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;  <span class="comment">// If it&#39;s not a link, we ignore `follow`.</span></div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;  <span class="keywordflow">if</span> (follow == <a class="code" href="namespaceos_1_1stat.html#a305c82e6d53ccd82665b4b3648afcd1ca884cbffa48c7e5b804161fdc71389c7e">FollowSymlink::DO_NOT_FOLLOW_SYMLINK</a> &amp;&amp; <a class="code" href="namespaceos_1_1stat.html#a0ba4d272b938da76e404648103077480">islink</a>(path)) {</div><div class="line"><a name="l00046"></a><span class="lineno">   4
 6</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;  }</div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;</div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;  <span class="keyword">const</span> <a class="code" href="classTry.html">Try&lt;DWORD&gt;</a> attributes = <a class="code" href="namespaceinternal_1_1windows.html#adb5b8a8afe285eb66a0a551f2382d113">::internal::windows::get_file_attributes</a>(</div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;      ::<a class="code" href="namespaceinternal_1_1windows.html#abd7dbdbc8d95626d0c66455078380aa1">internal::windows::longpath</a>(path));</div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;</div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;  <span class="
 keywordflow">if</span> (attributes.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">false</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>&#160;</div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;  <span class="keywordflow">return</span> attributes.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>() &amp; FILE_ATTRIBUTE_DIRECTORY;</div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;}</div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;</div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;</div><div class="line"><a name="l00060
 "></a><span class="lineno">   60</span>&#160;<span class="comment">// TODO(andschwa): Refactor `GetFileInformationByHandle` into its own function.</span></div><div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="namespaceos_1_1stat.html#a7946f1ee7757462c01876054429a67b5">   61</a></span>&#160;<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>&amp; fd)</div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;{</div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;  BY_HANDLE_FILE_INFORMATION info;</div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;  <span class="keyword">const</span> BOOL result = ::GetFileInformationByHandle(fd, &amp;inf
 o);</div><div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;  <span class="keywordflow">if</span> (result == FALSE) {</div><div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;  }</div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;</div><div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;  <span class="keywordflow">return</span> info.dwFileAttributes &amp; FILE_ATTRIBUTE_DIRECTORY;</div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;}</div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;</div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;</div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;<sp
 an 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="l00074"></a><span class="lineno">   74</span>&#160;    <span class="keyword">const</span> std::string&amp; path,</div><div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;    <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="l00076"></a><span class="lineno">   76</span>&#160;{</div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;  <span class="comment">// A symlink itself is a file, but not a regular file.</span></div><div class="line"><a name="l00078"></a><span cl
 ass="lineno">   78</span>&#160;  <span class="comment">// On POSIX, this check is done with `S_IFREG`, which</span></div><div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;  <span class="comment">// returns false for symbolic links.</span></div><div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;  <span class="comment">// If it&#39;s not a link, we ignore `follow`.</span></div><div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;  <span class="keywordflow">if</span> (follow == <a class="code" href="namespaceos_1_1stat.html#a305c82e6d53ccd82665b4b3648afcd1ca884cbffa48c7e5b804161fdc71389c7e">FollowSymlink::DO_NOT_FOLLOW_SYMLINK</a> &amp;&amp; <a class="code" href="namespaceos_1_1stat.html#a0ba4d272b938da76e404648103077480">islink</a>(path)) {</div><div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
 <div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;  }</div><div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;</div><div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;  <span class="keyword">const</span> <a class="code" href="classTry.html">Try&lt;DWORD&gt;</a> attributes = <a class="code" href="namespaceinternal_1_1windows.html#adb5b8a8afe285eb66a0a551f2382d113">::internal::windows::get_file_attributes</a>(</div><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;      ::<a class="code" href="namespaceinternal_1_1windows.html#abd7dbdbc8d95626d0c66455078380aa1">internal::windows::longpath</a>(path));</div><div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;</div><div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;  <span class="keywordflow">if</span> (attributes.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b04
 3a276">isError</a>()) {</div><div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;  }</div><div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;</div><div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;  <span class="comment">// NOTE: Windows files attributes do not define a flag for &quot;regular&quot;</span></div><div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;  <span class="comment">// files. Instead, this call will only return successfully iff the</span></div><div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;  <span class="comment">// given file or directory exists. Checking against the directory</span></div><div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;  
 <span class="comment">// flag determines if the path is a file or directory.</span></div><div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;  <span class="keywordflow">return</span> !(attributes.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>() &amp; FILE_ATTRIBUTE_DIRECTORY);</div><div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;}</div><div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;</div><div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;</div><div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;<span class="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&amp; path)</div><div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;{</div><div class
 ="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;  <a class="code" href="classTry.html">Try&lt;::internal::windows::SymbolicLink&gt;</a> <a class="code" href="namespacefs.html#a68279f7514744bb2af74dfce8bb0bbc7">symlink</a> =</div><div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;    <a class="code" href="namespaceinternal_1_1windows.html#a39ca8fa0643b489f6bef951bef207c92">::internal::windows::query_symbolic_link_data</a>(path);</div><div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;</div><div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;  <span class="keywordflow">return</span> symlink.<a class="code" href="classTry.html#a6543d7d5db4f298bcd673bf3cd509acc">isSome</a>();</div><div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;}</div><div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;</div><div class="line"><a name="l00108"></a><sp
 an class="lineno">  108</span>&#160;</div><div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;<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="l00110"></a><span class="lineno">  110</span>&#160;<span class="comment">// symbolic link with `follow` set to `DO_NOT_FOLLOW_SYMLINK`, this will return</span></div><div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;<span class="comment">// zero because that&#39;s what Windows says.</span></div><div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;<span class="keyword">inline</span> <a class="code" href="classTry.html">Try&lt;Bytes&gt;</a> <a class="code" href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">size</a>(</div><div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;    <span class="keyword">const</span> std::string&amp; path,</div><d
 iv class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;    <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="l00115"></a><span class="lineno">  115</span>&#160;{</div><div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;  <span class="keyword">const</span> <a class="code" href="classTry.html">Try&lt;SharedHandle&gt;</a> handle = (follow == <a class="code" href="namespaceos_1_1stat.html#a305c82e6d53ccd82665b4b3648afcd1ca52881123108233bc671c71041ff852c5">FollowSymlink::FOLLOW_SYMLINK</a>)</div><div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;    ? ::<a class="code" href="namespaceinternal_1_1windows.html#a5b261c85683d489b859236063e979e98">i
 nternal::windows::get_handle_follow</a>(path)</div><div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;    : <a class="code" href="namespaceinternal_1_1windows.html#a8ee4f75d803d8ed56ce760d8e1dfac14">::internal::windows::get_handle_no_follow</a>(path);</div><div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;  <span class="keywordflow">if</span> (handle.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">&quot;Error obtaining handle to file: &quot;</span> + handle.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;  }</div><div class="line"><a name="l00122"></a><span class="lineno"
 >  122</span>&#160;</div><div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;  LARGE_INTEGER file_size;</div><div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;</div><div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;  <span class="keywordflow">if</span> (::GetFileSizeEx(handle-&gt;<a class="code" href="classSharedHandle.html#a800385e17e17cb826147968e748fd8fa">get_handle</a>(), &amp;file_size) == 0) {</div><div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classWindowsError.html">WindowsError</a>();</div><div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;  }</div><div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;</div><div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;  <span class="keywordflow">return</span> <a class="code" href="c
 lassBytes.html">Bytes</a>(file_size.QuadPart);</div><div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;}</div><div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;</div><div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;</div><div class="line"><a name="l00133"></a><span class="lineno"><a class="line" href="namespaceos_1_1stat.html#af7fab12f2f4bf8ec51d5791202d41abc">  133</a></span>&#160;<span class="keyword">inline</span> <a class="code" href="classTry.html">Try&lt;Bytes&gt;</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>&amp; fd)</div><div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;{</div><div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;  LARGE_INTEGER file_size;</div><div class="l
 ine"><a name="l00136"></a><span class="lineno">  136</span>&#160;</div><div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;  <span class="keywordflow">if</span> (::GetFileSizeEx(fd, &amp;file_size) == 0) {</div><div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classWindowsError.html">WindowsError</a>();</div><div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;  }</div><div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;</div><div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;  <span class="keywordflow">return</span> <a class="code" href="classBytes.html">Bytes</a>(file_size.QuadPart);</div><div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;}</div><div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;</div><div class="line"><a name="l0014
 4"></a><span class="lineno">  144</span>&#160;</div><div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;<span class="keyword">inline</span> <a class="code" href="classTry.html">Try&lt;long&gt;</a> <a class="code" href="namespaceos_1_1stat.html#a7305d671adaae193b8c158bf058180ee">mtime</a>(</div><div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;    <span class="keyword">const</span> std::string&amp; path,</div><div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;    <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="l00148"></a><span class="lineno">  148</span>&#160;{</div><div class="line"><a name="l00149"></a><span class="lineno">  149
 </span>&#160;  <span class="keywordflow">if</span> (follow == <a class="code" href="namespaceos_1_1stat.html#a305c82e6d53ccd82665b4b3648afcd1ca884cbffa48c7e5b804161fdc71389c7e">FollowSymlink::DO_NOT_FOLLOW_SYMLINK</a> &amp;&amp; <a class="code" href="namespaceos_1_1stat.html#a0ba4d272b938da76e404648103077480">islink</a>(path)) {</div><div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(</div><div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;        <span class="stringliteral">&quot;Requested mtime for &#39;&quot;</span> + path +</div><div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;        <span class="stringliteral">&quot;&#39;, but symbolic links don&#39;t have an mtime on Windows&quot;</span>);</div><div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;  }</div><div class="line"><a na
 me="l00154"></a><span class="lineno">  154</span>&#160;</div><div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;  <a class="code" href="classTry.html">Try&lt;SharedHandle&gt;</a> handle =</div><div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;    (follow == <a class="code" href="namespaceos_1_1stat.html#a305c82e6d53ccd82665b4b3648afcd1ca52881123108233bc671c71041ff852c5">FollowSymlink::FOLLOW_SYMLINK</a>)</div><div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;      ? ::<a class="code" href="namespaceinternal_1_1windows.html#a5b261c85683d489b859236063e979e98">internal::windows::get_handle_follow</a>(path)</div><div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;      : <a class="code" href="namespaceinternal_1_1windows.html#a8ee4f75d803d8ed56ce760d8e1dfac14">::internal::windows::get_handle_no_follow</a>(path);</div><div class="line"><a name="l00159"></a><span class="lineno">  1
 59</span>&#160;  <span class="keywordflow">if</span> (handle.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;    <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="l00161"></a><span class="lineno">  161</span>&#160;  }</div><div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;</div><div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;  FILETIME filetime;</div><div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;  <span class="comment">// The last argument is file write time, AKA modification time.</span></div><div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;  <span class="keyword">const</span> BOOL re
 sult =</div><div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;    ::GetFileTime(handle-&gt;<a class="code" href="classSharedHandle.html#a800385e17e17cb826147968e748fd8fa">get_handle</a>(), <span class="keyword">nullptr</span>, <span class="keyword">nullptr</span>, &amp;filetime);</div><div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;  <span class="keywordflow">if</span> (result == FALSE) {</div><div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classWindowsError.html">WindowsError</a>();</div><div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;  }</div><div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;</div><div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;  <span class="keyword">const</span> uint64_t unixtime = <a class="code" href="namespaceos_1_1intern
 al.html#a1493e5fcc92753702d08b36881ee8f97">os::internal::windows_to_unix_epoch</a>(filetime);</div><div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;</div><div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;  <span class="comment">// We choose to make this conversion explicit because we expect the</span></div><div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;  <span class="comment">// truncation to not cause information loss.</span></div><div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;  <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><span class="keywordtype">long</span><span class="keyword">&gt;</span>(unixtime);</div><div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;}</div><div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;</div><div class="line"><a name="l00178"></a><span class="l
 ineno">  178</span>&#160;</div><div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;<span class="comment">// NOTE: The following are deleted because implementing them would use</span></div><div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;<span class="comment">// the CRT API `_stat`, which we want to avoid, and they&#39;re not</span></div><div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;<span class="comment">// currently used on Windows.</span></div><div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160;<span class="keyword">inline</span> <a class="code" href="classTry.html">Try&lt;mode_t&gt;</a> <a class="code" href="namespaceos_1_1stat.html#afc51654ad486693167c300612bf8ebfa">mode</a>(</div><div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;  <span class="keyword">const</span> std::string&amp; path,</div><div class="line"><a name="l00184"></a><span cla
 ss="lineno">  184</span>&#160;  <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="l00185"></a><span class="lineno">  185</span>&#160;</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>&#160;<span class="keyword">inline</span> <a class="code" href="classTry.html">Try&lt;dev_t&gt;</a> <a class="code" href="namespaceos_1_1stat.html#a083c9ff4aefeba1a75a27e6a6d6e2a71">dev</a>(</div><div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;  <span class="keyword">const</span> std::string&amp; path,</div><div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160;  <span class="keyword">const</span> <a class="code" href="namespaceos_1_1stat.html#a305c82e6d53ccd82665b4b3648afcd1c">Fo
 llowSymlink</a> follow) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00190"></a><span class="lineno">  190</span>&#160;</div><div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160;</div><div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;<span class="keyword">inline</span> <a class="code" href="classTry.html">Try&lt;ino_t&gt;</a> <a class="code" href="namespaceos_1_1stat.html#ac48383be68af20ef17fe5b87177636b8">inode</a>(</div><div class="line"><a name="l00193"></a><span class="lineno">  193</span>&#160;  <span class="keyword">const</span> std::string&amp; path,</div><div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#160;  <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="l00195"></a><span class="lineno">  195</span>&#160;</d
 iv><div class="line"><a name="l00196"></a><span class="lineno">  196</span>&#160;} <span class="comment">// namespace stat {</span></div><div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;} <span class="comment">// namespace os {</span></div><div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160;</div><div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160;<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&lt; SharedHandle &gt; get_handle_no_follow(const std::string &amp;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 &amp;path, const FollowSymlink follow=FollowSymlink::FOLLOW_SYMLINK)</div><div class="ttdef"><b>Definition:</b> stat.hpp:108</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>
@@ -75,6 +75,7 @@
 <div class="ttc" id="reparsepoint_8hpp_html"><div class="ttname"><a href="reparsepoint_8hpp.html">reparsepoint.hpp</a></div></div>
 <div class="ttc" id="namespaceos_1_1stat_html_a083c9ff4aefeba1a75a27e6a6d6e2a71"><div class="ttname"><a href="namespaceos_1_1stat.html#a083c9ff4aefeba1a75a27e6a6d6e2a71">os::stat::dev</a></div><div class="ttdeci">Try&lt; dev_t &gt; dev(const std::string &amp;path, const FollowSymlink follow=FollowSymlink::FOLLOW_SYMLINK)</div><div class="ttdef"><b>Definition:</b> stat.hpp:172</div></div>
 <div class="ttc" id="bytes_8hpp_html"><div class="ttname"><a href="bytes_8hpp.html">bytes.hpp</a></div></div>
+<div class="ttc" id="namespaceos_1_1internal_html_a1493e5fcc92753702d08b36881ee8f97"><div class="ttname"><a href="namespaceos_1_1internal.html#a1493e5fcc92753702d08b36881ee8f97">os::internal::windows_to_unix_epoch</a></div><div class="ttdeci">double windows_to_unix_epoch(const FILETIME &amp;filetime)</div><div class="ttdef"><b>Definition:</b> os.hpp:87</div></div>
 <div class="ttc" id="longpath_8hpp_html"><div class="ttname"><a href="longpath_8hpp.html">longpath.hpp</a></div></div>
 <div class="ttc" id="classTry_html_a6543d7d5db4f298bcd673bf3cd509acc"><div class="ttname"><a href="classTry.html#a6543d7d5db4f298bcd673bf3cd509acc">Try::isSome</a></div><div class="ttdeci">bool isSome() const </div><div class="ttdef"><b>Definition:</b> try.hpp:70</div></div>
 <div class="ttc" id="namespaceos_1_1stat_1_1internal_html_a1e8d1b1fd61d53e84b399c10bb67520d"><div class="ttname"><a href="namespaceos_1_1stat_1_1internal.html#a1e8d1b1fd61d53e84b399c10bb67520d">os::stat::internal::stat</a></div><div class="ttdeci">Try&lt; struct::stat &gt; stat(const int_fd fd)</div><div class="ttdef"><b>Definition:</b> stat.hpp:68</div></div>
@@ -86,6 +87,7 @@
 <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>
 <div class="ttc" id="namespaceos_1_1stat_html_aa86aaa21fefc0e9cab89050b60aeca40"><div class="ttname"><a href="namespaceos_1_1stat.html#aa86aaa21fefc0e9cab89050b60aeca40">os::stat::isdir</a></div><div class="ttdeci">bool isdir(const std::string &amp;path, const FollowSymlink follow=FollowSymlink::FOLLOW_SYMLINK)</div><div class="ttdef"><b>Definition:</b> stat.hpp:91</div></div>
+<div class="ttc" id="windows_2os_8hpp_html"><div class="ttname"><a href="windows_2os_8hpp.html">os.hpp</a></div></div>
 <div class="ttc" id="namespaceos_1_1stat_html_afc51654ad486693167c300612bf8ebfa"><div class="ttname"><a href="namespaceos_1_1stat.html#afc51654ad486693167c300612bf8ebfa">os::stat::mode</a></div><div class="ttdeci">Try&lt; mode_t &gt; mode(const std::string &amp;path, const FollowSymlink follow=FollowSymlink::FOLLOW_SYMLINK)</div><div class="ttdef"><b>Definition:</b> stat.hpp:159</div></div>
 <div class="ttc" id="namespaceinternal_1_1windows_html_abd7dbdbc8d95626d0c66455078380aa1"><div class="ttname"><a href="namespaceinternal_1_1windows.html#abd7dbdbc8d95626d0c66455078380aa1">internal::windows::longpath</a></div><div class="ttdeci">std::wstring longpath(const std::string &amp;path)</div><div class="ttdef"><b>Definition:</b> longpath.hpp:38</div></div>
 <div class="ttc" id="classBytes_html"><div class="ttname"><a href="classBytes.html">Bytes</a></div><div class="ttdef"><b>Definition:</b> bytes.hpp:30</div></div>


[50/50] mesos-site git commit: Updated the website built from mesos SHA: 7c9c72d.

Posted by gi...@apache.org.
Updated the website built from mesos SHA: 7c9c72d.


Project: http://git-wip-us.apache.org/repos/asf/mesos-site/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos-site/commit/09fd0301
Tree: http://git-wip-us.apache.org/repos/asf/mesos-site/tree/09fd0301
Diff: http://git-wip-us.apache.org/repos/asf/mesos-site/diff/09fd0301

Branch: refs/heads/asf-site
Commit: 09fd030180ff9ca6cca38b94de3d3b649994bb67
Parents: 9812c25
Author: jenkins <bu...@apache.org>
Authored: Thu Jun 28 18:44:41 2018 +0000
Committer: jenkins <bu...@apache.org>
Committed: Thu Jun 28 18:44:41 2018 +0000

----------------------------------------------------------------------
 ...ess_2include_2process_2http_8hpp_source.html |    4 +-
 ..._2libprocess_2include_2process_2io_8hpp.html |    6 +
 ...ocess_2include_2process_2io_8hpp_source.html |    9 +-
 ...2include_2process_2protobuf_8hpp_source.html |    4 +-
 ..._2include_2stout_2os_2linux_8hpp_source.html |    2 +-
 ...e_2stout_2os_2windows_2read_8hpp_source.html |    4 +-
 content/api/latest/c++/Nodes.xml                |  673 +-
 content/api/latest/c++/Tokens.xml               |  576 +-
 content/api/latest/c++/annotated.html           |  219 +-
 content/api/latest/c++/classes.html             |  373 +-
 .../c++/classos_1_1WindowsFD-members.html       |   67 +-
 .../api/latest/c++/classos_1_1WindowsFD.html    |   88 +
 .../latest/c++/classprocess_1_1Subprocess.html  |    4 +-
 ...classprocess_1_1Subprocess_1_1ChildHook.html |    4 +-
 .../c++/classprocess_1_1Subprocess_1_1IO.html   |    4 +-
 ...rk_1_1internal_1_1LibeventSSLSocketImpl.html |    2 +-
 ...process_1_1windows_1_1EventLoop-members.html |   73 +
 .../classprocess_1_1windows_1_1EventLoop.html   |  188 +
 content/api/latest/c++/cni_8hpp.html            |    2 +-
 content/api/latest/c++/cni_8hpp_source.html     |    4 +-
 .../dir_01cbbd8dcbf9de3825992568658f467e.html   |   17 +-
 .../dir_0ac73505685689cb4a842e520ca4cca6.html   |   76 +
 .../dir_1894286df79cf582d947dbc4268b06cf.html   |    2 +-
 .../dir_4f303781ded361ff602a549327c53cc9.html   |   73 +
 .../dir_b2935a02400d93f2f95b894ab5508ef6.html   |   71 +
 .../dir_ecbc207ab261ae6376e9b7d1e9eba3c1.html   |   69 +
 content/api/latest/c++/docker_2docker_8hpp.html |    2 +-
 .../latest/c++/docker_2docker_8hpp_source.html  |    4 +-
 content/api/latest/c++/docker__common_8hpp.html |    2 +-
 .../latest/c++/docker__common_8hpp_source.html  |    4 +-
 content/api/latest/c++/encoder_8hpp_source.html |    2 +-
 content/api/latest/c++/fd_8hpp.html             |    2 +
 content/api/latest/c++/fd_8hpp_source.html      |   48 +-
 content/api/latest/c++/files.html               |   35 +-
 content/api/latest/c++/functions_a.html         |    9 +-
 content/api/latest/c++/functions_c.html         |   31 +-
 content/api/latest/c++/functions_d.html         |   11 +-
 content/api/latest/c++/functions_e.html         |    2 +-
 content/api/latest/c++/functions_func_a.html    |   11 +-
 content/api/latest/c++/functions_func_c.html    |   15 +-
 content/api/latest/c++/functions_func_g.html    |    9 +-
 content/api/latest/c++/functions_func_l.html    |    9 +-
 content/api/latest/c++/functions_func_p.html    |    2 +-
 content/api/latest/c++/functions_func_r.html    |   22 +-
 content/api/latest/c++/functions_func_s.html    |    9 +-
 content/api/latest/c++/functions_func_v.html    |    8 +-
 content/api/latest/c++/functions_g.html         |    9 +-
 content/api/latest/c++/functions_l.html         |    7 +-
 content/api/latest/c++/functions_m.html         |    6 +-
 content/api/latest/c++/functions_n.html         |   12 +-
 content/api/latest/c++/functions_o.html         |    5 +-
 content/api/latest/c++/functions_p.html         |    2 +-
 content/api/latest/c++/functions_r.html         |   16 +-
 content/api/latest/c++/functions_rela.html      |    3 +
 content/api/latest/c++/functions_s.html         |   29 +-
 content/api/latest/c++/functions_t.html         |   20 +-
 content/api/latest/c++/functions_u.html         |   12 +-
 content/api/latest/c++/functions_v.html         |    6 +-
 content/api/latest/c++/functions_w.html         |    6 +-
 content/api/latest/c++/globals_u.html           |    6 +-
 content/api/latest/c++/grpc_8hpp_source.html    |    4 +-
 content/api/latest/c++/hierarchy.html           | 2215 ++---
 ...clude_2mesos_2slave_2containerizer_8hpp.html |    2 +-
 ...mesos_2slave_2containerizer_8hpp_source.html |    4 +-
 .../c++/include_2process_2subprocess_8hpp.html  |  125 +
 ...nclude_2process_2subprocess_8hpp_source.html |  115 +
 content/api/latest/c++/index.hhc                |  201 +-
 content/api/latest/c++/index.hhk                |  348 +-
 content/api/latest/c++/index.hhp                |   38 +-
 content/api/latest/c++/int__fd_8hpp_source.html |    2 +-
 content/api/latest/c++/io__internal_8hpp.html   |   91 +
 .../latest/c++/io__internal_8hpp_source.html    |   75 +
 content/api/latest/c++/libev_8hpp.html          |    4 +-
 content/api/latest/c++/libev_8hpp_source.html   |    4 +-
 content/api/latest/c++/libevent_8hpp.html       |    4 +-
 .../api/latest/c++/libevent_8hpp_source.html    |    4 +-
 .../latest/c++/libevent__ssl__socket_8hpp.html  |    4 +-
 .../c++/libevent__ssl__socket_8hpp_source.html  |    4 +-
 ..._2include_2process_2process_8hpp_source.html |    4 +-
 ...s_2include_2process_2socket_8hpp_source.html |    4 +-
 ...nclude_2process_2ssl_2gtest_8hpp_source.html |    4 +-
 ...clude_2process_2windows_2jobobject_8hpp.html |    2 +-
 ...process_2windows_2jobobject_8hpp_source.html |    4 +-
 content/api/latest/c++/libwinio_8hpp.html       |  105 +
 .../api/latest/c++/libwinio_8hpp_source.html    |   91 +
 .../latest/c++/linux_2cgroups_8hpp_source.html  |    4 +-
 .../latest/c++/memory__test__helper_8hpp.html   |    2 +-
 .../c++/memory__test__helper_8hpp_source.html   |    4 +-
 content/api/latest/c++/namespacemembers_a.html  |    9 +-
 content/api/latest/c++/namespacemembers_c.html  |   11 +-
 .../api/latest/c++/namespacemembers_func_a.html |   11 +-
 .../api/latest/c++/namespacemembers_func_c.html |   13 +-
 .../api/latest/c++/namespacemembers_func_i.html |    6 +-
 .../api/latest/c++/namespacemembers_func_p.html |    8 +-
 .../api/latest/c++/namespacemembers_func_r.html |    5 +-
 .../api/latest/c++/namespacemembers_func_s.html |   18 +-
 .../api/latest/c++/namespacemembers_func_w.html |   13 +-
 content/api/latest/c++/namespacemembers_i.html  |    6 +-
 content/api/latest/c++/namespacemembers_l.html  |    7 +-
 content/api/latest/c++/namespacemembers_m.html  |    2 +-
 content/api/latest/c++/namespacemembers_p.html  |   12 +-
 content/api/latest/c++/namespacemembers_r.html  |    9 +-
 content/api/latest/c++/namespacemembers_s.html  |    8 +-
 .../api/latest/c++/namespacemembers_vars_l.html |    3 +
 content/api/latest/c++/namespacemembers_w.html  |   12 +-
 .../api/latest/c++/namespaceos_1_1internal.html |   26 +
 content/api/latest/c++/namespaceprocess.html    |   16 +
 .../api/latest/c++/namespaceprocess_1_1io.html  |   54 +
 .../c++/namespaceprocess_1_1io_1_1internal.html |  174 +
 .../latest/c++/namespaceprocess_1_1windows.html |  332 +
 content/api/latest/c++/namespaces.html          |    4 +-
 content/api/latest/c++/port__mapping_8hpp.html  |    2 +-
 .../latest/c++/port__mapping_8hpp_source.html   |    4 +-
 .../api/latest/c++/posix_2os_8hpp_source.html   |    4 +-
 content/api/latest/c++/rwlock_8hpp_source.html  |    4 +-
 content/api/latest/c++/sandbox_8hpp.html        |    2 +-
 content/api/latest/c++/sandbox_8hpp_source.html |    4 +-
 .../c++/slave_2container__logger_8hpp.html      |    2 +-
 .../slave_2container__logger_8hpp_source.html   |    4 +-
 ...ve_2containerizer_2mesos_2launcher_8hpp.html |    2 +-
 ...tainerizer_2mesos_2launcher_8hpp_source.html |    4 +-
 .../c++/src_2log_2network_8hpp_source.html      |    4 +-
 ...ator_2sorter_2random_2utils_8hpp_source.html |    2 +-
 .../c++/src_2master_2master_8hpp_source.html    |    4 +-
 .../latest/c++/src_2posix_2subprocess_8hpp.html |  108 +
 .../c++/src_2posix_2subprocess_8hpp_source.html |  137 +
 .../api/latest/c++/src_2tests_2mesos_8hpp.html  |    2 +-
 .../c++/src_2tests_2mesos_8hpp_source.html      |    4 +-
 .../c++/src_2windows_2subprocess_8hpp.html      |   97 +
 .../src_2windows_2subprocess_8hpp_source.html   |  100 +
 ...ubprocess_1_1IO_1_1InputFileDescriptors.html |    4 +-
 ...bprocess_1_1IO_1_1OutputFileDescriptors.html |    4 +-
 ...ructprocess_1_1Subprocess_1_1ParentHook.html |    4 +-
 content/api/latest/c++/subprocess_8hpp.html     |  125 -
 .../api/latest/c++/subprocess_8hpp_source.html  |  115 -
 .../api/latest/c++/subprocess__posix_8hpp.html  |  108 -
 .../c++/subprocess__posix_8hpp_source.html      |  137 -
 .../latest/c++/subprocess__windows_8hpp.html    |   97 -
 .../c++/subprocess__windows_8hpp_source.html    |  100 -
 content/api/latest/c++/systemd_8hpp.html        |    2 +-
 content/api/latest/c++/systemd_8hpp_source.html |    4 +-
 .../tests_2containerizer_2launcher_8hpp.html    |    2 +-
 ...ts_2containerizer_2launcher_8hpp_source.html |    4 +-
 .../c++/v1_2resource__provider_8hpp_source.html |    4 +-
 .../latest/c++/v1_2scheduler_8hpp_source.html   |    4 +-
 .../latest/c++/windows_2dup_8hpp_source.html    |    6 +-
 .../latest/c++/windows_2event__loop_8hpp.html   |   80 +
 .../c++/windows_2event__loop_8hpp_source.html   |   66 +
 content/api/latest/c++/windows_2os_8hpp.html    |    2 +
 .../api/latest/c++/windows_2os_8hpp_source.html |   10 +-
 content/api/latest/c++/windows_2stat_8hpp.html  |    1 +
 .../latest/c++/windows_2stat_8hpp_source.html   |    4 +-
 .../latest/c++/windows_2write_8hpp_source.html  |    4 +-
 content/sitemap.xml                             | 9394 +++++++++---------
 154 files changed, 10389 insertions(+), 7599 deletions(-)
----------------------------------------------------------------------



[37/50] mesos-site git commit: Updated the website built from mesos SHA: 7c9c72d.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/fd_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/fd_8hpp_source.html b/content/api/latest/c++/fd_8hpp_source.html
index d858606..edcadb7 100644
--- a/content/api/latest/c++/fd_8hpp_source.html
+++ b/content/api/latest/c++/fd_8hpp_source.html
@@ -52,41 +52,47 @@
 <div class="title">fd.hpp</div>  </div>
 </div><!--header-->
 <div class="contents">
-<a href="fd_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>&#160;<span class="comment">// Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<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>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<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></di
 v><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<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>&#160;<span class="comment">// distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<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>&#160;<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>&#160;<span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;</div><div class="line"><a
  name="l00013"></a><span class="lineno">   13</span>&#160;<span class="preprocessor">#ifndef __STOUT_OS_WINDOWS_FD_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="preprocessor">#define __STOUT_OS_WINDOWS_FD_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;</div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="preprocessor">#include &lt;fcntl.h&gt;</span> <span class="comment">// For `O_RDWR`.</span></div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="preprocessor">#include &lt;io.h&gt;</span> <span class="comment">// For `_open_osfhandle`.</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;</div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;<span class="preprocessor">#include &lt;array&gt;</span></div><div class="line"><a 
 name="l00020"></a><span class="lineno">   20</span>&#160;<span class="preprocessor">#include &lt;memory&gt;</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="preprocessor">#include &lt;ostream&gt;</span></div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="preprocessor">#include &lt;type_traits&gt;</span></div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;</div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="stout_2include_2stout_2check_8hpp.html">stout/check.hpp</a>&gt;</span></div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="nothing_8hpp.html">stout/nothing.hpp</a>&gt;</span></div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<span class="p
 reprocessor">#include &lt;<a class="code" href="try_8hpp.html">stout/try.hpp</a>&gt;</span></div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="unreachable_8hpp.html">stout/unreachable.hpp</a>&gt;</span></div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html">stout/windows.hpp</a>&gt;</span> <span class="comment">// For `WinSock2.h`.</span></div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;</div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<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>&#160;</div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#16
 0;<span class="comment">// The `WindowsFD` class exists to provide an common interface with the POSIX</span></div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;<span class="comment">// file descriptor. While the bare `int` representation of the POSIX file</span></div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;<span class="comment">// descriptor API is undesirable, we rendezvous there in order to maintain the</span></div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;<span class="comment">// existing code in Mesos.</span></div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;<span class="comment">// In the platform-agnostic code paths, the `int_fd` type is aliased to</span></div><div class="line"><a name="l00038"></a><span class="lineno">   38</s
 pan>&#160;<span class="comment">// `WindowsFD`. The `os::*` functions return a type appropriate to the platform,</span></div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;<span class="comment">// which allows us to write code like this:</span></div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;<span class="comment">//   Try&lt;int_fd&gt; fd = os::open(...);</span></div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;<span class="comment">// The `WindowsFD` constructs off one of:</span></div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;<span class="comment">//   (1) `HANDLE` - from the Win32 API</span></div><div class="line"><a name=
 "l00045"></a><span class="lineno">   45</span>&#160;<span class="comment">//   (2) `SOCKET` - from the WinSock API</span></div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;<span class="comment">// The `os::*` functions then take an instance of `WindowsFD`, examines</span></div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;<span class="comment">// the state and dispatches to the appropriate API.</span></div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;</div><div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="classos_1_1WindowsFD.html">   50</a></span>&#160;<span class="keyword">class </span><a class="code" href="classos_1_1WindowsFD.html">WindowsFD</a></div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;{</div><div
  class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5">   53</a></span>&#160;  <span class="keyword">enum class</span> <a class="code" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5">Type</a></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>&#160;    <a class="code" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5ad09c4cb1265f1772bb757a7af277b49f">HANDLE</a>,</div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;    <a class="code" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5a75fbea08c09e684e6b3f3961761354fa">SOCKET</a></div><div class="line"><a name="l00057"></a><span class="lineno"> 
   57</span>&#160;  };</div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;</div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;  <span class="comment">// The `HANDLE` here is expected to be file handles. Specifically,</span></div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;  <span class="comment">// `HANDLE`s returned by file API such as `CreateFile`. There are</span></div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;  <span class="comment">// APIs that return `HANDLE`s with different error values, and</span></div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;  <span class="comment">// therefore must be handled accordingly. For example, a thread API</span></div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;  <span class="comment">// such as `CreateThread` returns `NULL` as the error value, rat
 her</span></div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;  <span class="comment">// than `INVALID_HANDLE_VALUE`.</span></div><div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;  <span class="comment">//</span></div><div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;  <span class="comment">// TODO(mpark): Consider adding a second parameter which tells us</span></div><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;  <span class="comment">//              what the error values are.</span></div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;  static_assert(</div><div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;      std::is_same&lt;HANDLE, void*&gt;::value,</div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;      <span class="stringliteral">&quot;Expected `HANDLE` to be of type 
 `void*`.&quot;</span>);</div><div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="classos_1_1WindowsFD.html#a421497a56ee02f01dd4f0773d07eaa76">   71</a></span>&#160;  <span class="keyword">explicit</span> <a class="code" href="classos_1_1WindowsFD.html#a421497a56ee02f01dd4f0773d07eaa76">WindowsFD</a>(<a class="code" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5ad09c4cb1265f1772bb757a7af277b49f">HANDLE</a> handle, <span class="keywordtype">bool</span> overlapped = <span class="keyword">false</span>)</div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;    : type_(<a class="code" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5">Type</a>::<a class="code" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5ad09c4cb1265f1772bb757a7af277b49f">HANDLE</a>), <a class="code" href="classos_1_1WindowsFD.html#afcf316b6f5178ce1b9002c4202aebcf6">handle_</a>(handle), overlapped_(overlapped)
 </div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;  {}</div><div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;</div><div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;  <span class="comment">// The `SOCKET` here is expected to be Windows sockets, such as that</span></div><div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;  <span class="comment">// used by the Windows Sockets 2 library. The only expected error</span></div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;  <span class="comment">// value is `INVALID_SOCKET`.</span></div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;  <span class="comment">//</span></div><div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;  <span class="comment">// Note that sockets should almost always be overlapped. We do provide</span></div><div class
 ="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;  <span class="comment">// a way in stout to create non-overlapped sockets, so for completeness, we</span></div><div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;  <span class="comment">// have an overlapped parameter in the constructor.</span></div><div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;  static_assert(</div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;      std::is_same&lt;SOCKET, unsigned __int64&gt;::value,</div><div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;      <span class="stringliteral">&quot;Expected `SOCKET` to be of type `unsigned __int64`.&quot;</span>);</div><div class="line"><a name="l00085"></a><span class="lineno"><a class="line" href="classos_1_1WindowsFD.html#a33cd936b5641a029b1ea2da80d71c748">   85</a></span>&#160;  <span class="keyword">explicit</span> <a class="code
 " href="classos_1_1WindowsFD.html#a33cd936b5641a029b1ea2da80d71c748">WindowsFD</a>(SOCKET <a class="code" href="namespacerouting.html#aee51d4e36a57bab7d6ada56e15467370">socket</a>, <span class="keywordtype">bool</span> overlapped = <span class="keyword">true</span>)</div><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;    : type_(<a class="code" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5">Type</a>::SOCKET), <a class="code" href="classos_1_1WindowsFD.html#a05016bee9531c79ce4576c9b8d9c9922">socket_</a>(socket), overlapped_(overlapped)</div><div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;  {}</div><div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;</div><div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;  <span class="comment">// On Windows, libevent&#39;s `evutil_socket_t` is set to `intptr_t`.</span></div><div class="line"><a name="l00090"></a><span
  class="lineno"><a class="line" href="classos_1_1WindowsFD.html#a43994eeb484a426990af657f691f66e0">   90</a></span>&#160;  <span class="keyword">explicit</span> <a class="code" href="classos_1_1WindowsFD.html#a43994eeb484a426990af657f691f66e0">WindowsFD</a>(intptr_t <a class="code" href="namespacerouting.html#aee51d4e36a57bab7d6ada56e15467370">socket</a>) : <a class="code" href="classos_1_1WindowsFD.html">WindowsFD</a>(static_cast&lt;SOCKET&gt;(socket))</div><div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;  {}</div><div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;</div><div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;  <span class="comment">// This constructor is provided in so that the canonical integer</span></div><div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;  <span class="comment">// file descriptors representing `stdin` (0), `stdout` (1), and</span></div><div 
 class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;  <span class="comment">// `stderr` (2), and the invalid value of -1 can be used.</span></div><div class="line"><a name="l00096"></a><span class="lineno"><a class="line" href="classos_1_1WindowsFD.html#a278285643f263655c5f64f45451fc6e6">   96</a></span>&#160;  <a class="code" href="classos_1_1WindowsFD.html#a278285643f263655c5f64f45451fc6e6">WindowsFD</a>(<span class="keywordtype">int</span> <a class="code" href="classos_1_1WindowsFD.html#a94b69cae4edb8f3549845fbfa0355b7c">crt</a>) : <a class="code" href="classos_1_1WindowsFD.html">WindowsFD</a>(INVALID_HANDLE_VALUE)</div><div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;  {</div><div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;    <span class="keywordflow">if</span> (crt == -1) {</div><div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;      <span class="comment">// No-op, alrea
 dy `INVALID_HANDLE_VALUE`.</span></div><div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;    } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (crt == 0) {</div><div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;      <a class="code" href="classos_1_1WindowsFD.html#afcf316b6f5178ce1b9002c4202aebcf6">handle_</a> = ::GetStdHandle(STD_INPUT_HANDLE);</div><div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;    } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (crt == 1) {</div><div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;      <a class="code" href="classos_1_1WindowsFD.html#afcf316b6f5178ce1b9002c4202aebcf6">handle_</a> = ::GetStdHandle(STD_OUTPUT_HANDLE);</div><div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;    } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (crt ==
  2) {</div><div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;      <a class="code" href="classos_1_1WindowsFD.html#afcf316b6f5178ce1b9002c4202aebcf6">handle_</a> = ::GetStdHandle(STD_ERROR_HANDLE);</div><div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;    } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;      <span class="comment">// This would be better enforced at compile-time, but not</span></div><div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;      <span class="comment">// currently possible, so this is a sanity check.</span></div><div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;      LOG(FATAL) &lt;&lt; <span class="stringliteral">&quot;Unexpected construction of `WindowsFD`&quot;</span>;</div><div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;    }</div><div cla
 ss="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;  }</div><div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;</div><div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;  <span class="comment">// Default construct with invalid handle semantics.</span></div><div class="line"><a name="l00114"></a><span class="lineno"><a class="line" href="classos_1_1WindowsFD.html#a68733e16ee25fe8602557e6e9f534bc9">  114</a></span>&#160;  <a class="code" href="classos_1_1WindowsFD.html#a68733e16ee25fe8602557e6e9f534bc9">WindowsFD</a>() : <a class="code" href="classos_1_1WindowsFD.html">WindowsFD</a>(INVALID_HANDLE_VALUE) {}</div><div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;</div><div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;  <a class="code" href="classos_1_1WindowsFD.html#a68733e16ee25fe8602557e6e9f534bc9">WindowsFD</a>(<span class="keyword">const</span> <a class="c
 ode" href="classos_1_1WindowsFD.html">WindowsFD</a>&amp;) = <span class="keywordflow">default</span>;</div><div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;  <a class="code" href="classos_1_1WindowsFD.html#a68733e16ee25fe8602557e6e9f534bc9">WindowsFD</a>(<a class="code" href="classos_1_1WindowsFD.html">WindowsFD</a>&amp;&amp;) = <span class="keywordflow">default</span>;</div><div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;</div><div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;  <a class="code" href="classos_1_1WindowsFD.html">WindowsFD</a>&amp; <a class="code" href="classos_1_1WindowsFD.html#ab780d87119c772425aa855260056d1a1">operator=</a>(<span class="keyword">const</span> <a class="code" href="classos_1_1WindowsFD.html">WindowsFD</a>&amp;) = <span class="keywordflow">default</span>;</div><div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;  <a class="code" href="classo
 s_1_1WindowsFD.html">WindowsFD</a>&amp; <a class="code" href="classos_1_1WindowsFD.html#ab780d87119c772425aa855260056d1a1">operator=</a>(<a class="code" href="classos_1_1WindowsFD.html">WindowsFD</a>&amp;&amp;) = <span class="keywordflow">default</span>;</div><div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;</div><div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;  <a class="code" href="classos_1_1WindowsFD.html#ad2ce21d9f77710472e19843e3e86343e">~WindowsFD</a>() = <span class="keywordflow">default</span>;</div><div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;</div><div class="line"><a name="l00124"></a><span class="lineno"><a class="line" href="classos_1_1WindowsFD.html#ab961444eec07c587c9a67122daf4fd33">  124</a></span>&#160;  <span class="keywordtype">bool</span> <a class="code" href="classos_1_1WindowsFD.html#ab961444eec07c587c9a67122daf4fd33">is_valid</a>()<span class="keyword"> const</span></d
 iv><div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;<span class="keyword">  </span>{</div><div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;    <span class="keywordflow">switch</span> (<a class="code" href="classos_1_1WindowsFD.html#a3ce17a730ace5352a1fc6d49f8336d52">type</a>()) {</div><div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;      <span class="keywordflow">case</span> <a class="code" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5ad09c4cb1265f1772bb757a7af277b49f">Type::HANDLE</a>: {</div><div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;        <span class="comment">// Remember that both of these values can represent an invalid</span></div><div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;        <span class="comment">// handle.</span></div><div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#16
 0;        <span class="keywordflow">return</span> <a class="code" href="classos_1_1WindowsFD.html#afcf316b6f5178ce1b9002c4202aebcf6">handle_</a> != <span class="keyword">nullptr</span> &amp;&amp; <a class="code" href="classos_1_1WindowsFD.html#afcf316b6f5178ce1b9002c4202aebcf6">handle_</a> != INVALID_HANDLE_VALUE;</div><div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;      }</div><div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;      <span class="keywordflow">case</span> <a class="code" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5a75fbea08c09e684e6b3f3961761354fa">Type::SOCKET</a>: {</div><div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;        <span class="comment">// Only this value is used for an invalid socket.</span></div><div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="clas
 sos_1_1WindowsFD.html#a05016bee9531c79ce4576c9b8d9c9922">socket_</a> != INVALID_SOCKET;</div><div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;      }</div><div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;      <span class="keywordflow">default</span>: {</div><div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;        <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;      }</div><div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;    }</div><div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;  }</div><div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;</div><div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;  <span class="comment">// NOTE: This allocates a C run-time file descriptor and ass
 ociates</span></div><div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;  <span class="comment">// it with the handle. At this point, the `HANDLE` should no longer</span></div><div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;  <span class="comment">// be closed via `CloseHandle`, but instead close the returned `int`</span></div><div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;  <span class="comment">// with `_close`. This method should almost never be used, and</span></div><div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;  <span class="comment">// exists only for compatibility with 3rdparty dependencies.</span></div><div class="line"><a name="l00147"></a><span class="lineno"><a class="line" href="classos_1_1WindowsFD.html#a94b69cae4edb8f3549845fbfa0355b7c">  147</a></span>&#160;  <span class="keywordtype">int</span> <a class="code" href="classos_1_1WindowsFD.html#a94b69ca
 e4edb8f3549845fbfa0355b7c">crt</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;<span class="keyword">  </span>{</div><div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;    CHECK_EQ(<a class="code" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5ad09c4cb1265f1772bb757a7af277b49f">Type::HANDLE</a>, <a class="code" href="classos_1_1WindowsFD.html#a3ce17a730ace5352a1fc6d49f8336d52">type</a>());</div><div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;    <span class="comment">// TODO(andschwa): Consider if we should overwrite `handle_`.</span></div><div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;    return ::_open_osfhandle(reinterpret_cast&lt;intptr_t&gt;(<a class="code" href="classos_1_1WindowsFD.html#afcf316b6f5178ce1b9002c4202aebcf6">handle_</a>), O_RDWR);</div><div class="line"><a name="l00152"></a><span clas
 s="lineno">  152</span>&#160;  }</div><div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;</div><div class="line"><a name="l00154"></a><span class="lineno"><a class="line" href="classos_1_1WindowsFD.html#a8ba56c5251264ab13aeaaa34cde39bdb">  154</a></span>&#160;  <span class="keyword">operator</span> <a class="code" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5ad09c4cb1265f1772bb757a7af277b49f">HANDLE</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;<span class="keyword">  </span>{</div><div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;    CHECK_EQ(<a class="code" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5ad09c4cb1265f1772bb757a7af277b49f">Type::HANDLE</a>, <a class="code" href="classos_1_1WindowsFD.html#a3ce17a730ace5352a1fc6d49f8336d52">type</a>());</div><div class="line"><a name="l00157"></a><span class="lineno"
 >  157</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classos_1_1WindowsFD.html#afcf316b6f5178ce1b9002c4202aebcf6">handle_</a>;</div><div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;  }</div><div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;</div><div class="line"><a name="l00160"></a><span class="lineno"><a class="line" href="classos_1_1WindowsFD.html#a0826bf646e11186502039fcf869b2afc">  160</a></span>&#160;  <span class="keyword">operator</span> <a class="code" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5a75fbea08c09e684e6b3f3961761354fa">SOCKET</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;<span class="keyword">  </span>{</div><div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;    CHECK_EQ(<a class="code" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5
 a75fbea08c09e684e6b3f3961761354fa">Type::SOCKET</a>, <a class="code" href="classos_1_1WindowsFD.html#a3ce17a730ace5352a1fc6d49f8336d52">type</a>());</div><div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classos_1_1WindowsFD.html#a05016bee9531c79ce4576c9b8d9c9922">socket_</a>;</div><div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;  }</div><div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;</div><div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;  <span class="comment">// On Windows, libevent&#39;s `evutil_socket_t` is set to `intptr_t`.</span></div><div class="line"><a name="l00167"></a><span class="lineno"><a class="line" href="classos_1_1WindowsFD.html#aa58f87561c2785c34ae7f34ce59abfe2">  167</a></span>&#160;  <span class="keyword">operator</span> intptr_t()<span class="keyword"> const</span></div><div clas
 s="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;<span class="keyword">  </span>{</div><div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;    CHECK_EQ(<a class="code" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5a75fbea08c09e684e6b3f3961761354fa">Type::SOCKET</a>, <a class="code" href="classos_1_1WindowsFD.html#a3ce17a730ace5352a1fc6d49f8336d52">type</a>());</div><div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>intptr_t<span class="keyword">&gt;</span>(<a class="code" href="classos_1_1WindowsFD.html#a05016bee9531c79ce4576c9b8d9c9922">socket_</a>);</div><div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;  }</div><div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;</div><div class="line"><a name="l00173"></a><span class="lineno"><a class="line" href="c
 lassos_1_1WindowsFD.html#a3ce17a730ace5352a1fc6d49f8336d52">  173</a></span>&#160;  <a class="code" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5">Type</a> <a class="code" href="classos_1_1WindowsFD.html#a3ce17a730ace5352a1fc6d49f8336d52">type</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> type_; }</div><div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;</div><div class="line"><a name="l00175"></a><span class="lineno"><a class="line" href="classos_1_1WindowsFD.html#a4dce5dbc3d019589b4b61d6d17e1da45">  175</a></span>&#160;  <span class="keywordtype">bool</span> <a class="code" href="classos_1_1WindowsFD.html#a4dce5dbc3d019589b4b61d6d17e1da45">is_overlapped</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> overlapped_; }</div><div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;</div><div class="line"><a name="l00177"></a><span class="lineno">  1
 77</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;  <a class="code" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5">Type</a> type_;</div><div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;</div><div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;  <span class="keyword">union</span></div><div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;  {</div><div class="line"><a name="l00182"></a><span class="lineno"><a class="line" href="classos_1_1WindowsFD.html#afcf316b6f5178ce1b9002c4202aebcf6">  182</a></span>&#160;    <a class="code" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5ad09c4cb1265f1772bb757a7af277b49f">HANDLE</a> <a class="code" href="classos_1_1WindowsFD.html#afcf316b6f5178ce1b9002c4202aebcf6">handle_</a>;</div><div class="line"><a name="l00183"></a><span class="lineno"><a clas
 s="line" href="classos_1_1WindowsFD.html#a05016bee9531c79ce4576c9b8d9c9922">  183</a></span>&#160;    SOCKET <a class="code" href="classos_1_1WindowsFD.html#a05016bee9531c79ce4576c9b8d9c9922">socket_</a>;</div><div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;  };</div><div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;</div><div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;  <span class="keywordtype">bool</span> overlapped_;</div><div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;</div><div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;  <span class="comment">// NOTE: This function is provided only for checking validity, thus</span></div><div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160;  <span class="comment">// it is private. It provides a view of a `WindowsFD` as an `int`.</span></div><div class="line"><a name="l0019
 0"></a><span class="lineno">  190</span>&#160;  <span class="comment">//</span></div><div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160;  <span class="comment">// TODO(andschwa): Fix all uses of this conversion to use `is_valid`</span></div><div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;  <span class="comment">// directly instead, then remove the comparison operators. This</span></div><div class="line"><a name="l00193"></a><span class="lineno">  193</span>&#160;  <span class="comment">// would require writing an `int_fd` class for POSIX too, instead of</span></div><div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#160;  <span class="comment">// just using `int`.</span></div><div class="line"><a name="l00195"></a><span class="lineno">  195</span>&#160;  <span class="keywordtype">int</span> get_valid()<span class="keyword"> const</span></div><div class="line"><a name="l00196"></a><span class="lineno">  19
 6</span>&#160;<span class="keyword">  </span>{</div><div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;    <span class="keywordflow">if</span> (<a class="code" href="classos_1_1WindowsFD.html#ab961444eec07c587c9a67122daf4fd33">is_valid</a>()) {</div><div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160;      <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160;    } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00200"></a><span class="lineno">  200</span>&#160;      <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00201"></a><span class="lineno">  201</span>&#160;    }</div><div class="line"><a name="l00202"></a><span class="lineno">  202</span>&#160;  }</div><div class="line"><a name="l00203"></a><span class="lineno">  203</span>&#160;</div><div class="line"><a name="l00204"></a><span class="lineno">  204<
 /span>&#160;  <span class="comment">// NOTE: These operators are used solely to support checking a</span></div><div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160;  <span class="comment">// `WindowsFD` against e.g. -1 or 0 for validity. Nothing else</span></div><div class="line"><a name="l00206"></a><span class="lineno">  206</span>&#160;  <span class="comment">// should have access to `get_valid()`.</span></div><div class="line"><a name="l00207"></a><span class="lineno">  207</span>&#160;  <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="classos_1_1WindowsFD.html#a64a9d1d43e26808ec565056c183ae56f">operator&lt;</a>(<span class="keywordtype">int</span> left, <span class="keyword">const</span> <a class="code" href="classos_1_1WindowsFD.html">WindowsFD</a>&amp; right);</div><div class="line"><a name="l00208"></a><span class="lineno">  208</span>&#160;  <span class="keyword">friend</span> <span class="keywordtype">
 bool</span> <a class="code" href="classos_1_1WindowsFD.html#a64a9d1d43e26808ec565056c183ae56f">operator&lt;</a>(<span class="keyword">const</span> <a class="code" href="classos_1_1WindowsFD.html">WindowsFD</a>&amp; left, <span class="keywordtype">int</span> right);</div><div class="line"><a name="l00209"></a><span class="lineno">  209</span>&#160;  <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="classos_1_1WindowsFD.html#aabdbd9806af44043dfff1cf9aeeee869">operator&gt;</a>(<span class="keywordtype">int</span> left, <span class="keyword">const</span> <a class="code" href="classos_1_1WindowsFD.html">WindowsFD</a>&amp; right);</div><div class="line"><a name="l00210"></a><span class="lineno">  210</span>&#160;  <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="classos_1_1WindowsFD.html#aabdbd9806af44043dfff1cf9aeeee869">operator&gt;</a>(<span class="keyword">const</span> <a class="code" href="cl
 assos_1_1WindowsFD.html">WindowsFD</a>&amp; left, <span class="keywordtype">int</span> right);</div><div class="line"><a name="l00211"></a><span class="lineno">  211</span>&#160;  <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="classos_1_1WindowsFD.html#afd05a43697b99aa8b7da8d56155b1a49">operator&lt;=</a>(<span class="keywordtype">int</span> left, <span class="keyword">const</span> <a class="code" href="classos_1_1WindowsFD.html">WindowsFD</a>&amp; right);</div><div class="line"><a name="l00212"></a><span class="lineno">  212</span>&#160;  <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="classos_1_1WindowsFD.html#afd05a43697b99aa8b7da8d56155b1a49">operator&lt;=</a>(<span class="keyword">const</span> <a class="code" href="classos_1_1WindowsFD.html">WindowsFD</a>&amp; left, <span class="keywordtype">int</span> right);</div><div class="line"><a name="l00213"></a><span class="lineno">  213</sp
 an>&#160;  <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="classos_1_1WindowsFD.html#a23d70e92fe2ee8da692f4e9b1b9e1e43">operator&gt;=</a>(<span class="keywordtype">int</span> left, <span class="keyword">const</span> <a class="code" href="classos_1_1WindowsFD.html">WindowsFD</a>&amp; right);</div><div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160;  <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="classos_1_1WindowsFD.html#a23d70e92fe2ee8da692f4e9b1b9e1e43">operator&gt;=</a>(<span class="keyword">const</span> <a class="code" href="classos_1_1WindowsFD.html">WindowsFD</a>&amp; left, <span class="keywordtype">int</span> right);</div><div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160;  <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="classos_1_1WindowsFD.html#a833e23bea1f10420bbd7139d1e8539ad">o
 perator==</a>(<span class="keywordtype">int</span> left, <span class="keyword">const</span> <a class="code" href="classos_1_1WindowsFD.html">WindowsFD</a>&amp; right);</div><div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#160;  <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="classos_1_1WindowsFD.html#a833e23bea1f10420bbd7139d1e8539ad">operator==</a>(<span class="keyword">const</span> <a class="code" href="classos_1_1WindowsFD.html">WindowsFD</a>&amp; left, <span class="keywordtype">int</span> right);</div><div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160;  <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="classos_1_1WindowsFD.html#a342803d2a16f81ca20f0e0c1c2e598d0">operator!=</a>(<span class="keywordtype">int</span> left, <span class="keyword">const</span> <a class="code" href="classos_1_1WindowsFD.html">WindowsFD</a>&amp; right);</div><d
 iv class="line"><a name="l00218"></a><span class="lineno">  218</span>&#160;  <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="classos_1_1WindowsFD.html#a342803d2a16f81ca20f0e0c1c2e598d0">operator!=</a>(<span class="keyword">const</span> <a class="code" href="classos_1_1WindowsFD.html">WindowsFD</a>&amp; left, <span class="keywordtype">int</span> right);</div><div class="line"><a name="l00219"></a><span class="lineno">  219</span>&#160;};</div><div class="line"><a name="l00220"></a><span class="lineno">  220</span>&#160;</div><div class="line"><a name="l00221"></a><span class="lineno">  221</span>&#160;</div><div class="line"><a name="l00222"></a><span class="lineno"><a class="line" href="namespaceos.html#abc0226f448b014a39a8113f06482d6c9">  222</a></span>&#160;<span class="keyword">inline</span> std::ostream&amp; <a class="code" href="namespaceos.html#adf8abf607ec106e38317de03bcdda834">operator&lt;&lt;</a>(std::ostream&amp; stream, <sp
 an class="keyword">const</span> <a class="code" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5">WindowsFD::Type</a>&amp; fd)</div><div class="line"><a name="l00223"></a><span class="lineno">  223</span>&#160;{</div><div class="line"><a name="l00224"></a><span class="lineno">  224</span>&#160;  <span class="keywordflow">switch</span> (fd) {</div><div class="line"><a name="l00225"></a><span class="lineno">  225</span>&#160;    <span class="keywordflow">case</span> <a class="code" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5ad09c4cb1265f1772bb757a7af277b49f">WindowsFD::Type::HANDLE</a>: {</div><div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;      stream &lt;&lt; <span class="stringliteral">&quot;WindowsFD::Type::HANDLE&quot;</span>;</div><div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160;      <span class="keywordflow">return</span> stream;</div><div class="line"><a name="l00228"></a><span 
 class="lineno">  228</span>&#160;    }</div><div class="line"><a name="l00229"></a><span class="lineno">  229</span>&#160;    <span class="keywordflow">case</span> <a class="code" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5a75fbea08c09e684e6b3f3961761354fa">WindowsFD::Type::SOCKET</a>: {</div><div class="line"><a name="l00230"></a><span class="lineno">  230</span>&#160;      stream &lt;&lt; <span class="stringliteral">&quot;WindowsFD::Type::SOCKET&quot;</span>;</div><div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160;      <span class="keywordflow">return</span> stream;</div><div class="line"><a name="l00232"></a><span class="lineno">  232</span>&#160;    }</div><div class="line"><a name="l00233"></a><span class="lineno">  233</span>&#160;    <span class="keywordflow">default</span>: {</div><div class="line"><a name="l00234"></a><span class="lineno">  234</span>&#160;      stream &lt;&lt; <span class="stringliteral">&quot;WindowsFD::Ty
 pe::UNKNOWN&quot;</span>;</div><div class="line"><a name="l00235"></a><span class="lineno">  235</span>&#160;      <span class="keywordflow">return</span> stream;</div><div class="line"><a name="l00236"></a><span class="lineno">  236</span>&#160;    }</div><div class="line"><a name="l00237"></a><span class="lineno">  237</span>&#160;  }</div><div class="line"><a name="l00238"></a><span class="lineno">  238</span>&#160;}</div><div class="line"><a name="l00239"></a><span class="lineno">  239</span>&#160;</div><div class="line"><a name="l00240"></a><span class="lineno">  240</span>&#160;</div><div class="line"><a name="l00241"></a><span class="lineno"><a class="line" href="namespaceos.html#ae7cfc38dfd6783b8d347893cb1dd6b8f">  241</a></span>&#160;<span class="keyword">inline</span> std::ostream&amp; <a class="code" href="namespaceos.html#adf8abf607ec106e38317de03bcdda834">operator&lt;&lt;</a>(std::ostream&amp; stream, <span class="keyword">const</span> <a class="code" href="classos_1_1W
 indowsFD.html">WindowsFD</a>&amp; fd)</div><div class="line"><a name="l00242"></a><span class="lineno">  242</span>&#160;{</div><div class="line"><a name="l00243"></a><span class="lineno">  243</span>&#160;  stream &lt;&lt; fd.<a class="code" href="classos_1_1WindowsFD.html#a3ce17a730ace5352a1fc6d49f8336d52">type</a>() &lt;&lt; <span class="stringliteral">&quot;=&quot;</span>;</div><div class="line"><a name="l00244"></a><span class="lineno">  244</span>&#160;  <span class="keywordflow">switch</span> (fd.<a class="code" href="classos_1_1WindowsFD.html#a3ce17a730ace5352a1fc6d49f8336d52">type</a>()) {</div><div class="line"><a name="l00245"></a><span class="lineno">  245</span>&#160;    <span class="keywordflow">case</span> <a class="code" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5ad09c4cb1265f1772bb757a7af277b49f">WindowsFD::Type::HANDLE</a>: {</div><div class="line"><a name="l00246"></a><span class="lineno">  246</span>&#160;      stream &lt;&lt; static_cast&lt
 ;HANDLE&gt;(fd);</div><div class="line"><a name="l00247"></a><span class="lineno">  247</span>&#160;      <span class="keywordflow">return</span> stream;</div><div class="line"><a name="l00248"></a><span class="lineno">  248</span>&#160;    }</div><div class="line"><a name="l00249"></a><span class="lineno">  249</span>&#160;    <span class="keywordflow">case</span> <a class="code" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5a75fbea08c09e684e6b3f3961761354fa">WindowsFD::Type::SOCKET</a>: {</div><div class="line"><a name="l00250"></a><span class="lineno">  250</span>&#160;      stream &lt;&lt; static_cast&lt;SOCKET&gt;(fd);</div><div class="line"><a name="l00251"></a><span class="lineno">  251</span>&#160;      <span class="keywordflow">return</span> stream;</div><div class="line"><a name="l00252"></a><span class="lineno">  252</span>&#160;    }</div><div class="line"><a name="l00253"></a><span class="lineno">  253</span>&#160;    <span class="keywordflow">default
 </span>: {</div><div class="line"><a name="l00254"></a><span class="lineno">  254</span>&#160;      stream &lt;&lt; <span class="stringliteral">&quot;UNKNOWN&quot;</span>;</div><div class="line"><a name="l00255"></a><span class="lineno">  255</span>&#160;      <span class="keywordflow">return</span> stream;</div><div class="line"><a name="l00256"></a><span class="lineno">  256</span>&#160;    }</div><div class="line"><a name="l00257"></a><span class="lineno">  257</span>&#160;  }</div><div class="line"><a name="l00258"></a><span class="lineno">  258</span>&#160;}</div><div class="line"><a name="l00259"></a><span class="lineno">  259</span>&#160;</div><div class="line"><a name="l00260"></a><span class="lineno">  260</span>&#160;</div><div class="line"><a name="l00261"></a><span class="lineno">  261</span>&#160;<span class="comment">// NOTE: The following operators implement all the comparisons</span></div><div class="line"><a name="l00262"></a><span class="lineno">  262</span>&#160;<
 span class="comment">// possible a `WindowsFD` type and an `int`. The point of this is that</span></div><div class="line"><a name="l00263"></a><span class="lineno">  263</span>&#160;<span class="comment">// the `WindowsFD` type must act like an `int` for compatibility</span></div><div class="line"><a name="l00264"></a><span class="lineno">  264</span>&#160;<span class="comment">// reasons (e.g. checking validity through `fd &lt; 0`), without actually</span></div><div class="line"><a name="l00265"></a><span class="lineno">  265</span>&#160;<span class="comment">// being castable to an `int` to avoid ambiguous types.</span></div><div class="line"><a name="l00266"></a><span class="lineno"><a class="line" href="namespaceos.html#a50365c5112577886332b1072de202c5f">  266</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classos_1_1WindowsFD.html#a64a9d1d43e26808ec565056c183ae56f">operator&lt;</a>(<span class="keywordtype">int</s
 pan> left, <span class="keyword">const</span> <a class="code" href="classos_1_1WindowsFD.html">WindowsFD</a>&amp; right)</div><div class="line"><a name="l00267"></a><span class="lineno">  267</span>&#160;{</div><div class="line"><a name="l00268"></a><span class="lineno">  268</span>&#160;  <span class="keywordflow">return</span> left &lt; right.get_valid();</div><div class="line"><a name="l00269"></a><span class="lineno">  269</span>&#160;}</div><div class="line"><a name="l00270"></a><span class="lineno">  270</span>&#160;</div><div class="line"><a name="l00271"></a><span class="lineno">  271</span>&#160;</div><div class="line"><a name="l00272"></a><span class="lineno"><a class="line" href="namespaceos.html#a3d7a472710fa4652c0074074fec9973d">  272</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classos_1_1WindowsFD.html#a64a9d1d43e26808ec565056c183ae56f">operator&lt;</a>(<span class="keyword">const</span> <a class="code
 " href="classos_1_1WindowsFD.html">WindowsFD</a>&amp; left, <span class="keywordtype">int</span> right)</div><div class="line"><a name="l00273"></a><span class="lineno">  273</span>&#160;{</div><div class="line"><a name="l00274"></a><span class="lineno">  274</span>&#160;  <span class="keywordflow">return</span> left.get_valid() &lt; right;</div><div class="line"><a name="l00275"></a><span class="lineno">  275</span>&#160;}</div><div class="line"><a name="l00276"></a><span class="lineno">  276</span>&#160;</div><div class="line"><a name="l00277"></a><span class="lineno">  277</span>&#160;</div><div class="line"><a name="l00278"></a><span class="lineno"><a class="line" href="namespaceos.html#a01c61a529abd402f5c7e1307d24f5378">  278</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classos_1_1WindowsFD.html#aabdbd9806af44043dfff1cf9aeeee869">operator&gt;</a>(<span class="keywordtype">int</span> left, <span class="keyword">c
 onst</span> <a class="code" href="classos_1_1WindowsFD.html">WindowsFD</a>&amp; right)</div><div class="line"><a name="l00279"></a><span class="lineno">  279</span>&#160;{</div><div class="line"><a name="l00280"></a><span class="lineno">  280</span>&#160;  <span class="keywordflow">return</span> left &gt; right.get_valid();</div><div class="line"><a name="l00281"></a><span class="lineno">  281</span>&#160;}</div><div class="line"><a name="l00282"></a><span class="lineno">  282</span>&#160;</div><div class="line"><a name="l00283"></a><span class="lineno">  283</span>&#160;</div><div class="line"><a name="l00284"></a><span class="lineno"><a class="line" href="namespaceos.html#a9b3ec4a9596510ae4f5147b50d50178b">  284</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classos_1_1WindowsFD.html#aabdbd9806af44043dfff1cf9aeeee869">operator&gt;</a>(<span class="keyword">const</span> <a class="code" href="classos_1_1WindowsFD.html"
 >WindowsFD</a>&amp; left, <span class="keywordtype">int</span> right)</div><div class="line"><a name="l00285"></a><span class="lineno">  285</span>&#160;{</div><div class="line"><a name="l00286"></a><span class="lineno">  286</span>&#160;  <span class="keywordflow">return</span> left.get_valid() &gt; right;</div><div class="line"><a name="l00287"></a><span class="lineno">  287</span>&#160;}</div><div class="line"><a name="l00288"></a><span class="lineno">  288</span>&#160;</div><div class="line"><a name="l00289"></a><span class="lineno">  289</span>&#160;</div><div class="line"><a name="l00290"></a><span class="lineno"><a class="line" href="namespaceos.html#ae0567bbfde960caa1f0e7282ebba1129">  290</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classos_1_1WindowsFD.html#afd05a43697b99aa8b7da8d56155b1a49">operator&lt;=</a>(<span class="keywordtype">int</span> left, <span class="keyword">const</span> <a class="code" href=
 "classos_1_1WindowsFD.html">WindowsFD</a>&amp; right)</div><div class="line"><a name="l00291"></a><span class="lineno">  291</span>&#160;{</div><div class="line"><a name="l00292"></a><span class="lineno">  292</span>&#160;  <span class="keywordflow">return</span> left &lt;= right.get_valid();</div><div class="line"><a name="l00293"></a><span class="lineno">  293</span>&#160;}</div><div class="line"><a name="l00294"></a><span class="lineno">  294</span>&#160;</div><div class="line"><a name="l00295"></a><span class="lineno">  295</span>&#160;</div><div class="line"><a name="l00296"></a><span class="lineno"><a class="line" href="namespaceos.html#a4a0677e666a295e048cf4c65100a9e19">  296</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classos_1_1WindowsFD.html#afd05a43697b99aa8b7da8d56155b1a49">operator&lt;=</a>(<span class="keyword">const</span> <a class="code" href="classos_1_1WindowsFD.html">WindowsFD</a>&amp; left, <span
  class="keywordtype">int</span> right)</div><div class="line"><a name="l00297"></a><span class="lineno">  297</span>&#160;{</div><div class="line"><a name="l00298"></a><span class="lineno">  298</span>&#160;  <span class="keywordflow">return</span> left.get_valid() &lt;= right;</div><div class="line"><a name="l00299"></a><span class="lineno">  299</span>&#160;}</div><div class="line"><a name="l00300"></a><span class="lineno">  300</span>&#160;</div><div class="line"><a name="l00301"></a><span class="lineno">  301</span>&#160;</div><div class="line"><a name="l00302"></a><span class="lineno"><a class="line" href="namespaceos.html#aff40faf624abae939675cdfff558570b">  302</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classos_1_1WindowsFD.html#a23d70e92fe2ee8da692f4e9b1b9e1e43">operator&gt;=</a>(<span class="keywordtype">int</span> left, <span class="keyword">const</span> <a class="code" href="classos_1_1WindowsFD.html">Wi
 ndowsFD</a>&amp; right)</div><div class="line"><a name="l00303"></a><span class="lineno">  303</span>&#160;{</div><div class="line"><a name="l00304"></a><span class="lineno">  304</span>&#160;  <span class="keywordflow">return</span> left &gt;= right.get_valid();</div><div class="line"><a name="l00305"></a><span class="lineno">  305</span>&#160;}</div><div class="line"><a name="l00306"></a><span class="lineno">  306</span>&#160;</div><div class="line"><a name="l00307"></a><span class="lineno">  307</span>&#160;</div><div class="line"><a name="l00308"></a><span class="lineno"><a class="line" href="namespaceos.html#a7212150e865b156fdae90c1052407042">  308</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classos_1_1WindowsFD.html#a23d70e92fe2ee8da692f4e9b1b9e1e43">operator&gt;=</a>(<span class="keyword">const</span> <a class="code" href="classos_1_1WindowsFD.html">WindowsFD</a>&amp; left, <span class="keywordtype">int</span
 > right)</div><div class="line"><a name="l00309"></a><span class="lineno">  309</span>&#160;{</div><div class="line"><a name="l00310"></a><span class="lineno">  310</span>&#160;  <span class="keywordflow">return</span> left.get_valid() &gt;= right;</div><div class="line"><a name="l00311"></a><span class="lineno">  311</span>&#160;}</div><div class="line"><a name="l00312"></a><span class="lineno">  312</span>&#160;</div><div class="line"><a name="l00313"></a><span class="lineno">  313</span>&#160;</div><div class="line"><a name="l00314"></a><span class="lineno"><a class="line" href="namespaceos.html#a964a363626326ed56a030b26813124a7">  314</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classos_1_1WindowsFD.html#a833e23bea1f10420bbd7139d1e8539ad">operator==</a>(<span class="keywordtype">int</span> left, <span class="keyword">const</span> <a class="code" href="classos_1_1WindowsFD.html">WindowsFD</a>&amp; right)</div><div
  class="line"><a name="l00315"></a><span class="lineno">  315</span>&#160;{</div><div class="line"><a name="l00316"></a><span class="lineno">  316</span>&#160;  <span class="keywordflow">return</span> left == right.get_valid();</div><div class="line"><a name="l00317"></a><span class="lineno">  317</span>&#160;}</div><div class="line"><a name="l00318"></a><span class="lineno">  318</span>&#160;</div><div class="line"><a name="l00319"></a><span class="lineno">  319</span>&#160;</div><div class="line"><a name="l00320"></a><span class="lineno"><a class="line" href="namespaceos.html#a5c6de77e356412060c38c5e41cdd5ba1">  320</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classos_1_1WindowsFD.html#a833e23bea1f10420bbd7139d1e8539ad">operator==</a>(<span class="keyword">const</span> <a class="code" href="classos_1_1WindowsFD.html">WindowsFD</a>&amp; left, <span class="keywordtype">int</span> right)</div><div class="line"><a name
 ="l00321"></a><span class="lineno">  321</span>&#160;{</div><div class="line"><a name="l00322"></a><span class="lineno">  322</span>&#160;  <span class="keywordflow">return</span> left.get_valid() == right;</div><div class="line"><a name="l00323"></a><span class="lineno">  323</span>&#160;}</div><div class="line"><a name="l00324"></a><span class="lineno">  324</span>&#160;</div><div class="line"><a name="l00325"></a><span class="lineno">  325</span>&#160;</div><div class="line"><a name="l00326"></a><span class="lineno"><a class="line" href="namespaceos.html#ab3f13e530d689c5eb2d15b921a55c2df">  326</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classos_1_1WindowsFD.html#a342803d2a16f81ca20f0e0c1c2e598d0">operator!=</a>(<span class="keywordtype">int</span> left, <span class="keyword">const</span> <a class="code" href="classos_1_1WindowsFD.html">WindowsFD</a>&amp; right)</div><div class="line"><a name="l00327"></a><span c
 lass="lineno">  327</span>&#160;{</div><div class="line"><a name="l00328"></a><span class="lineno">  328</span>&#160;  <span class="keywordflow">return</span> left != right.get_valid();</div><div class="line"><a name="l00329"></a><span class="lineno">  329</span>&#160;}</div><div class="line"><a name="l00330"></a><span class="lineno">  330</span>&#160;</div><div class="line"><a name="l00331"></a><span class="lineno">  331</span>&#160;</div><div class="line"><a name="l00332"></a><span class="lineno"><a class="line" href="namespaceos.html#adfa6e9183e6bc24e95a45fa3f095ea37">  332</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classos_1_1WindowsFD.html#a342803d2a16f81ca20f0e0c1c2e598d0">operator!=</a>(<span class="keyword">const</span> <a class="code" href="classos_1_1WindowsFD.html">WindowsFD</a>&amp; left, <span class="keywordtype">int</span> right)</div><div class="line"><a name="l00333"></a><span class="lineno">  333</
 span>&#160;{</div><div class="line"><a name="l00334"></a><span class="lineno">  334</span>&#160;  <span class="keywordflow">return</span> left.get_valid() != right;</div><div class="line"><a name="l00335"></a><span class="lineno">  335</span>&#160;}</div><div class="line"><a name="l00336"></a><span class="lineno">  336</span>&#160;</div><div class="line"><a name="l00337"></a><span class="lineno">  337</span>&#160;</div><div class="line"><a name="l00338"></a><span class="lineno">  338</span>&#160;<span class="comment">// NOTE: This operator exists so that `WindowsFD` can be used in an</span></div><div class="line"><a name="l00339"></a><span class="lineno">  339</span>&#160;<span class="comment">// `unordered_map` (and other STL containers requiring equality).</span></div><div class="line"><a name="l00340"></a><span class="lineno"><a class="line" href="namespaceos.html#a233ee9ab58e9c214bb9dada3b4cde87a">  340</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype
 ">bool</span> <a class="code" href="classos_1_1WindowsFD.html#a833e23bea1f10420bbd7139d1e8539ad">operator==</a>(<span class="keyword">const</span> <a class="code" href="classos_1_1WindowsFD.html">WindowsFD</a>&amp; left, <span class="keyword">const</span> <a class="code" href="classos_1_1WindowsFD.html">WindowsFD</a>&amp; right)</div><div class="line"><a name="l00341"></a><span class="lineno">  341</span>&#160;{</div><div class="line"><a name="l00342"></a><span class="lineno">  342</span>&#160;  <span class="comment">// This is `true` even if the types mismatch because we want</span></div><div class="line"><a name="l00343"></a><span class="lineno">  343</span>&#160;  <span class="comment">// `WindowsFD(-1)` to compare as equivalent to an invalid `HANDLE`</span></div><div class="line"><a name="l00344"></a><span class="lineno">  344</span>&#160;  <span class="comment">// or `SOCKET`, even though it is technically of type `HANDLE`.</span></div><div class="line"><a name="l00345"></a><sp
 an class="lineno">  345</span>&#160;  <span class="keywordflow">if</span> (!left.<a class="code" href="classos_1_1WindowsFD.html#ab961444eec07c587c9a67122daf4fd33">is_valid</a>() &amp;&amp; !right.<a class="code" href="classos_1_1WindowsFD.html#ab961444eec07c587c9a67122daf4fd33">is_valid</a>()) {</div><div class="line"><a name="l00346"></a><span class="lineno">  346</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00347"></a><span class="lineno">  347</span>&#160;  }</div><div class="line"><a name="l00348"></a><span class="lineno">  348</span>&#160;</div><div class="line"><a name="l00349"></a><span class="lineno">  349</span>&#160;  <span class="comment">// Otherwise mismatched types are not equivalent.</span></div><div class="line"><a name="l00350"></a><span class="lineno">  350</span>&#160;  <span class="keywordflow">if</span> (left.<a class="code" href="classos_1_1WindowsFD.html#a3ce17a730ace5352a1fc6d49f8
 336d52">type</a>() != right.<a class="code" href="classos_1_1WindowsFD.html#a3ce17a730ace5352a1fc6d49f8336d52">type</a>()) {</div><div class="line"><a name="l00351"></a><span class="lineno">  351</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00352"></a><span class="lineno">  352</span>&#160;  }</div><div class="line"><a name="l00353"></a><span class="lineno">  353</span>&#160;</div><div class="line"><a name="l00354"></a><span class="lineno">  354</span>&#160;  <span class="keywordflow">switch</span> (left.<a class="code" href="classos_1_1WindowsFD.html#a3ce17a730ace5352a1fc6d49f8336d52">type</a>()) {</div><div class="line"><a name="l00355"></a><span class="lineno">  355</span>&#160;    <span class="keywordflow">case</span> <a class="code" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5ad09c4cb1265f1772bb757a7af277b49f">WindowsFD::Type::HANDLE</a>: {</div><div class="line"><a name="l00356
 "></a><span class="lineno">  356</span>&#160;      <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><a class="code" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5ad09c4cb1265f1772bb757a7af277b49f">HANDLE</a><span class="keyword">&gt;</span>(left) == static_cast&lt;HANDLE&gt;(right);</div><div class="line"><a name="l00357"></a><span class="lineno">  357</span>&#160;    }</div><div class="line"><a name="l00358"></a><span class="lineno">  358</span>&#160;    <span class="keywordflow">case</span> <a class="code" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5a75fbea08c09e684e6b3f3961761354fa">WindowsFD::Type::SOCKET</a>: {</div><div class="line"><a name="l00359"></a><span class="lineno">  359</span>&#160;      <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><a class="code" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5a75fbea08c09e684e6b3f3961761354fa">SOCKET</a
 ><span class="keyword">&gt;</span>(left) == static_cast&lt;SOCKET&gt;(right);</div><div class="line"><a name="l00360"></a><span class="lineno">  360</span>&#160;    }</div><div class="line"><a name="l00361"></a><span class="lineno">  361</span>&#160;  }</div><div class="line"><a name="l00362"></a><span class="lineno">  362</span>&#160;</div><div class="line"><a name="l00363"></a><span class="lineno">  363</span>&#160;  <a class="code" href="unreachable_8hpp.html#a0bc63b24b654ca433be7b97a3edde132">UNREACHABLE</a>();</div><div class="line"><a name="l00364"></a><span class="lineno">  364</span>&#160;}</div><div class="line"><a name="l00365"></a><span class="lineno">  365</span>&#160;</div><div class="line"><a name="l00366"></a><span class="lineno">  366</span>&#160;} <span class="comment">// namespace os {</span></div><div class="line"><a name="l00367"></a><span class="lineno">  367</span>&#160;</div><div class="line"><a name="l00368"></a><span class="lineno">  368</span>&#160;<span cl
 ass="keyword">namespace </span><a class="code" href="namespacestd.html">std</a> {</div><div class="line"><a name="l00369"></a><span class="lineno">  369</span>&#160;</div><div class="line"><a name="l00370"></a><span class="lineno">  370</span>&#160;<span class="comment">// NOTE: This specialization exists so that `WindowsFD` can be used in</span></div><div class="line"><a name="l00371"></a><span class="lineno">  371</span>&#160;<span class="comment">// an `unordered_map` (and other STL containers requiring a hash).</span></div><div class="line"><a name="l00372"></a><span class="lineno">  372</span>&#160;<span class="keyword">template</span> &lt;&gt;</div><div class="line"><a name="l00373"></a><span class="lineno"><a class="line" href="structstd_1_1hash_3_01os_1_1WindowsFD_01_4.html">  373</a></span>&#160;<span class="keyword">struct </span>hash&lt;<a class="code" href="namespaceos.html">os</a>::<a class="code" href="classos_1_1WindowsFD.html#a68733e16ee25fe8602557e6e9f534bc9">Window
 sFD</a>&gt;</div><div class="line"><a name="l00374"></a><span class="lineno">  374</span>&#160;{</div><div class="line"><a name="l00375"></a><span class="lineno"><a class="line" href="structstd_1_1hash_3_01os_1_1WindowsFD_01_4.html#a2a5618e5e307b2d36c98f14d1600636c">  375</a></span>&#160;  <span class="keyword">using</span> <a class="code" href="classos_1_1WindowsFD.html">argument_type</a> = <a class="code" href="classos_1_1WindowsFD.html">os::WindowsFD</a>;</div><div class="line"><a name="l00376"></a><span class="lineno"><a class="line" href="structstd_1_1hash_3_01os_1_1WindowsFD_01_4.html#a784a468593b723beb6be44656cc9f67a">  376</a></span>&#160;  <span class="keyword">using</span> <a class="code" href="structstd_1_1hash_3_01os_1_1WindowsFD_01_4.html#a784a468593b723beb6be44656cc9f67a">result_type</a> = size_t;</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"><a class="line" href="str
 uctstd_1_1hash_3_01os_1_1WindowsFD_01_4.html#ace282835b0ca66ecf2753a5671449f4e">  378</a></span>&#160;  <a class="code" href="structstd_1_1hash_3_01os_1_1WindowsFD_01_4.html#a784a468593b723beb6be44656cc9f67a">result_type</a> <a class="code" href="structstd_1_1hash_3_01os_1_1WindowsFD_01_4.html#ace282835b0ca66ecf2753a5671449f4e">operator()</a>(<span class="keyword">const</span> <a class="code" href="classos_1_1WindowsFD.html">argument_type</a>&amp; fd) <span class="keyword">const</span> noexcept</div><div class="line"><a name="l00379"></a><span class="lineno">  379</span>&#160;  {</div><div class="line"><a name="l00380"></a><span class="lineno">  380</span>&#160;    <span class="keywordflow">switch</span> (fd.type()) {</div><div class="line"><a name="l00381"></a><span class="lineno">  381</span>&#160;      <span class="keywordflow">case</span> <a class="code" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5ad09c4cb1265f1772bb757a7af277b49f">os::WindowsFD::Type::HANDL
 E</a>: {</div><div class="line"><a name="l00382"></a><span class="lineno">  382</span>&#160;        <span class="keywordflow">return</span> std::hash&lt;HANDLE&gt;{}(<span class="keyword">static_cast&lt;</span><a class="code" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5ad09c4cb1265f1772bb757a7af277b49f">HANDLE</a><span class="keyword">&gt;</span>(fd));</div><div class="line"><a name="l00383"></a><span class="lineno">  383</span>&#160;      }</div><div class="line"><a name="l00384"></a><span class="lineno">  384</span>&#160;      <span class="keywordflow">case</span> <a class="code" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5a75fbea08c09e684e6b3f3961761354fa">os::WindowsFD::Type::SOCKET</a>: {</div><div class="line"><a name="l00385"></a><span class="lineno">  385</span>&#160;        <span class="keywordflow">return</span> std::hash&lt;SOCKET&gt;{}(<span class="keyword">static_cast&lt;</span><a class="code" href="classos_1_1WindowsFD.html#ac0
 377db41e1c167339c97dbd69c79ae5a75fbea08c09e684e6b3f3961761354fa">SOCKET</a><span class="keyword">&gt;</span>(fd));</div><div class="line"><a name="l00386"></a><span class="lineno">  386</span>&#160;      }</div><div class="line"><a name="l00387"></a><span class="lineno">  387</span>&#160;    }</div><div class="line"><a name="l00388"></a><span class="lineno">  388</span>&#160;</div><div class="line"><a name="l00389"></a><span class="lineno">  389</span>&#160;    <a class="code" href="unreachable_8hpp.html#a0bc63b24b654ca433be7b97a3edde132">UNREACHABLE</a>();</div><div class="line"><a name="l00390"></a><span class="lineno">  390</span>&#160;  }</div><div class="line"><a name="l00391"></a><span class="lineno">  391</span>&#160;};</div><div class="line"><a name="l00392"></a><span class="lineno">  392</span>&#160;</div><div class="line"><a name="l00393"></a><span class="lineno">  393</span>&#160;} <span class="comment">// namespace std {</span></div><div class="line"><a name="l00394"></a
 ><span class="lineno">  394</span>&#160;</div><div class="line"><a name="l00395"></a><span class="lineno">  395</span>&#160;<span class="preprocessor">#endif // __STOUT_OS_WINDOWS_FD_HPP__</span></div><div class="ttc" id="classos_1_1WindowsFD_html_ab961444eec07c587c9a67122daf4fd33"><div class="ttname"><a href="classos_1_1WindowsFD.html#ab961444eec07c587c9a67122daf4fd33">os::WindowsFD::is_valid</a></div><div class="ttdeci">bool is_valid() const </div><div class="ttdef"><b>Definition:</b> fd.hpp:124</div></div>
-<div class="ttc" id="classos_1_1WindowsFD_html_a33cd936b5641a029b1ea2da80d71c748"><div class="ttname"><a href="classos_1_1WindowsFD.html#a33cd936b5641a029b1ea2da80d71c748">os::WindowsFD::WindowsFD</a></div><div class="ttdeci">WindowsFD(SOCKET socket, bool overlapped=true)</div><div class="ttdef"><b>Definition:</b> fd.hpp:85</div></div>
-<div class="ttc" id="classos_1_1WindowsFD_html_a3ce17a730ace5352a1fc6d49f8336d52"><div class="ttname"><a href="classos_1_1WindowsFD.html#a3ce17a730ace5352a1fc6d49f8336d52">os::WindowsFD::type</a></div><div class="ttdeci">Type type() const </div><div class="ttdef"><b>Definition:</b> fd.hpp:173</div></div>
-<div class="ttc" id="classos_1_1WindowsFD_html_a05016bee9531c79ce4576c9b8d9c9922"><div class="ttname"><a href="classos_1_1WindowsFD.html#a05016bee9531c79ce4576c9b8d9c9922">os::WindowsFD::socket_</a></div><div class="ttdeci">SOCKET socket_</div><div class="ttdef"><b>Definition:</b> fd.hpp:183</div></div>
-<div class="ttc" id="classos_1_1WindowsFD_html_a421497a56ee02f01dd4f0773d07eaa76"><div class="ttname"><a href="classos_1_1WindowsFD.html#a421497a56ee02f01dd4f0773d07eaa76">os::WindowsFD::WindowsFD</a></div><div class="ttdeci">WindowsFD(HANDLE handle, bool overlapped=false)</div><div class="ttdef"><b>Definition:</b> fd.hpp:71</div></div>
-<div class="ttc" id="classos_1_1WindowsFD_html"><div class="ttname"><a href="classos_1_1WindowsFD.html">os::WindowsFD</a></div><div class="ttdef"><b>Definition:</b> fd.hpp:50</div></div>
+<a href="fd_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>&#160;<span class="comment">// Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<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>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<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></di
 v><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<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>&#160;<span class="comment">// distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<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>&#160;<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>&#160;<span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;</div><div class="line"><a
  name="l00013"></a><span class="lineno">   13</span>&#160;<span class="preprocessor">#ifndef __STOUT_OS_WINDOWS_FD_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="preprocessor">#define __STOUT_OS_WINDOWS_FD_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;</div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="preprocessor">#include &lt;fcntl.h&gt;</span> <span class="comment">// For `O_RDWR`.</span></div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="preprocessor">#include &lt;io.h&gt;</span> <span class="comment">// For `_open_osfhandle`.</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;</div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;<span class="preprocessor">#include &lt;array&gt;</span></div><div class="line"><a 
 name="l00020"></a><span class="lineno">   20</span>&#160;<span class="preprocessor">#include &lt;atomic&gt;</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="preprocessor">#include &lt;memory&gt;</span></div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="preprocessor">#include &lt;ostream&gt;</span></div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="preprocessor">#include &lt;type_traits&gt;</span></div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;</div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="stout_2include_2stout_2check_8hpp.html">stout/check.hpp</a>&gt;</span></div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="nothing_
 8hpp.html">stout/nothing.hpp</a>&gt;</span></div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="synchronized_8hpp.html">stout/synchronized.hpp</a>&gt;</span></div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="try_8hpp.html">stout/try.hpp</a>&gt;</span></div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="unreachable_8hpp.html">stout/unreachable.hpp</a>&gt;</span></div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html">stout/windows.hpp</a>&gt;</span> <span class="comment">// For `WinSock2.h`.</span></div><div class="line"><a name="l00031"></a><span class="lineno">   31</
 span>&#160;</div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;<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>&#160;</div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;<span class="comment">// The `WindowsFD` class exists to provide an common interface with the POSIX</span></div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;<span class="comment">// file descriptor. While the bare `int` representation of the POSIX file</span></div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;<span class="comment">// descriptor API is undesirable, we rendezvous there in order to maintain the</span></div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;<span class="comment">// existing code in Mesos.</span></div><div class="line"><
 a name="l00038"></a><span class="lineno">   38</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;<span class="comment">// In the platform-agnostic code paths, the `int_fd` type is aliased to</span></div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;<span class="comment">// `WindowsFD`. The `os::*` functions return a type appropriate to the platform,</span></div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;<span class="comment">// which allows us to write code like this:</span></div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;<span class="comment">//   Try&lt;int_fd&gt; fd = os::open(...);</span></div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;<span class="comment
 ">//</span></div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;<span class="comment">// The `WindowsFD` constructs off one of:</span></div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;<span class="comment">//   (1) `HANDLE` - from the Win32 API</span></div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;<span class="comment">//   (2) `SOCKET` - from the WinSock API</span></div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;<span class="comment">// The `os::*` functions then take an instance of `WindowsFD`, examines</span></div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;<span class="comment">// the state and dispatches to the appropriate API.</span></div><div class="line"><a name="l00051"></a><span class="lineno"
 >   51</span>&#160;</div><div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="classos_1_1WindowsFD.html">   52</a></span>&#160;<span class="keyword">class </span><a class="code" href="classos_1_1WindowsFD.html">WindowsFD</a></div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;{</div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5">   55</a></span>&#160;  <span class="keyword">enum class</span> <a class="code" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5">Type</a></div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;  {</div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;    <a class="code" href="classos_1_1WindowsFD.html#ac0377db41e1
 c167339c97dbd69c79ae5ad09c4cb1265f1772bb757a7af277b49f">HANDLE</a>,</div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;    <a class="code" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5a75fbea08c09e684e6b3f3961761354fa">SOCKET</a></div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;  };</div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;</div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;  <span class="comment">// The `HANDLE` here is expected to be file handles. Specifically,</span></div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;  <span class="comment">// `HANDLE`s returned by file API such as `CreateFile`. There are</span></div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;  <span class="comment">// APIs that return `HANDLE`s with different error values, and</span></div>
 <div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;  <span class="comment">// therefore must be handled accordingly. For example, a thread API</span></div><div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;  <span class="comment">// such as `CreateThread` returns `NULL` as the error value, rather</span></div><div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;  <span class="comment">// than `INVALID_HANDLE_VALUE`.</span></div><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;  <span class="comment">//</span></div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;  <span class="comment">// TODO(mpark): Consider adding a second parameter which tells us</span></div><div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;  <span class="comment">//              what the error values are.</span></div><div class="line"><a name="l00070
 "></a><span class="lineno">   70</span>&#160;  static_assert(</div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;      std::is_same&lt;HANDLE, void*&gt;::value,</div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;      <span class="stringliteral">&quot;Expected `HANDLE` to be of type `void*`.&quot;</span>);</div><div class="line"><a name="l00073"></a><span class="lineno"><a class="line" href="classos_1_1WindowsFD.html#a421497a56ee02f01dd4f0773d07eaa76">   73</a></span>&#160;  <span class="keyword">explicit</span> <a class="code" href="classos_1_1WindowsFD.html#a421497a56ee02f01dd4f0773d07eaa76">WindowsFD</a>(<a class="code" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5ad09c4cb1265f1772bb757a7af277b49f">HANDLE</a> handle, <span class="keywordtype">bool</span> overlapped = <span class="keyword">false</span>)</div><div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;    : type_(<
 a class="code" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5">Type</a>::<a class="code" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5ad09c4cb1265f1772bb757a7af277b49f">HANDLE</a>),</div><div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;      <a class="code" href="classos_1_1WindowsFD.html#afcf316b6f5178ce1b9002c4202aebcf6">handle_</a>(handle),</div><div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;      overlapped_(overlapped),</div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;      iocp_(<a class="code" href="namespacestd.html">std</a>::make_shared&lt;IOCPData&gt;())</div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;  {}</div><div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;</div><div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;  <span class="comment">// The `SOCKET
 ` here is expected to be Windows sockets, such as that</span></div><div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;  <span class="comment">// used by the Windows Sockets 2 library. The only expected error</span></div><div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;  <span class="comment">// value is `INVALID_SOCKET`.</span></div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;  <span class="comment">//</span></div><div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;  <span class="comment">// Note that sockets should almost always be overlapped. We do provide</span></div><div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;  <span class="comment">// a way in stout to create non-overlapped sockets, so for completeness, we</span></div><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;  <span class="comment">// have an o
 verlapped parameter in the constructor.</span></div><div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;  static_assert(</div><div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;      std::is_same&lt;SOCKET, unsigned __int64&gt;::value,</div><div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;      <span class="stringliteral">&quot;Expected `SOCKET` to be of type `unsigned __int64`.&quot;</span>);</div><div class="line"><a name="l00090"></a><span class="lineno"><a class="line" href="classos_1_1WindowsFD.html#a33cd936b5641a029b1ea2da80d71c748">   90</a></span>&#160;  <span class="keyword">explicit</span> <a class="code" href="classos_1_1WindowsFD.html#a33cd936b5641a029b1ea2da80d71c748">WindowsFD</a>(SOCKET <a class="code" href="namespacerouting.html#aee51d4e36a57bab7d6ada56e15467370">socket</a>, <span class="keywordtype">bool</span> overlapped = <span class="keyword">true</span>)</div><div class="line"><a n
 ame="l00091"></a><span class="lineno">   91</span>&#160;    : type_(<a class="code" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5">Type</a>::SOCKET),</div><div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;      <a class="code" href="classos_1_1WindowsFD.html#a05016bee9531c79ce4576c9b8d9c9922">socket_</a>(socket),</div><div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;      overlapped_(overlapped),</div><div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;      iocp_(<a class="code" href="namespacestd.html">std</a>::make_shared&lt;IOCPData&gt;())</div><div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;  {}</div><div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;</div><div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;  <span class="comment">// On Windows, libevent&#39;s `evutil_socket_t` is set to `intptr
 _t`.</span></div><div class="line"><a name="l00098"></a><span class="lineno"><a class="line" href="classos_1_1WindowsFD.html#a43994eeb484a426990af657f691f66e0">   98</a></span>&#160;  <span class="keyword">explicit</span> <a class="code" h

<TRUNCATED>

[29/50] mesos-site git commit: Updated the website built from mesos SHA: 7c9c72d.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/index.hhk
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/index.hhk b/content/api/latest/c++/index.hhk
index 0665be3..b21e2dc 100644
--- a/content/api/latest/c++/index.hhk
+++ b/content/api/latest/c++/index.hhk
@@ -35,12 +35,14 @@
   <LI><OBJECT type="text/sitemap"><param name="Local" value="3rdparty_2libprocess_2include_2process_2io_8hpp.html"><param name="Name" value="3rdparty/libprocess/include/process/io.hpp"></OBJECT>
   <UL>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="3rdparty_2libprocess_2include_2process_2io_8hpp.html#a34d62916736c1dfebd1585cf51f19d0c"><param name="Name" value="BUFFERED_READ_SIZE"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="3rdparty_2libprocess_2include_2process_2io_8hpp.html#ada6541d78cad2ecc225be8a26662c748"><param name="Name" value="is_async"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="3rdparty_2libprocess_2include_2process_2io_8hpp.html#af71c45e0a85e21f6b39060f4e716cebf"><param name="Name" value="poll"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="3rdparty_2libprocess_2include_2process_2io_8hpp.html#a9db94d84fb44b21fb669ade7c6a82114"><param name="Name" value="prepare_async"></OBJECT>
     <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>
@@ -382,6 +384,7 @@
   <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess_1_1network.html#aa05dd9eea0c1e4d3d49e2fc049c1a446"><param name="Name" value="accept"></OBJECT>
   <UL>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess_1_1network.html#aa05dd9eea0c1e4d3d49e2fc049c1a446"><param name="Name" value="3rdparty/libprocess/include/process/network.hpp"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess_1_1windows.html#a1f34e4ee3092afe93c37c170430c03f5"><param name="Name" value="libwinio.hpp"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classmesos_1_1IDAcceptor.html#a758835e0c0b24fac0cd9c6f40ef42ba4"><param name="Name" value="mesos::IDAcceptor"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="structmesos_1_1internal_1_1RequestMediaTypes.html#abfa2dddc4420615fa93f72ffa6bc44e6"><param name="Name" value="mesos::internal::RequestMediaTypes"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacenet.html#ae830b749f06b2b6d2ed9c42ecb1763d7"><param name="Name" value="net"></OBJECT>
@@ -390,6 +393,7 @@
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1network_1_1internal_1_1PollSocketImpl.html#a26188c98728621ed4bdabc7087c46064"><param name="Name" value="process::network::internal::PollSocketImpl"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1network_1_1internal_1_1Socket.html#a710758874ebc05acdc9bee369254aa13"><param name="Name" value="process::network::internal::Socket"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a736f79aaed2572670aab9eda08cc4efa"><param name="Name" value="process::network::internal::SocketImpl"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess_1_1windows.html#a1f34e4ee3092afe93c37c170430c03f5"><param name="Name" value="process::windows"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacenet.html#ae830b749f06b2b6d2ed9c42ecb1763d7"><param name="Name" value="stout/include/stout/os/windows/socket.hpp"></OBJECT>
   </UL>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="structprocess_1_1http_1_1Accepted.html#a44ee87e5b1bda7e30f5afbd709a0c25f"><param name="Name" value="Accepted"></OBJECT>
@@ -979,6 +983,7 @@
     <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacecgroups.html#a60fe712940bfb345dc346c1dbc622cf5"><param name="Name" value="cgroups"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacecgroups.html#a60fe712940bfb345dc346c1dbc622cf5"><param name="Name" value="linux/cgroups.hpp"></OBJECT>
   </UL>
+  <LI><OBJECT type="text/sitemap"><param name="Local" value="classos_1_1WindowsFD.html#a1a9c96c20213e1b94ba8dcc1bb059163"><param name="Name" value="assign_iocp"></OBJECT>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceos.html#a706dc9d1287978f358a9a23b77037fb0"><param name="Name" value="assign_job"></OBJECT>
   <UL>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceos.html#a706dc9d1287978f358a9a23b77037fb0"><param name="Name" value="os"></OBJECT>
@@ -1515,10 +1520,10 @@
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classBytes.html#a1a2e9277ebe7d227a21f111898c49a8c"><param name="Name" value="bytes"></OBJECT>
   </UL>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classBytes.html#a1a2e9277ebe7d227a21f111898c49a8c"><param name="Name" value="bytes"></OBJECT>
-  <LI><OBJECT type="text/sitemap"><param name="Local" value="classBytes.html"><param name="Name" value="Bytes"></OBJECT>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classBytes.html#a2ad35f92122a5afcb731d6568879482f"><param name="Name" value="BYTES"></OBJECT>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classBytes.html"><param name="Name" value="Bytes"></OBJECT>
   <UL>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="classBytes.html#a2ad35f92122a5afcb731d6568879482f"><param name="Name" value="BYTES"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classBytes.html#af715f3fd536e251db7e71e9d94fbcf9a"><param name="Name" value="GIGABYTES"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classBytes.html#a66a1678fb3e923ee9cb48025d4c3c871"><param name="Name" value="KILOBYTES"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classBytes.html#aea64a730637e49bd81fbbb10d146e8f1"><param name="Name" value="MEGABYTES"></OBJECT>
@@ -1951,7 +1956,7 @@
   <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess_1_1internal.html#a902e2646d88c41ce674a3009cafe0aad"><param name="Name" value="childMain"></OBJECT>
   <UL>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess_1_1internal.html#a902e2646d88c41ce674a3009cafe0aad"><param name="Name" value="process::internal"></OBJECT>
-    <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess_1_1internal.html#a902e2646d88c41ce674a3009cafe0aad"><param name="Name" value="subprocess_posix.hpp"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess_1_1internal.html#a902e2646d88c41ce674a3009cafe0aad"><param name="Name" value="src/posix/subprocess.hpp"></OBJECT>
   </UL>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="structmesos_1_1internal_1_1master_1_1allocator_1_1DRFSorter_1_1Node.html#a4a4cee57ee80c001f04eee39b11d75ea"><param name="Name" value="children"></OBJECT>
   <UL>
@@ -2084,7 +2089,7 @@
     <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceos.html#a7d71bda07a41304403b0e13aa47f0764"><param name="Name" value="os"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceos.html#a7d71bda07a41304403b0e13aa47f0764"><param name="Name" value="posix/fcntl.hpp"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess_1_1internal.html#a345a534b82b79bf20333fb6faef43e93"><param name="Name" value="process::internal"></OBJECT>
-    <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess_1_1internal.html#a345a534b82b79bf20333fb6faef43e93"><param name="Name" value="subprocess_posix.hpp"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess_1_1internal.html#a345a534b82b79bf20333fb6faef43e93"><param name="Name" value="src/posix/subprocess.hpp"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceos.html#a5a4254462f48e5b268065b862c97bf93"><param name="Name" value="windows/fcntl.hpp"></OBJECT>
   </UL>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceos_1_1signal__safe.html#a0f7ad48cdb581ef66ce15257f0e8947a"><param name="Name" value="clone"></OBJECT>
@@ -2105,7 +2110,7 @@
   <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess_1_1internal.html#afe2c3a3ffdd0ee6fda82e198ece80a37"><param name="Name" value="cloneChild"></OBJECT>
   <UL>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess_1_1internal.html#afe2c3a3ffdd0ee6fda82e198ece80a37"><param name="Name" value="process::internal"></OBJECT>
-    <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess_1_1internal.html#afe2c3a3ffdd0ee6fda82e198ece80a37"><param name="Name" value="subprocess_posix.hpp"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess_1_1internal.html#afe2c3a3ffdd0ee6fda82e198ece80a37"><param name="Name" value="src/posix/subprocess.hpp"></OBJECT>
   </UL>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacerouting_1_1diagnosis_1_1socket_1_1state.html#adfaf971c4f87f39a233f73a1ba434759"><param name="Name" value="CLOSE"></OBJECT>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classDynamicLibrary.html#a4c65d79591c7fb3173916dec0a1ddd8e"><param name="Name" value="close"></OBJECT>
@@ -2294,6 +2299,7 @@
   <UL>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess_1_1http.html#a54e53c8006298fe99e3fb5f55c0e8c41"><param name="Name" value="3rdparty/libprocess/include/process/http.hpp"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess_1_1network.html#a502d62f6f908591b8677c90341af28cc"><param name="Name" value="3rdparty/libprocess/include/process/network.hpp"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess_1_1windows.html#a5afdaeaeb57343d0aca728b74dcd3f71"><param name="Name" value="libwinio.hpp"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classmesos_1_1internal_1_1HttpConnectionProcess.html#a0e32a05c88072b7db23e87a384ffa1ea"><param name="Name" value="mesos::internal::HttpConnectionProcess"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classmesos_1_1internal_1_1slave_1_1IOSwitchboard.html#acd44076631fa55207e19b315a13cbdd3"><param name="Name" value="mesos::internal::slave::IOSwitchboard"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacenet.html#ad810412a39640d3db31448c8ce7b280b"><param name="Name" value="net"></OBJECT>
@@ -2304,6 +2310,7 @@
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1network_1_1internal_1_1PollSocketImpl.html#a217849468a99bd63d10a8f8acfb2e496"><param name="Name" value="process::network::internal::PollSocketImpl"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1network_1_1internal_1_1Socket.html#aa441e29328f4f4416a07689de4040022"><param name="Name" value="process::network::internal::Socket"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a54ff5817c8e53085c47d8df7e6f5ffd9"><param name="Name" value="process::network::internal::SocketImpl"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess_1_1windows.html#a5afdaeaeb57343d0aca728b74dcd3f71"><param name="Name" value="process::windows"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacenet.html#ad810412a39640d3db31448c8ce7b280b"><param name="Name" value="stout/include/stout/os/windows/socket.hpp"></OBJECT>
   </UL>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classmesos_1_1internal_1_1HttpConnectionProcess.html#a6205fa14f66139a8c54ad3c3619fba1b"><param name="Name" value="connected"></OBJECT>
@@ -2798,6 +2805,7 @@
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a5a00f792b5055241fea9f1fc81b2c4c6"><param name="Name" value="process::network::internal::SocketImpl"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1network_1_1unix_1_1Address.html#af91b88086c6c1385e61b42b20510bdd4"><param name="Name" value="process::network::unix::Address"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Time.html#a7fa791510b349cfadefe26460730cc2a"><param name="Name" value="process::Time"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1windows_1_1EventLoop.html#a3bd3da5d721cf2c4db9c5551bdccc3a4"><param name="Name" value="process::windows::EventLoop"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacerouting_1_1queueing_1_1internal.html#ad758dd14190e35694010d8975d39e24c"><param name="Name" value="queueing/internal.hpp"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacerouting_1_1filter_1_1basic.html#a35b72778ac9c32776fdbdda05a74cf70"><param name="Name" value="routing::filter::basic"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacerouting_1_1filter_1_1icmp.html#a0f804ac0e7638b661235541ce9ecdfa8"><param name="Name" value="routing::filter::icmp"></OBJECT>
@@ -2930,7 +2938,7 @@
   <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess_1_1internal.html#a32020f2bbbcc116f2e055e209b4b8ce7"><param name="Name" value="createChildProcess"></OBJECT>
   <UL>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess_1_1internal.html#a32020f2bbbcc116f2e055e209b4b8ce7"><param name="Name" value="process::internal"></OBJECT>
-    <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess_1_1internal.html#a32020f2bbbcc116f2e055e209b4b8ce7"><param name="Name" value="subprocess_windows.hpp"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess_1_1internal.html#a32020f2bbbcc116f2e055e209b4b8ce7"><param name="Name" value="src/windows/subprocess.hpp"></OBJECT>
   </UL>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacemesos_1_1internal_1_1tests_1_1common.html#a5100f2f8019ea6e27f1d14fc33429d72"><param name="Name" value="createCommandInfo"></OBJECT>
   <UL>
@@ -3700,7 +3708,7 @@
   <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess_1_1internal.html#af2f19b6f367cddc0c8283560a9cd9215"><param name="Name" value="defaultClone"></OBJECT>
   <UL>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess_1_1internal.html#af2f19b6f367cddc0c8283560a9cd9215"><param name="Name" value="process::internal"></OBJECT>
-    <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess_1_1internal.html#af2f19b6f367cddc0c8283560a9cd9215"><param name="Name" value="subprocess_posix.hpp"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess_1_1internal.html#af2f19b6f367cddc0c8283560a9cd9215"><param name="Name" value="src/posix/subprocess.hpp"></OBJECT>
   </UL>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacemesos_1_1internal_1_1tests_1_1internal.html#a44cfa85fa3dc7119765112250095f094"><param name="Name" value="DefaultCredential2"></OBJECT>
   <UL>
@@ -4053,8 +4061,8 @@
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classDocker_1_1RunOptions.html#a63a9cb71e8f2d710c2fa42d8ba40c819"><param name="Name" value="Docker::RunOptions"></OBJECT>
   </UL>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceos_1_1stat.html#a305c82e6d53ccd82665b4b3648afcd1ca884cbffa48c7e5b804161fdc71389c7e"><param name="Name" value="DO_NOT_FOLLOW_SYMLINK"></OBJECT>
-  <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacedocker.html"><param name="Name" value="docker"></OBJECT>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classDocker.html"><param name="Name" value="Docker"></OBJECT>
+  <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacedocker.html"><param name="Name" value="docker"></OBJECT>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="docker_2docker_8hpp.html"><param name="Name" value="docker/docker.hpp"></OBJECT>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classDocker_1_1Container.html"><param name="Name" value="Docker::Container"></OBJECT>
   <UL>
@@ -4374,6 +4382,7 @@
   <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceos.html#a622be738276833e635a7db06cff31a35"><param name="Name" value="dup"></OBJECT>
   <UL>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceos.html#a622be738276833e635a7db06cff31a35"><param name="Name" value="os"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="classos_1_1WindowsFD.html#ae8d4fd38b52ea9f38605f46195fd040b"><param name="Name" value="os::WindowsFD"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceos.html#a622be738276833e635a7db06cff31a35"><param name="Name" value="posix/dup.hpp"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceos.html#ac6a52f61ab8f31856757007b4be7f5e6"><param name="Name" value="windows/dup.hpp"></OBJECT>
   </UL>
@@ -5848,6 +5857,7 @@
     <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceinternal_1_1windows.html#a8ee4f75d803d8ed56ce760d8e1dfac14"><param name="Name" value="reparsepoint.hpp"></OBJECT>
   </UL>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="clasself_1_1File.html#a2a4f93c734087be5acbd3788dd276f78"><param name="Name" value="get_interpreter"></OBJECT>
+  <LI><OBJECT type="text/sitemap"><param name="Local" value="classos_1_1WindowsFD.html#a380eb8d9b7bc0e6b3bfae0e8e9c6bb0f"><param name="Name" value="get_iocp"></OBJECT>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceos.html#ade6490bdde78aaec7d3ffec9396e1018"><param name="Name" value="get_job_info"></OBJECT>
   <UL>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceos.html#ade6490bdde78aaec7d3ffec9396e1018"><param name="Name" value="os"></OBJECT>
@@ -7299,6 +7309,12 @@
     <LI><OBJECT type="text/sitemap"><param name="Local" value="include_2mesos_2values_8hpp.html#a3f0be1a44db72a579bd0785ae5f0f5f7"><param name="Name" value="operator=="></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="include_2mesos_2values_8hpp.html#a0f4a31f0728bc6226c7d200cb73be0bd"><param name="Name" value="parse"></OBJECT>
   </UL>
+  <LI><OBJECT type="text/sitemap"><param name="Local" value="include_2process_2subprocess_8hpp.html"><param name="Name" value="include/process/subprocess.hpp"></OBJECT>
+  <UL>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="include_2process_2subprocess_8hpp.html#afc6611c4913642642277b44447a16e55"><param name="Name" value="InputFileDescriptors"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="include_2process_2subprocess_8hpp.html#a882829822afa4f33b90aafc9c4ffa9af"><param name="Name" value="OutputFileDescriptors"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="include_2process_2subprocess_8hpp.html#a2d7e0a283bc0c9eca8a8b0532e026269"><param name="Name" value="subprocess"></OBJECT>
+  </UL>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classmesos_1_1internal_1_1slave_1_1Executor.html#a79093461e7bc35f4b4b9c7a796b88e2e"><param name="Name" value="incompleteTasks"></OBJECT>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classmesos_1_1internal_1_1tests_1_1MemoryTestHelper.html#a49cb28aaf92bfdcfe17320735214451b"><param name="Name" value="increasePageCache"></OBJECT>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classmesos_1_1internal_1_1tests_1_1MemoryTestHelper.html#ab33a4ec1bdc197fca39d2a8285e868f2"><param name="Name" value="increaseRSS"></OBJECT>
@@ -7480,8 +7496,8 @@
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classmesos_1_1internal_1_1log_1_1tool_1_1Benchmark_1_1Flags.html#a380cb9956d9600e23e23990170f2b8b0"><param name="Name" value="input"></OBJECT>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess.html#afc6611c4913642642277b44447a16e55"><param name="Name" value="InputFileDescriptors"></OBJECT>
   <UL>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess.html#afc6611c4913642642277b44447a16e55"><param name="Name" value="include/process/subprocess.hpp"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess.html#afc6611c4913642642277b44447a16e55"><param name="Name" value="process"></OBJECT>
-    <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess.html#afc6611c4913642642277b44447a16e55"><param name="Name" value="subprocess.hpp"></OBJECT>
   </UL>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="subcommand_8hpp.html#ac2e7e3d5ad8dee9c2a4a513b3bb7d10d"><param name="Name" value="INSERT"></OBJECT>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classDocker.html#a3be28ab0231c0fefaf839661b790c457"><param name="Name" value="inspect"></OBJECT>
@@ -7652,6 +7668,13 @@
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classmesos_1_1internal_1_1master_1_1Master.html#ab3b08c310b38fab6b4ad8d3666abf60b"><param name="Name" value="inverseOfferTimeout"></OBJECT>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classJvm.html#a2684939a9539b25dd08aa969c6d6afba"><param name="Name" value="invoke"></OBJECT>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classJvm.html#a0c08d2480d97fdbdefa52f5ad506a5f5"><param name="Name" value="invokeStatic"></OBJECT>
+  <LI><OBJECT type="text/sitemap"><param name="Local" value="io__internal_8hpp.html"><param name="Name" value="io_internal.hpp"></OBJECT>
+  <UL>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="io__internal_8hpp.html#a2291f1f69f4bdf80f3b114c493eb1e37"><param name="Name" value="is_async"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="io__internal_8hpp.html#a9458b24220892124c2112b3fe85e585e"><param name="Name" value="prepare_async"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="io__internal_8hpp.html#ac0a90b8abf47098e5a57d90e744a42a8"><param name="Name" value="read"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="io__internal_8hpp.html#ab4ecbbe96ef3c0600060e16c47988798"><param name="Name" value="write"></OBJECT>
+  </UL>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacecgroups_1_1blkio_1_1cfq.html#aadb0e71d712040f776c17f46ae932f1e"><param name="Name" value="io_merged"></OBJECT>
   <UL>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacecgroups_1_1blkio_1_1cfq.html#aadb0e71d712040f776c17f46ae932f1e"><param name="Name" value="cgroups::blkio::cfq"></OBJECT>
@@ -7750,6 +7773,13 @@
     <LI><OBJECT type="text/sitemap"><param name="Local" value="structprocess_1_1Event.html#ac2d1b2d710b1b3002da0116239787517"><param name="Name" value="process::Event"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1StateMachine.html#a6f0830360e0999fdb3803b31dbd016ea"><param name="Name" value="process::StateMachine"></OBJECT>
   </UL>
+  <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess_1_1io.html#ada6541d78cad2ecc225be8a26662c748"><param name="Name" value="is_async"></OBJECT>
+  <UL>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess_1_1io.html#ada6541d78cad2ecc225be8a26662c748"><param name="Name" value="3rdparty/libprocess/include/process/io.hpp"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess_1_1io_1_1internal.html#a2291f1f69f4bdf80f3b114c493eb1e37"><param name="Name" value="io_internal.hpp"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess_1_1io.html#ada6541d78cad2ecc225be8a26662c748"><param name="Name" value="process::io"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess_1_1io_1_1internal.html#a2291f1f69f4bdf80f3b114c493eb1e37"><param name="Name" value="process::io::internal"></OBJECT>
+  </UL>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacenet.html#a6d996e15b39630257af8d8a0379c7f7a"><param name="Name" value="is_inprogress_error"></OBJECT>
   <UL>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacenet.html#a6d996e15b39630257af8d8a0379c7f7a"><param name="Name" value="net"></OBJECT>
@@ -8285,8 +8315,8 @@
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classJvm_1_1Object.html"><param name="Name" value="Jvm::Object"></OBJECT>
   <UL>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classJvm_1_1Object.html#abfabfb01075e88d34e15c89153dc231e"><param name="Name" value="Jvm"></OBJECT>
-    <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>
+    <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#ac0d9d73c04b0977fcd51ac2a58150387"><param name="Name" value="operator jobject"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classJvm_1_1Object.html#ab6c5a893c5492b2f6e8ef828ddbdac65"><param name="Name" value="operator="></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classJvm_1_1Object.html#a1a5694b40e2d4f114e39623aca6bbbf1"><param name="Name" value="~Object"></OBJECT>
@@ -8645,6 +8675,7 @@
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classmesos_1_1MesosSchedulerDriver.html#aeecb18557c3d94f8c8cc46513f770945"><param name="Name" value="mesos::MesosSchedulerDriver"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classmesos_1_1SchedulerDriver.html#a63257236eb2943883cf4a88ab2abb851"><param name="Name" value="mesos::SchedulerDriver"></OBJECT>
   </UL>
+  <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1windows_1_1EventLoop.html#a006cb0c8efb7aaadadf0a692d9c2659a"><param name="Name" value="launchTimer"></OBJECT>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="structmesos_1_1internal_1_1slave_1_1ImageInfo.html#a00b3bbd185c4191172c69aca4202529a"><param name="Name" value="layers"></OBJECT>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacemesos_1_1internal_1_1slave_1_1provisioner_1_1paths.html#ae4816154edb25f9ff364540496fed9e6"><param name="Name" value="LAYERS_FILE"></OBJECT>
   <UL>
@@ -8850,6 +8881,21 @@
     <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacemesos_1_1internal_1_1slave_1_1paths.html#a0eb6a5b0180c943374211289e1d4a312"><param name="Name" value="slave/paths.hpp"></OBJECT>
   </UL>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="structmesos_1_1internal_1_1slave_1_1state_1_1RunState.html#af5bbb78d5d870816bed066dc4d55c8ea"><param name="Name" value="libprocessPid"></OBJECT>
+  <LI><OBJECT type="text/sitemap"><param name="Local" value="libwinio_8hpp.html"><param name="Name" value="libwinio.hpp"></OBJECT>
+  <UL>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="libwinio_8hpp.html#a1f34e4ee3092afe93c37c170430c03f5"><param name="Name" value="accept"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="libwinio_8hpp.html#a5afdaeaeb57343d0aca728b74dcd3f71"><param name="Name" value="connect"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="libwinio_8hpp.html#a7436ed89e84ff3415987de0ca9428d08"><param name="Name" value="read"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="libwinio_8hpp.html#a37fde6f31c2f9838a18cf83c2c865134"><param name="Name" value="recv"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="libwinio_8hpp.html#a04c64346155d34517acdf8b587162868"><param name="Name" value="send"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="libwinio_8hpp.html#afc59f27e725b5feb12f76e1c008ba767"><param name="Name" value="sendfile"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="libwinio_8hpp.html#a69a29846581bb7bb1084e9ee90cbe8e6"><param name="Name" value="write"></OBJECT>
+  </UL>
+  <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess.html#a3b1f9b3719ea6358ad426ae31bc8eae6"><param name="Name" value="libwinio_loop"></OBJECT>
+  <UL>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess.html#a3b1f9b3719ea6358ad426ae31bc8eae6"><param name="Name" value="process"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess.html#a3b1f9b3719ea6358ad426ae31bc8eae6"><param name="Name" value="windows/event_loop.hpp"></OBJECT>
+  </UL>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacecgroups_1_1memory.html#abcf50b175fea5a521400f6b9e5574e90"><param name="Name" value="limit_in_bytes"></OBJECT>
   <UL>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacecgroups_1_1memory.html#abcf50b175fea5a521400f6b9e5574e90"><param name="Name" value="cgroups::memory"></OBJECT>
@@ -11256,8 +11302,8 @@
     <LI><OBJECT type="text/sitemap"><param name="Local" value="structmesos_1_1internal_1_1master_1_1Role.html#a38054bb4be46d987910ea84f6c21bdf5"><param name="Name" value="allocatedResources"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="structmesos_1_1internal_1_1master_1_1Role.html#a6cbb8b2d545779d9fefba998cbb103d1"><param name="Name" value="frameworks"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="structmesos_1_1internal_1_1master_1_1Role.html#a406f032bfbc577ec6dd1275e48fe48cf"><param name="Name" value="removeFramework"></OBJECT>
-    <LI><OBJECT type="text/sitemap"><param name="Local" value="structmesos_1_1internal_1_1master_1_1Role.html#ae229ba3fea46929a5a6f5819e3c318cc"><param name="Name" value="role"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="structmesos_1_1internal_1_1master_1_1Role.html#accf0d5437cf11da50c674ecd6c19c7ce"><param name="Name" value="Role"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="structmesos_1_1internal_1_1master_1_1Role.html#ae229ba3fea46929a5a6f5819e3c318cc"><param name="Name" value="role"></OBJECT>
   </UL>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="structmesos_1_1internal_1_1master_1_1Slave.html"><param name="Name" value="mesos::internal::master::Slave"></OBJECT>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="structmesos_1_1internal_1_1master_1_1Slave_1_1ResourceProvider.html"><param name="Name" value="mesos::internal::master::Slave::ResourceProvider"></OBJECT>
@@ -14608,8 +14654,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#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#aa9039c86575590f50e1e03cc3f42e9e6"><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>
@@ -15038,8 +15084,8 @@
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classmesos_1_1v1_1_1ResourceConversion.html#a9b5fd5798c8e81bbef5f686b09432c5d"><param name="Name" value="apply"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classmesos_1_1v1_1_1ResourceConversion.html#a143d22da9ef8e68799b35478bb4e22fe"><param name="Name" value="consumed"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classmesos_1_1v1_1_1ResourceConversion.html#aa45d29dae28bcc977661fd541714ce64"><param name="Name" value="converted"></OBJECT>
-    <LI><OBJECT type="text/sitemap"><param name="Local" value="classmesos_1_1v1_1_1ResourceConversion.html#a29997789326dfb76ccd866cbb00cbf7d"><param name="Name" value="PostValidation"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classmesos_1_1v1_1_1ResourceConversion.html#a2c8c762596677cbf622fb4dadd922c43"><param name="Name" value="postValidation"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="classmesos_1_1v1_1_1ResourceConversion.html#a29997789326dfb76ccd866cbb00cbf7d"><param name="Name" value="PostValidation"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classmesos_1_1v1_1_1ResourceConversion.html#a35eb7b515597e4fed518448d857bb7cc"><param name="Name" value="ResourceConversion"></OBJECT>
   </UL>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classmesos_1_1v1_1_1Resources.html"><param name="Name" value="mesos::v1::Resources"></OBJECT>
@@ -16017,10 +16063,13 @@
     <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_1CurlFetcherPlugin.html#a899fab81e86817aad545389c3cc5b535"><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>
+  <UL>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="classmesos_1_1uri_1_1CopyFetcherPlugin.html#ae6ff1cef4e490fa372960bf17f8446a9"><param name="Name" value="mesos::uri::CopyFetcherPlugin"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="classmesos_1_1uri_1_1CurlFetcherPlugin.html#a899fab81e86817aad545389c3cc5b535"><param name="Name" value="mesos::uri::CurlFetcherPlugin"></OBJECT>
+  </UL>
   <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_1CurlFetcherPlugin.html#a3797f96a62adbc485e54c139cb967d3b"><param name="Name" value="mesos::uri::CurlFetcherPlugin"></OBJECT>
@@ -17288,6 +17337,7 @@
     <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceos_1_1internal.html#a1f75643e24051d2b8d98244abf0b9ece"><param name="Name" value="recursive_remove_directory"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceos_1_1internal.html#a637592b0315b2f8c779ab681177f911a"><param name="Name" value="signaledWrapper"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceos_1_1internal.html#a8c0f383d0ce4a337b2076fab2df49221"><param name="Name" value="signalHandler"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceos_1_1internal.html#a1493e5fcc92753702d08b36881ee8f97"><param name="Name" value="windows_to_unix_epoch"></OBJECT>
   </UL>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceos_1_1libraries.html"><param name="Name" value="os::libraries"></OBJECT>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceos_1_1libraries_1_1Library.html"><param name="Name" value="os::libraries::Library"></OBJECT>
@@ -17454,7 +17504,10 @@
   <LI><OBJECT type="text/sitemap"><param name="Local" value="structos_1_1Wait.html"><param name="Name" value="os::Wait"></OBJECT>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classos_1_1WindowsFD.html"><param name="Name" value="os::WindowsFD"></OBJECT>
   <UL>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="classos_1_1WindowsFD.html#a1a9c96c20213e1b94ba8dcc1bb059163"><param name="Name" value="assign_iocp"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classos_1_1WindowsFD.html#a94b69cae4edb8f3549845fbfa0355b7c"><param name="Name" value="crt"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="classos_1_1WindowsFD.html#ae8d4fd38b52ea9f38605f46195fd040b"><param name="Name" value="dup"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="classos_1_1WindowsFD.html#a380eb8d9b7bc0e6b3bfae0e8e9c6bb0f"><param name="Name" value="get_iocp"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5ad09c4cb1265f1772bb757a7af277b49f"><param name="Name" value="HANDLE"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classos_1_1WindowsFD.html#a4dce5dbc3d019589b4b61d6d17e1da45"><param name="Name" value="is_overlapped"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classos_1_1WindowsFD.html#ab961444eec07c587c9a67122daf4fd33"><param name="Name" value="is_valid"></OBJECT>
@@ -17618,8 +17671,8 @@
   </UL>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess.html#a882829822afa4f33b90aafc9c4ffa9af"><param name="Name" value="OutputFileDescriptors"></OBJECT>
   <UL>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess.html#a882829822afa4f33b90aafc9c4ffa9af"><param name="Name" value="include/process/subprocess.hpp"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess.html#a882829822afa4f33b90aafc9c4ffa9af"><param name="Name" value="process"></OBJECT>
-    <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess.html#a882829822afa4f33b90aafc9c4ffa9af"><param name="Name" value="subprocess.hpp"></OBJECT>
   </UL>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="structmesos_1_1internal_1_1master_1_1Metrics.html#a6481c3e2a31f2fac641d7426b4486671"><param name="Name" value="outstanding_offers"></OBJECT>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="overlapped_8hpp.html"><param name="Name" value="overlapped.hpp"></OBJECT>
@@ -17873,10 +17926,10 @@
     <LI><OBJECT type="text/sitemap"><param name="Local" value="path_8hpp.html#a222005a87c0bb37fbabdc8effe38aed1"><param name="Name" value="operator>"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="path_8hpp.html#a0a79d7788a7f0189a4a5b69b73dce859"><param name="Name" value="operator>="></OBJECT>
   </UL>
+  <LI><OBJECT type="text/sitemap"><param name="Local" value="classPath.html"><param name="Name" value="Path"></OBJECT>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacepath.html"><param name="Name" value="path"></OBJECT>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classPath.html"><param name="Name" value="Path"></OBJECT>
   <UL>
-    <LI><OBJECT type="text/sitemap"><param name="Local" value="classPath.html#a240c7b71a23c8e97b5490dbae75cc948"><param name="Name" value="absolute"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classPath.html#a11c34646ac636526f1b28b61057f3b1f"><param name="Name" value="basename"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classPath.html#a0449e93ffb615ef7fd198ef03dd1100c"><param name="Name" value="dirname"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classPath.html#a46e804f0daca3c3a0fef137364aca5ea"><param name="Name" value="extension"></OBJECT>
@@ -18373,6 +18426,13 @@
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classmesos_1_1slave_1_1Isolator.html#a35cb3afae3f941fd4450a763eb123d6d"><param name="Name" value="mesos::slave::Isolator"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacemesos_1_1internal_1_1fs_1_1chroot.html#a3c224bd1aaafda45a323c3d84f8cc85a"><param name="Name" value="src/linux/fs.hpp"></OBJECT>
   </UL>
+  <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess_1_1io.html#a9db94d84fb44b21fb669ade7c6a82114"><param name="Name" value="prepare_async"></OBJECT>
+  <UL>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess_1_1io.html#a9db94d84fb44b21fb669ade7c6a82114"><param name="Name" value="3rdparty/libprocess/include/process/io.hpp"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess_1_1io_1_1internal.html#a9458b24220892124c2112b3fe85e585e"><param name="Name" value="io_internal.hpp"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess_1_1io.html#a9db94d84fb44b21fb669ade7c6a82114"><param name="Name" value="process::io"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess_1_1io_1_1internal.html#a9458b24220892124c2112b3fe85e585e"><param name="Name" value="process::io::internal"></OBJECT>
+  </UL>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="preprocessor_8hpp.html"><param name="Name" value="preprocessor.hpp"></OBJECT>
   <UL>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="preprocessor_8hpp.html#a90e1b5ab607f3428668e5dd9a014ecb0"><param name="Name" value="CAT"></OBJECT>
@@ -18641,8 +18701,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>
@@ -18985,8 +19045,8 @@
   <UL>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="structprocess_1_1http_1_1Request.html#ab73883ea45426022ec851b2069f8ed21"><param name="Name" value="acceptsEncoding"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="structprocess_1_1http_1_1Request.html#aa944870ad568bea5f0d0ce28763d0cef"><param name="Name" value="acceptsMediaType"></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_1Request.html#a78dfcfa785afc80e221d92543ff617f1"><param name="Name" value="body"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="structprocess_1_1http_1_1Request.html#ad0493ac04e37acf41127dfff3625c0f5"><param name="Name" value="client"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="structprocess_1_1http_1_1Request.html#a53555a597f9376d2dd71daa799a90494"><param name="Name" value="headers"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="structprocess_1_1http_1_1Request.html#a3a459e9dbce042511e6359533f6925d4"><param name="Name" value="keepAlive"></OBJECT>
@@ -18999,13 +19059,13 @@
   </UL>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="structprocess_1_1http_1_1Response.html"><param name="Name" value="process::http::Response"></OBJECT>
   <UL>
-    <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_1Response.html#a6dd5881e0450540a106e37257434eaada7d2a4db1b1426c6caab18fa8b484f4f5"><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_1Response.html#ad6530fddd03380dbb3b23b17523cb242"><param name="Name" value="code"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="structprocess_1_1http_1_1Response.html#ae463c5c7a083aea98a89cf9b675b59ab"><param name="Name" value="headers"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="structprocess_1_1http_1_1Response.html#a6dd5881e0450540a106e37257434eaadaa49acb0a3f416b805cb49ec1a4549b14"><param name="Name" value="NONE"></OBJECT>
-    <LI><OBJECT type="text/sitemap"><param name="Local" value="structprocess_1_1http_1_1Response.html#aad42d5f8c85b81742de9f3f1a0f6d328"><param name="Name" value="path"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="structprocess_1_1http_1_1Response.html#a6dd5881e0450540a106e37257434eaada069715e7afa526f4f971dcf3d704b5c8"><param name="Name" value="PATH"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="structprocess_1_1http_1_1Response.html#aad42d5f8c85b81742de9f3f1a0f6d328"><param name="Name" value="path"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="structprocess_1_1http_1_1Response.html#a6dd5881e0450540a106e37257434eaada8d713d3c6326b2c6f5730c5f46f3e3f0"><param name="Name" value="PIPE"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="structprocess_1_1http_1_1Response.html#aa3543eb8ecd36f5d6d91b2640d471359"><param name="Name" value="reader"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="structprocess_1_1http_1_1Response.html#ac7ac8132a8d8772335efd5a55d9ebb4f"><param name="Name" value="Response"></OBJECT>
@@ -19252,14 +19312,24 @@
     <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess_1_1internal.html#a6ddcc193edfcb094fd22fb8e77bfb541"><param name="Name" value="thenf"></OBJECT>
   </UL>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess_1_1io.html"><param name="Name" value="process::io"></OBJECT>
+  <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess_1_1io_1_1internal.html"><param name="Name" value="process::io::internal"></OBJECT>
+  <UL>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess_1_1io_1_1internal.html#a2291f1f69f4bdf80f3b114c493eb1e37"><param name="Name" value="is_async"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess_1_1io_1_1internal.html#a9458b24220892124c2112b3fe85e585e"><param name="Name" value="prepare_async"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess_1_1io_1_1internal.html#ac0a90b8abf47098e5a57d90e744a42a8"><param name="Name" value="read"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess_1_1io_1_1internal.html#ab4ecbbe96ef3c0600060e16c47988798"><param name="Name" value="write"></OBJECT>
+  </UL>
+  <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess_1_1io.html"><param name="Name" value="process::io"></OBJECT>
   <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#ada6541d78cad2ecc225be8a26662c748"><param name="Name" value="is_async"></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#aca1f059ca9f0d7360631c621debeb879"><param name="Name" value="READ"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess_1_1io.html#a9db94d84fb44b21fb669ade7c6a82114"><param name="Name" value="prepare_async"></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#ab9c4a52a88fcc9983438e391643424ca"><param name="Name" value="redirect"></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="namespaceprocess_1_1io.html#a49105dc036ad04225c92bd673da5ce39"><param name="Name" value="write"></OBJECT>
   </UL>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Latch.html"><param name="Name" value="process::Latch"></OBJECT>
   <UL>
@@ -19613,8 +19683,8 @@
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Promise.html#aa70c825f2b107eac5f393db03d2dd6ec"><param name="Name" value="associate"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Promise.html#a8f50fcfd7ddb6dd39ec2cd468377cd5d"><param name="Name" value="discard"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Promise.html#a2fc569c8bf99acb3e53a68ff3b266667"><param name="Name" value="fail"></OBJECT>
-    <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Promise.html#ab033f7626ddfc7f1d62cb3d3952d166e"><param name="Name" value="Future"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Promise.html#a8aef752d6c90cb11e58e3166b7592ef1"><param name="Name" value="future"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Promise.html#ab033f7626ddfc7f1d62cb3d3952d166e"><param name="Name" value="Future"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Promise.html#a6d293d289666af0adec11f68f9fede9c"><param name="Name" value="internal::discarded"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Promise.html#ad96eae1c1003a896e34b6a4c66e23c39"><param name="Name" value="Promise"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Promise.html#a989b8dfa7eb2633de3f0f25ac2b87943"><param name="Name" value="set"></OBJECT>
@@ -19916,24 +19986,43 @@
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1WeakFuture.html#a46a914af79e5b1fb309866a6288a4217"><param name="Name" value="get"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1WeakFuture.html#abc498bf35827627ae815540181e073a9"><param name="Name" value="WeakFuture"></OBJECT>
   </UL>
+  <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess_1_1windows.html"><param name="Name" value="process::windows"></OBJECT>
+  <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1windows_1_1EventLoop.html"><param name="Name" value="process::windows::EventLoop"></OBJECT>
+  <UL>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1windows_1_1EventLoop.html#a3bd3da5d721cf2c4db9c5551bdccc3a4"><param name="Name" value="create"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1windows_1_1EventLoop.html#a006cb0c8efb7aaadadf0a692d9c2659a"><param name="Name" value="launchTimer"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1windows_1_1EventLoop.html#a832a73998bb3b26b7caa770ceef38827"><param name="Name" value="registerHandle"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1windows_1_1EventLoop.html#a2578b5fad0eb039f995955c798310c86"><param name="Name" value="run"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1windows_1_1EventLoop.html#a8a07fc602e31875e6cbcaeac8008f09a"><param name="Name" value="stop"></OBJECT>
+  </UL>
+  <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess_1_1windows.html"><param name="Name" value="process::windows"></OBJECT>
+  <UL>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess_1_1windows.html#a1f34e4ee3092afe93c37c170430c03f5"><param name="Name" value="accept"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess_1_1windows.html#a5afdaeaeb57343d0aca728b74dcd3f71"><param name="Name" value="connect"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess_1_1windows.html#a7436ed89e84ff3415987de0ca9428d08"><param name="Name" value="read"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess_1_1windows.html#a37fde6f31c2f9838a18cf83c2c865134"><param name="Name" value="recv"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess_1_1windows.html#a04c64346155d34517acdf8b587162868"><param name="Name" value="send"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess_1_1windows.html#afc59f27e725b5feb12f76e1c008ba767"><param name="Name" value="sendfile"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess_1_1windows.html#a69a29846581bb7bb1084e9ee90cbe8e6"><param name="Name" value="write"></OBJECT>
+  </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#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< CollectProcess< T > >"></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>
@@ -19974,8 +20063,8 @@
   </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#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>
@@ -19995,8 +20084,8 @@
   </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>
@@ -20009,8 +20098,8 @@
   </UL>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html"><param name="Name" value="Process< Logging >"></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>
@@ -20030,22 +20119,22 @@
   </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>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html"><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>
     <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< 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>
@@ -20072,8 +20161,8 @@
   </UL>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html"><param name="Name" value="Process< MetricsProcess >"></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>
@@ -20086,8 +20175,8 @@
   </UL>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html"><param name="Name" value="Process< Profiler >"></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>
@@ -20100,8 +20189,8 @@
   </UL>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html"><param name="Name" value="Process< RateLimiterProcess >"></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>
@@ -20128,8 +20217,8 @@
   </UL>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html"><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>
     <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>
@@ -20156,15 +20245,15 @@
   </UL>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html"><param name="Name" value="Process< System >"></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< 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>
@@ -20177,15 +20266,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#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>
@@ -20240,6 +20329,7 @@
     <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess.html#a61f0548459d8e5a950dd91cfc2bd4aa7"><param name="Name" value="HELP"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess.html#a6c9cd01950a98038b2a6df3e5066418f"><param name="Name" value="initialize"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess.html#afc6611c4913642642277b44447a16e55"><param name="Name" value="InputFileDescriptors"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess.html#a3b1f9b3719ea6358ad426ae31bc8eae6"><param name="Name" value="libwinio_loop"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess.html#a283af87525d9611f5d27b9a7dd6b967e"><param name="Name" value="logging"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess.html#a852052836f10e7c11a19320e846d472e"><param name="Name" value="loop"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess.html#ab21ff1f8b6c033414c6cdfb0eb2e7b99"><param name="Name" value="MATCHER_P2"></OBJECT>
@@ -20337,8 +20427,8 @@
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classProcessWatcher.html#a8858c74f313c22f72836beabb73e7c27"><param name="Name" value="process"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classProcessWatcher.html#ae6f5acc4af4d936adca882e2274e6491"><param name="Name" value="ProcessWatcher"></OBJECT>
   </UL>
-  <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>
+  <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_1Profiler.html#ac3603ac30749c5f0bc2321769b9bb9a8"><param name="Name" value="Profiler"></OBJECT>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceelf.html#a5e0f37b29d2d9500fe43653adefc1022ac94c37334a8660ad8e5c05176a2b3853"><param name="Name" value="PROGBITS"></OBJECT>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classflags_1_1FlagsBase.html#a88f899fbf20a712e8bb7236284b41bf4"><param name="Name" value="programName_"></OBJECT>
@@ -20714,10 +20804,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>
@@ -20729,6 +20819,8 @@
     <LI><OBJECT type="text/sitemap"><param name="Local" value="structcgroups_1_1devices_1_1Entry_1_1Access.html#a2e0ee4dedc591ab4084fa5b18c534622"><param name="Name" value="cgroups::devices::Entry::Access"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacemesos_1_1internal_1_1credentials.html#a137c93d60149616181a10e9f39986f7f"><param name="Name" value="credentials.hpp"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="structDocker_1_1Device_1_1Access.html#ab4a1a1a34181c1b542803ba637b3640b"><param name="Name" value="Docker::Device::Access"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess_1_1io_1_1internal.html#ac0a90b8abf47098e5a57d90e744a42a8"><param name="Name" value="io_internal.hpp"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess_1_1windows.html#a7436ed89e84ff3415987de0ca9428d08"><param name="Name" value="libwinio.hpp"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacecgroups.html#aa696e42fa4a13e922dee2d1f869146d2"><param name="Name" value="linux/cgroups.hpp"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacemesos_1_1internal_1_1credentials.html#a137c93d60149616181a10e9f39986f7f"><param name="Name" value="mesos::internal::credentials"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classmesos_1_1internal_1_1Files.html#a3317f5bd0a0b60f331d74b01bb478d13"><param name="Name" value="mesos::internal::Files"></OBJECT>
@@ -20745,17 +20837,19 @@
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classmesos_1_1log_1_1Log_1_1Reader.html#a5588979f3c9608bed2ac45328b85b4f3"><param name="Name" value="mesos::log::Log::Reader"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceos.html#aa1d97ff0a93229e1fe6b33e3e2d567f7"><param name="Name" value="os"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1http_1_1Pipe_1_1Reader.html#a0b20318ac77b65b16e30d552b6c0ae91"><param name="Name" value="process::http::Pipe::Reader"></OBJECT>
-    <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess_1_1io.html#a4c34d22e475e29f12ac739921dcc580f"><param name="Name" value="process::io"></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>
   <UL>
-    <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess_1_1io.html#aca1f059ca9f0d7360631c621debeb879"><param name="Name" value="process::io"></OBJECT>
-    <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1network_1_1internal_1_1Socket.html#ac5a52929658fbe1ed19b4b03bdd63904a3466fab4975481651940ed328aa990e4"><param name="Name" value="process::network::internal::Socket"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess_1_1io.html#a4c34d22e475e29f12ac739921dcc580f"><param name="Name" value="process::io"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess_1_1io_1_1internal.html#ac0a90b8abf47098e5a57d90e744a42a8"><param name="Name" value="process::io::internal"></OBJECT>
   </UL>
+  <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1network_1_1internal_1_1Socket.html#ac5a52929658fbe1ed19b4b03bdd63904a3466fab4975481651940ed328aa990e4"><param name="Name" value="READ"></OBJECT>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors.html#a0a3f315345ef7b7ee6f3f1d4d337854d"><param name="Name" value="read"></OBJECT>
   <UL>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors.html#a0a3f315345ef7b7ee6f3f1d4d337854d"><param name="Name" value="process::Subprocess::IO::InputFileDescriptors"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html#ac4af678c631a700d4be4410a250e3bce"><param name="Name" value="process::Subprocess::IO::OutputFileDescriptors"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess_1_1windows.html#a7436ed89e84ff3415987de0ca9428d08"><param name="Name" value="process::windows"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprotobuf.html#a2120146c620b72d4e1e3ae47bdacb1b3"><param name="Name" value="protobuf"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacemesos_1_1internal_1_1slave_1_1state.html#adeb89c1623e8d5af457b5b130aceac1d"><param name="Name" value="src/slave/state.hpp"></OBJECT>
   </UL>
@@ -20999,13 +21093,15 @@
     <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceos_1_1internal.html#a1f75643e24051d2b8d98244abf0b9ece"><param name="Name" value="os::internal"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceos_1_1internal.html#a1f75643e24051d2b8d98244abf0b9ece"><param name="Name" value="windows/rmdir.hpp"></OBJECT>
   </UL>
-  <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacenet.html#ae1804e10c81f5743b459eeae1f6a701a"><param name="Name" value="recv"></OBJECT>
+  <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess_1_1windows.html#a37fde6f31c2f9838a18cf83c2c865134"><param name="Name" value="recv"></OBJECT>
   <UL>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess_1_1windows.html#a37fde6f31c2f9838a18cf83c2c865134"><param name="Name" value="libwinio.hpp"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacenet.html#ae1804e10c81f5743b459eeae1f6a701a"><param name="Name" value="net"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1network_1_1internal_1_1LibeventSSLSocketImpl.html#a25118017aa15a1ee25039e69fdfd8ea4"><param name="Name" value="process::network::internal::LibeventSSLSocketImpl"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1network_1_1internal_1_1PollSocketImpl.html#a25882be4a54fbd7040e8a2ea707d5a33"><param name="Name" value="process::network::internal::PollSocketImpl"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1network_1_1internal_1_1Socket.html#ae81929b2f51bb910ed4ae1504284bffa"><param name="Name" value="process::network::internal::Socket"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a3cea7f644d4b0bab527a7b93bf892607"><param name="Name" value="process::network::internal::SocketImpl"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess_1_1windows.html#a37fde6f31c2f9838a18cf83c2c865134"><param name="Name" value="process::windows"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacenet.html#ae1804e10c81f5743b459eeae1f6a701a"><param name="Name" value="stout/include/stout/os/windows/socket.hpp"></OBJECT>
   </UL>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess_1_1io.html#ab9c4a52a88fcc9983438e391643424ca"><param name="Name" value="redirect"></OBJECT>
@@ -21050,6 +21146,7 @@
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classmesos_1_1internal_1_1slave_1_1Slave.html#accb925947118625aa974fe887268b90a"><param name="Name" value="registerExecutor"></OBJECT>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classmesos_1_1internal_1_1slave_1_1Slave.html#aeaef3f8ca707a6ddf0cd9692835b7f50"><param name="Name" value="registerExecutorTimeout"></OBJECT>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classmesos_1_1internal_1_1master_1_1Master.html#a65522e77d9f6b6587b7a72e5651d4093"><param name="Name" value="registerFramework"></OBJECT>
+  <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1windows_1_1EventLoop.html#a832a73998bb3b26b7caa770ceef38827"><param name="Name" value="registerHandle"></OBJECT>
   <LI><OBJECT type="text/sitemap"><param name="Local" value="classmesos_1_1internal_1_1slave_1_1Executor.html#a3b2abbbd9f9e9ca5c08b75329ac426c0a47f27688eed5f4b7b8fae1fe60e35d0d"><param name="Name" value="REGISTERING"></OBJECT>
   <LI><OBJECT type="text/sitema

<TRUNCATED>

[43/50] mesos-site git commit: Updated the website built from mesos SHA: 7c9c72d.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/classes.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/classes.html b/content/api/latest/c++/classes.html
index c796262..6db50ae 100644
--- a/content/api/latest/c++/classes.html
+++ b/content/api/latest/c++/classes.html
@@ -53,222 +53,223 @@
 <div class="qindex"><a class="qindex" href="#letter_A">A</a>&#160;|&#160;<a class="qindex" href="#letter_B">B</a>&#160;|&#160;<a class="qindex" href="#letter_C">C</a>&#160;|&#160;<a class="qindex" href="#letter_D">D</a>&#160;|&#160;<a class="qindex" href="#letter_E">E</a>&#160;|&#160;<a class="qindex" href="#letter_F">F</a>&#160;|&#160;<a class="qindex" href="#letter_G">G</a>&#160;|&#160;<a class="qindex" href="#letter_H">H</a>&#160;|&#160;<a class="qindex" href="#letter_I">I</a>&#160;|&#160;<a class="qindex" href="#letter_J">J</a>&#160;|&#160;<a class="qindex" href="#letter_K">K</a>&#160;|&#160;<a class="qindex" href="#letter_L">L</a>&#160;|&#160;<a class="qindex" href="#letter_M">M</a>&#160;|&#160;<a class="qindex" href="#letter_N">N</a>&#160;|&#160;<a class="qindex" href="#letter_O">O</a>&#160;|&#160;<a class="qindex" href="#letter_P">P</a>&#160;|&#160;<a class="qindex" href="#letter_Q">Q</a>&#160;|&#160;<a class="qindex" href="#letter_R">R</a>&#160;|&#160;<a class="qindex" href=
 "#letter_S">S</a>&#160;|&#160;<a class="qindex" href="#letter_T">T</a>&#160;|&#160;<a class="qindex" href="#letter_U">U</a>&#160;|&#160;<a class="qindex" href="#letter_V">V</a>&#160;|&#160;<a class="qindex" href="#letter_W">W</a>&#160;|&#160;<a class="qindex" href="#letter_X">X</a>&#160;|&#160;<a class="qindex" href="#letter_Z">Z</a>&#160;|&#160;<a class="qindex" href="#letter__">_</a></div>
 <table class="classindex">
 <tr><td rowspan="2" valign="bottom"><a name="letter_A"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;A&#160;&#160;</div></td></tr></table>
-</td><td valign="top"><a class="el" href="structprocess_1_1EventConsumer.html">EventConsumer</a> (<a class="el" href="namespaceprocess.html">process</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1logger_1_1LogrotateContainerLogger.html">LogrotateContainerLogger</a> (<a class="el" href="namespacemesos_1_1internal_1_1logger.html">mesos::internal::logger</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structDocker_1_1PortMapping.html">Docker::PortMapping</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1slave_1_1Subsystem.html">Subsystem</a> (<a class="el" href="namespacemesos_1_1internal_1_1slave.html">mesos::internal::slave</a>)&#160;&#160;&#160;</td></tr>
-<tr><td valign="top"><a class="el" href="classprocess_1_1EventLoop.html">EventLoop</a> (<a class="el" href="namespaceprocess.html">process</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1state_1_1LogStorage.html">LogStorage</a> (<a class="el" href="namespacemesos_1_1state.html">mesos::state</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1slave_1_1PortMappingIsolatorProcess.html">PortMappingIsolatorProcess</a> (<a class="el" href="namespacemesos_1_1internal_1_1slave.html">mesos::internal::slave</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1slave_1_1SubsystemProcess.html">SubsystemProcess</a> (<a class="el" href="namespacemesos_1_1internal_1_1slave.html">mesos::internal::slave</a>)&#160;&#160;&#160;</td></tr>
-<tr><td valign="top"><a class="el" href="structprocess_1_1http_1_1Accepted.html">Accepted</a> (<a class="el" href="namespaceprocess_1_1http.html">process::http</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classprocess_1_1EventQueue.html">EventQueue</a> (<a class="el" href="namespaceprocess.html">process</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1log_1_1LogWriterProcess.html">LogWriterProcess</a> (<a class="el" href="namespacemesos_1_1internal_1_1log.html">mesos::internal::log</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1slave_1_1PortMappingStatistics.html">PortMappingStatistics</a> (<a class="el" href="namespacemesos_1_1internal_1_1slave.html">mesos::internal::slave</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structos_1_1signals_1_1internal_1_1Suppressor.html">Suppressor</a> (<a class="el" href="namespaceos_1_1signals_1_1internal.html">os::signals::inter
 nal</a>)&#160;&#160;&#160;</td></tr>
-<tr><td valign="top"><a class="el" href="classmesos_1_1AcceptingObjectApprover.html">AcceptingObjectApprover</a> (<a class="el" href="namespacemesos.html">mesos</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structprocess_1_1EventVisitor.html">EventVisitor</a> (<a class="el" href="namespaceprocess.html">process</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classprocess_1_1internal_1_1Loop.html">Loop</a> (<a class="el" href="namespaceprocess_1_1internal.html">process::internal</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1slave_1_1PortMappingUpdate.html">PortMappingUpdate</a> (<a class="el" href="namespacemesos_1_1internal_1_1slave.html">mesos::internal::slave</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structinternal_1_1windows_1_1SymbolicLink.html">SymbolicLink</a> (<a class="el" href="namespaceinternal_1_1windows.html">internal::windows</a>)&#160;&#160;&#160;</td></tr>
-<tr><td valign="top"><a class="el" href="structDocker_1_1Device_1_1Access.html">Docker::Device::Access</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structos_1_1Exec.html">Exec</a> (<a class="el" href="namespaceos.html">os</a>)&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_M"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;M&#160;&#160;</div></td></tr></table>
+</td><td valign="top"><a class="el" href="structprocess_1_1EventConsumer.html">EventConsumer</a> (<a class="el" href="namespaceprocess.html">process</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1log_1_1LogReaderProcess.html">LogReaderProcess</a> (<a class="el" href="namespacemesos_1_1internal_1_1log.html">mesos::internal::log</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1slave_1_1cni_1_1PortMapper.html">PortMapper</a> (<a class="el" href="namespacemesos_1_1internal_1_1slave_1_1cni.html">mesos::internal::slave::cni</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structmesos_1_1internal_1_1master_1_1Master_1_1Subscribers_1_1Subscriber.html">Master::Subscribers::Subscriber</a> (<a class="el" href="namespacemesos_1_1internal_1_1master.html">mesos::internal::master</a>)&#160;&#160;&#160;</td></tr>
+<tr><td valign="top"><a class="el" href="classprocess_1_1EventLoop.html">EventLoop</a> (<a class="el" href="namespaceprocess.html">process</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1logger_1_1LogrotateContainerLogger.html">LogrotateContainerLogger</a> (<a class="el" href="namespacemesos_1_1internal_1_1logger.html">mesos::internal::logger</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structDocker_1_1PortMapping.html">Docker::PortMapping</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1slave_1_1Subsystem.html">Subsystem</a> (<a class="el" href="namespacemesos_1_1internal_1_1slave.html">mesos::internal::slave</a>)&#160;&#160;&#160;</td></tr>
+<tr><td valign="top"><a class="el" href="structprocess_1_1http_1_1Accepted.html">Accepted</a> (<a class="el" href="namespaceprocess_1_1http.html">process::http</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classprocess_1_1windows_1_1EventLoop.html">EventLoop</a> (<a class="el" href="namespaceprocess_1_1windows.html">process::windows</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1state_1_1LogStorage.html">LogStorage</a> (<a class="el" href="namespacemesos_1_1state.html">mesos::state</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1slave_1_1PortMappingIsolatorProcess.html">PortMappingIsolatorProcess</a> (<a class="el" href="namespacemesos_1_1internal_1_1slave.html">mesos::internal::slave</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1slave_1_1SubsystemProcess.html">SubsystemProcess</a> (<a class="el" href="namespacemesos_1_1internal_1_1slave.html">mesos:
 :internal::slave</a>)&#160;&#160;&#160;</td></tr>
+<tr><td valign="top"><a class="el" href="classmesos_1_1AcceptingObjectApprover.html">AcceptingObjectApprover</a> (<a class="el" href="namespacemesos.html">mesos</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classprocess_1_1EventQueue.html">EventQueue</a> (<a class="el" href="namespaceprocess.html">process</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1log_1_1LogWriterProcess.html">LogWriterProcess</a> (<a class="el" href="namespacemesos_1_1internal_1_1log.html">mesos::internal::log</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1slave_1_1PortMappingStatistics.html">PortMappingStatistics</a> (<a class="el" href="namespacemesos_1_1internal_1_1slave.html">mesos::internal::slave</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structos_1_1signals_1_1internal_1_1Suppressor.html">Suppressor</a> (<a class="el" href="namespaceos_1_1signals_1_1internal.html">os::signals::inte
 rnal</a>)&#160;&#160;&#160;</td></tr>
+<tr><td valign="top"><a class="el" href="structDocker_1_1Device_1_1Access.html">Docker::Device::Access</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structprocess_1_1EventVisitor.html">EventVisitor</a> (<a class="el" href="namespaceprocess.html">process</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classprocess_1_1internal_1_1Loop.html">Loop</a> (<a class="el" href="namespaceprocess_1_1internal.html">process::internal</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1slave_1_1PortMappingUpdate.html">PortMappingUpdate</a> (<a class="el" href="namespacemesos_1_1internal_1_1slave.html">mesos::internal::slave</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structinternal_1_1windows_1_1SymbolicLink.html">SymbolicLink</a> (<a class="el" href="namespaceinternal_1_1windows.html">internal::windows</a>)&#160;&#160;&#160;</td></tr>
+<tr><td valign="top"><a class="el" href="structcgroups_1_1devices_1_1Entry_1_1Access.html">Entry::Access</a> (<a class="el" href="namespacecgroups_1_1devices.html">cgroups::devices</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structos_1_1Exec.html">Exec</a> (<a class="el" href="namespaceos.html">os</a>)&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_M"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;M&#160;&#160;</div></td></tr></table>
 </td><td valign="top"><a class="el" href="classrouting_1_1filter_1_1ip_1_1PortRange.html">PortRange</a> (<a class="el" href="namespacerouting_1_1filter_1_1ip.html">routing::filter::ip</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classSynchronized.html">Synchronized</a>&#160;&#160;&#160;</td></tr>
-<tr><td valign="top"><a class="el" href="structcgroups_1_1devices_1_1Entry_1_1Access.html">Entry::Access</a> (<a class="el" href="namespacecgroups_1_1devices.html">cgroups::devices</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1slave_1_1Executor.html">Executor</a> (<a class="el" href="namespacemesos_1_1internal_1_1slave.html">mesos::internal::slave</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1log_1_1Log_1_1Position.html">Log::Position</a> (<a class="el" href="namespacemesos_1_1log.html">mesos::log</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classprocess_1_1System.html">System</a> (<a class="el" href="namespaceprocess.html">process</a>)&#160;&#160;&#160;</td></tr>
-<tr><td valign="top"><a class="el" href="classrouting_1_1action_1_1Action.html">Action</a> (<a class="el" href="namespacerouting_1_1action.html">routing::action</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classprocess_1_1Executor.html">Executor</a> (<a class="el" href="namespaceprocess.html">process</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classnet_1_1MAC.html">MAC</a> (<a class="el" href="namespacenet.html">net</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1slave_1_1PosixCpuIsolatorProcess.html">PosixCpuIsolatorProcess</a> (<a class="el" href="namespacemesos_1_1internal_1_1slave.html">mesos::internal::slave</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structproc_1_1SystemStatus.html">SystemStatus</a> (<a class="el" href="namespaceproc.html">proc</a>)&#160;&#160;&#160;</td></tr>
-<tr><td valign="top"><a class="el" href="classmesos_1_1internal_1_1tests_1_1ActiveUserTestHelper.html">ActiveUserTestHelper</a> (<a class="el" href="namespacemesos_1_1internal_1_1tests.html">mesos::internal::tests</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1Executor.html">Executor</a> (<a class="el" href="namespacemesos.html">mesos</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structmesos_1_1internal_1_1master_1_1Machine.html">Machine</a> (<a class="el" href="namespacemesos_1_1internal_1_1master.html">mesos::internal::master</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1slave_1_1PosixDiskIsolatorProcess.html">PosixDiskIsolatorProcess</a> (<a class="el" href="namespacemesos_1_1internal_1_1slave.html">mesos::internal::slave</a>)&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_T"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;T
 &#160;&#160;</div></td></tr></table>
+<tr><td valign="top"><a class="el" href="classrouting_1_1action_1_1Action.html">Action</a> (<a class="el" href="namespacerouting_1_1action.html">routing::action</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1slave_1_1Executor.html">Executor</a> (<a class="el" href="namespacemesos_1_1internal_1_1slave.html">mesos::internal::slave</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1log_1_1Log_1_1Position.html">Log::Position</a> (<a class="el" href="namespacemesos_1_1log.html">mesos::log</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classprocess_1_1System.html">System</a> (<a class="el" href="namespaceprocess.html">process</a>)&#160;&#160;&#160;</td></tr>
+<tr><td valign="top"><a class="el" href="classmesos_1_1internal_1_1tests_1_1ActiveUserTestHelper.html">ActiveUserTestHelper</a> (<a class="el" href="namespacemesos_1_1internal_1_1tests.html">mesos::internal::tests</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classprocess_1_1Executor.html">Executor</a> (<a class="el" href="namespaceprocess.html">process</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classnet_1_1MAC.html">MAC</a> (<a class="el" href="namespacenet.html">net</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1slave_1_1PosixCpuIsolatorProcess.html">PosixCpuIsolatorProcess</a> (<a class="el" href="namespacemesos_1_1internal_1_1slave.html">mesos::internal::slave</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structproc_1_1SystemStatus.html">SystemStatus</a> (<a class="el" href="namespaceproc.html">proc</a>)&#160;&#160;&#160;</td></tr>
+<tr><td valign="top"><a class="el" href="classprocess_1_1network_1_1inet4_1_1Address.html">Address</a> (<a class="el" href="namespaceprocess_1_1network_1_1inet4.html">process::network::inet4</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1Executor.html">Executor</a> (<a class="el" href="namespacemesos.html">mesos</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structmesos_1_1internal_1_1master_1_1Machine.html">Machine</a> (<a class="el" href="namespacemesos_1_1internal_1_1master.html">mesos::internal::master</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1slave_1_1PosixDiskIsolatorProcess.html">PosixDiskIsolatorProcess</a> (<a class="el" href="namespacemesos_1_1internal_1_1slave.html">mesos::internal::slave</a>)&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_T"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;T&#160;&#160;</div></td>
 </tr></table>
 </td></tr>
-<tr><td valign="top"><a class="el" href="classprocess_1_1network_1_1inet4_1_1Address.html">Address</a> (<a class="el" href="namespaceprocess_1_1network_1_1inet4.html">process::network::inet4</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1ExecutorDriver.html">ExecutorDriver</a> (<a class="el" href="namespacemesos.html">mesos</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess_1_1Slave_1_1Maintenance.html">HierarchicalAllocatorProcess::Slave::Maintenance</a> (<a class="el" href="namespacemesos_1_1internal_1_1master_1_1allocator_1_1internal.html">mesos::internal::master::allocator::internal</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1slave_1_1PosixFilesystemIsolatorProcess.html">PosixFilesystemIsolatorProcess</a> (<a class="el" href="namespacemesos_1_1internal_1_1slave.html">mesos::internal::slave</a>)&#160;&
 #160;&#160;</td></tr>
-<tr><td valign="top"><a class="el" href="classprocess_1_1network_1_1inet6_1_1Address.html">Address</a> (<a class="el" href="namespaceprocess_1_1network_1_1inet6.html">process::network::inet6</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structmesos_1_1internal_1_1slave_1_1paths_1_1ExecutorRunPath.html">ExecutorRunPath</a> (<a class="el" href="namespacemesos_1_1internal_1_1slave_1_1paths.html">mesos::internal::slave::paths</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1master_1_1MarkSlaveGone.html">MarkSlaveGone</a> (<a class="el" href="namespacemesos_1_1internal_1_1master.html">mesos::internal::master</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1slave_1_1PosixIsolatorProcess.html">PosixIsolatorProcess</a> (<a class="el" href="namespacemesos_1_1internal_1_1slave.html">mesos::internal::slave</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structmesos_1_1internal_1_
 1slave_1_1state_1_1TaskState.html">TaskState</a> (<a class="el" href="namespacemesos_1_1internal_1_1slave_1_1state.html">mesos::internal::slave::state</a>)&#160;&#160;&#160;</td></tr>
-<tr><td valign="top"><a class="el" href="classprocess_1_1network_1_1unix_1_1Address.html">Address</a> (<a class="el" href="namespaceprocess_1_1network_1_1unix.html">process::network::unix</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structmesos_1_1internal_1_1slave_1_1state_1_1ExecutorState.html">ExecutorState</a> (<a class="el" href="namespacemesos_1_1internal_1_1slave_1_1state.html">mesos::internal::slave::state</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1master_1_1MarkSlaveReachable.html">MarkSlaveReachable</a> (<a class="el" href="namespacemesos_1_1internal_1_1master.html">mesos::internal::master</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1slave_1_1PosixMemIsolatorProcess.html">PosixMemIsolatorProcess</a> (<a class="el" href="namespacemesos_1_1internal_1_1slave.html">mesos::internal::slave</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1int
 ernal_1_1slave_1_1TaskStatusUpdateManager.html">TaskStatusUpdateManager</a> (<a class="el" href="namespacemesos_1_1internal_1_1slave.html">mesos::internal::slave</a>)&#160;&#160;&#160;</td></tr>
-<tr><td valign="top"><a class="el" href="classprocess_1_1network_1_1Address.html">Address</a> (<a class="el" href="namespaceprocess_1_1network.html">process::network</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structprocess_1_1ExitedEvent.html">ExitedEvent</a> (<a class="el" href="namespaceprocess.html">process</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1master_1_1MarkSlaveUnreachable.html">MarkSlaveUnreachable</a> (<a class="el" href="namespacemesos_1_1internal_1_1master.html">mesos::internal::master</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1slave_1_1PosixRLimitsIsolatorProcess.html">PosixRLimitsIsolatorProcess</a> (<a class="el" href="namespacemesos_1_1internal_1_1slave.html">mesos::internal::slave</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structmesos_1_1internal_1_1slave_1_1TaskStatusUpdateStream.html">TaskStatusUpdateStream</a> (<a class="el" hr
 ef="namespacemesos_1_1internal_1_1slave.html">mesos::internal::slave</a>)&#160;&#160;&#160;</td></tr>
-<tr><td valign="top"><a class="el" href="classprocess_1_1network_1_1inet_1_1Address.html">Address</a> (<a class="el" href="namespaceprocess_1_1network_1_1inet.html">process::network::inet</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structlambda_1_1internal_1_1Expand.html">Expand</a> (<a class="el" href="namespacelambda_1_1internal.html">lambda::internal</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1tests_1_1cluster_1_1Master.html">Master</a> (<a class="el" href="namespacemesos_1_1internal_1_1tests_1_1cluster.html">mesos::internal::tests::cluster</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structprocess_1_1http_1_1PreconditionFailed.html">PreconditionFailed</a> (<a class="el" href="namespaceprocess_1_1http.html">process::http</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structmesos_1_1internal_1_1checks_1_1check_1_1Tcp.html">Tcp</a> (<a class="el" href="namespacemesos_1_1internal_1_
 1checks_1_1check.html">mesos::internal::checks::check</a>)&#160;&#160;&#160;</td></tr>
-<tr><td valign="top"><a class="el" href="classmesos_1_1resource__provider_1_1AdmitResourceProvider.html">AdmitResourceProvider</a> (<a class="el" href="namespacemesos_1_1resource__provider.html">mesos::resource_provider</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structlambda_1_1internal_1_1Expand_3_010_01_4.html">Expand&lt; 0 &gt;</a> (<a class="el" href="namespacelambda_1_1internal.html">lambda::internal</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1master_1_1Master.html">Master</a> (<a class="el" href="namespacemesos_1_1internal_1_1master.html">mesos::internal::master</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structJSON_1_1internal_1_1Prefer.html">Prefer</a> (<a class="el" href="namespaceJSON_1_1internal.html">JSON::internal</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classTemporaryDirectoryTest.html">TemporaryDirectoryTest</a>&#160;&#160;&#160;</td></tr>
-<tr><td valign="top"><a class="el" href="classmesos_1_1internal_1_1master_1_1AdmitSlave.html">AdmitSlave</a> (<a class="el" href="namespacemesos_1_1internal_1_1master.html">mesos::internal::master</a>)&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_F"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;F&#160;&#160;</div></td></tr></table>
+<tr><td valign="top"><a class="el" href="classprocess_1_1network_1_1inet6_1_1Address.html">Address</a> (<a class="el" href="namespaceprocess_1_1network_1_1inet6.html">process::network::inet6</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1ExecutorDriver.html">ExecutorDriver</a> (<a class="el" href="namespacemesos.html">mesos</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess_1_1Slave_1_1Maintenance.html">HierarchicalAllocatorProcess::Slave::Maintenance</a> (<a class="el" href="namespacemesos_1_1internal_1_1master_1_1allocator_1_1internal.html">mesos::internal::master::allocator::internal</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1slave_1_1PosixFilesystemIsolatorProcess.html">PosixFilesystemIsolatorProcess</a> (<a class="el" href="namespacemesos_1_1internal_1_1slave.html">mesos::internal::slave</a>)&#160;&
 #160;&#160;</td></tr>
+<tr><td valign="top"><a class="el" href="classprocess_1_1network_1_1unix_1_1Address.html">Address</a> (<a class="el" href="namespaceprocess_1_1network_1_1unix.html">process::network::unix</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structmesos_1_1internal_1_1slave_1_1paths_1_1ExecutorRunPath.html">ExecutorRunPath</a> (<a class="el" href="namespacemesos_1_1internal_1_1slave_1_1paths.html">mesos::internal::slave::paths</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1master_1_1MarkSlaveGone.html">MarkSlaveGone</a> (<a class="el" href="namespacemesos_1_1internal_1_1master.html">mesos::internal::master</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1slave_1_1PosixIsolatorProcess.html">PosixIsolatorProcess</a> (<a class="el" href="namespacemesos_1_1internal_1_1slave.html">mesos::internal::slave</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structmesos_1_1internal_1_1sl
 ave_1_1state_1_1TaskState.html">TaskState</a> (<a class="el" href="namespacemesos_1_1internal_1_1slave_1_1state.html">mesos::internal::slave::state</a>)&#160;&#160;&#160;</td></tr>
+<tr><td valign="top"><a class="el" href="classprocess_1_1network_1_1Address.html">Address</a> (<a class="el" href="namespaceprocess_1_1network.html">process::network</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structmesos_1_1internal_1_1slave_1_1state_1_1ExecutorState.html">ExecutorState</a> (<a class="el" href="namespacemesos_1_1internal_1_1slave_1_1state.html">mesos::internal::slave::state</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1master_1_1MarkSlaveReachable.html">MarkSlaveReachable</a> (<a class="el" href="namespacemesos_1_1internal_1_1master.html">mesos::internal::master</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1slave_1_1PosixMemIsolatorProcess.html">PosixMemIsolatorProcess</a> (<a class="el" href="namespacemesos_1_1internal_1_1slave.html">mesos::internal::slave</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1slave_1_1Task
 StatusUpdateManager.html">TaskStatusUpdateManager</a> (<a class="el" href="namespacemesos_1_1internal_1_1slave.html">mesos::internal::slave</a>)&#160;&#160;&#160;</td></tr>
+<tr><td valign="top"><a class="el" href="classprocess_1_1network_1_1inet_1_1Address.html">Address</a> (<a class="el" href="namespaceprocess_1_1network_1_1inet.html">process::network::inet</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structprocess_1_1ExitedEvent.html">ExitedEvent</a> (<a class="el" href="namespaceprocess.html">process</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1master_1_1MarkSlaveUnreachable.html">MarkSlaveUnreachable</a> (<a class="el" href="namespacemesos_1_1internal_1_1master.html">mesos::internal::master</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1slave_1_1PosixRLimitsIsolatorProcess.html">PosixRLimitsIsolatorProcess</a> (<a class="el" href="namespacemesos_1_1internal_1_1slave.html">mesos::internal::slave</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structmesos_1_1internal_1_1slave_1_1TaskStatusUpdateStream.html">TaskStatusUpdateStream
 </a> (<a class="el" href="namespacemesos_1_1internal_1_1slave.html">mesos::internal::slave</a>)&#160;&#160;&#160;</td></tr>
+<tr><td valign="top"><a class="el" href="classmesos_1_1resource__provider_1_1AdmitResourceProvider.html">AdmitResourceProvider</a> (<a class="el" href="namespacemesos_1_1resource__provider.html">mesos::resource_provider</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structlambda_1_1internal_1_1Expand.html">Expand</a> (<a class="el" href="namespacelambda_1_1internal.html">lambda::internal</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1tests_1_1cluster_1_1Master.html">Master</a> (<a class="el" href="namespacemesos_1_1internal_1_1tests_1_1cluster.html">mesos::internal::tests::cluster</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structprocess_1_1http_1_1PreconditionFailed.html">PreconditionFailed</a> (<a class="el" href="namespaceprocess_1_1http.html">process::http</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structmesos_1_1internal_1_1checks_1_1check_1_1Tcp.html">Tcp</a> (<a class="el" hre
 f="namespacemesos_1_1internal_1_1checks_1_1check.html">mesos::internal::checks::check</a>)&#160;&#160;&#160;</td></tr>
+<tr><td valign="top"><a class="el" href="classmesos_1_1internal_1_1master_1_1AdmitSlave.html">AdmitSlave</a> (<a class="el" href="namespacemesos_1_1internal_1_1master.html">mesos::internal::master</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structlambda_1_1internal_1_1Expand_3_010_01_4.html">Expand&lt; 0 &gt;</a> (<a class="el" href="namespacelambda_1_1internal.html">lambda::internal</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1master_1_1Master.html">Master</a> (<a class="el" href="namespacemesos_1_1internal_1_1master.html">mesos::internal::master</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structJSON_1_1internal_1_1Prefer.html">Prefer</a> (<a class="el" href="namespaceJSON_1_1internal.html">JSON::internal</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classTemporaryDirectoryTest.html">TemporaryDirectoryTest</a>&#160;&#160;&#160;</td></tr>
+<tr><td valign="top"><a class="el" href="structmesos_1_1internal_1_1master_1_1allocator_1_1DRFSorter_1_1Node_1_1Allocation.html">DRFSorter::Node::Allocation</a> (<a class="el" href="namespacemesos_1_1internal_1_1master_1_1allocator.html">mesos::internal::master::allocator</a>)&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_F"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;F&#160;&#160;</div></td></tr></table>
 </td><td valign="top"><a class="el" href="classmesos_1_1master_1_1contender_1_1MasterContender.html">MasterContender</a> (<a class="el" href="namespacemesos_1_1master_1_1contender.html">mesos::master::contender</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structprocess_1_1http_1_1authentication_1_1Principal.html">Principal</a> (<a class="el" href="namespaceprocess_1_1http_1_1authentication.html">process::http::authentication</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structprocess_1_1http_1_1TemporaryRedirect.html">TemporaryRedirect</a> (<a class="el" href="namespaceprocess_1_1http.html">process::http</a>)&#160;&#160;&#160;</td></tr>
-<tr><td valign="top"><a class="el" href="structmesos_1_1internal_1_1master_1_1allocator_1_1DRFSorter_1_1Node_1_1Allocation.html">DRFSorter::Node::Allocation</a> (<a class="el" href="namespacemesos_1_1internal_1_1master_1_1allocator.html">mesos::internal::master::allocator</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1master_1_1detector_1_1MasterDetector.html">MasterDetector</a> (<a class="el" href="namespacemesos_1_1master_1_1detector.html">mesos::master::detector</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structmesos_1_1internal_1_1tests_1_1ParamExecutorType_1_1Printer.html">ParamExecutorType::Printer</a> (<a class="el" href="namespacemesos_1_1internal_1_1tests.html">mesos::internal::tests</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structrouting_1_1action_1_1Terminal.html">Terminal</a> (<a class="el" href="namespacerouting_1_1action.html">routing::action</a>)&#160;&#160;&#160;</td></tr>
-<tr><td valign="top"><a class="el" href="structmesos_1_1internal_1_1master_1_1allocator_1_1RandomSorter_1_1Node_1_1Allocation.html">RandomSorter::Node::Allocation</a> (<a class="el" href="namespacemesos_1_1internal_1_1master_1_1allocator.html">mesos::internal::master::allocator</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structprocess_1_1Failure.html">Failure</a> (<a class="el" href="namespaceprocess.html">process</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1resource__provider_1_1MasterRegistrar.html">MasterRegistrar</a> (<a class="el" href="namespacemesos_1_1resource__provider.html">mesos::resource_provider</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classrouting_1_1filter_1_1Priority.html">Priority</a> (<a class="el" href="namespacerouting_1_1filter.html">routing::filter</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structprocess_1_1TerminateEvent.html">TerminateEvent</a> (<a class="el" href
 ="namespaceprocess.html">process</a>)&#160;&#160;&#160;</td></tr>
-<tr><td valign="top"><a class="el" href="classmesos_1_1allocator_1_1Allocator.html">Allocator</a> (<a class="el" href="namespacemesos_1_1allocator.html">mesos::allocator</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structJSON_1_1False.html">False</a> (<a class="el" href="namespaceJSON.html">JSON</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structzookeeper_1_1Group_1_1Membership.html">Group::Membership</a> (<a class="el" href="namespacezookeeper.html">zookeeper</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structos_1_1Process.html">Process</a> (<a class="el" href="namespaceos.html">os</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1tests_1_1TestAllocator.html">TestAllocator</a> (<a class="el" href="namespacemesos_1_1internal_1_1tests.html">mesos::internal::tests</a>)&#160;&#160;&#160;</td></tr>
-<tr><td valign="top"><a class="el" href="classmesos_1_1modules_1_1Anonymous.html">Anonymous</a> (<a class="el" href="namespacemesos_1_1modules.html">mesos::modules</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1uri_1_1Fetcher.html">Fetcher</a> (<a class="el" href="namespacemesos_1_1uri.html">mesos::uri</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structos_1_1Memory.html">Memory</a> (<a class="el" href="namespaceos.html">os</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classprocess_1_1Process.html">Process</a> (<a class="el" href="namespaceprocess.html">process</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1tests_1_1TestContainerizer.html">TestContainerizer</a> (<a class="el" href="namespacemesos_1_1internal_1_1tests.html">mesos::internal::tests</a>)&#160;&#160;&#160;</td></tr>
-<tr><td valign="top"><a class="el" href="classmesos_1_1internal_1_1slave_1_1AppcRuntimeIsolatorProcess.html">AppcRuntimeIsolatorProcess</a> (<a class="el" href="namespacemesos_1_1internal_1_1slave.html">mesos::internal::slave</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1slave_1_1Fetcher.html">Fetcher</a> (<a class="el" href="namespacemesos_1_1internal_1_1slave.html">mesos::internal::slave</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structos_1_1Fork_1_1Tree_1_1Memory.html">Fork::Tree::Memory</a> (<a class="el" href="namespaceos.html">os</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classprocess_1_1ProcessBase.html">ProcessBase</a> (<a class="el" href="namespaceprocess.html">process</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classstout_1_1internal_1_1tests_1_1TestFilter.html">TestFilter</a> (<a class="el" href="namespacestout_1_1internal_1_1tests.html">stout::internal::tests</a>)&#1
 60;&#160;&#160;</td></tr>
-<tr><td valign="top"><a class="el" href="classos_1_1raw_1_1Argv.html">Argv</a> (<a class="el" href="namespaceos_1_1raw.html">os::raw</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1slave_1_1appc_1_1Fetcher.html">Fetcher</a> (<a class="el" href="namespacemesos_1_1internal_1_1slave_1_1appc.html">mesos::internal::slave::appc</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classprocess_1_1MemoryProfiler.html">MemoryProfiler</a> (<a class="el" href="namespaceprocess.html">process</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1capabilities_1_1ProcessCapabilities.html">ProcessCapabilities</a> (<a class="el" href="namespacemesos_1_1internal_1_1capabilities.html">mesos::internal::capabilities</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1tests_1_1TestingMesosSchedulerDriver.html">TestingMesosSchedulerDriver</a> (<a class="el" href="namespacemesos_1_
 1internal_1_1tests.html">mesos::internal::tests</a>)&#160;&#160;&#160;</td></tr>
-<tr><td valign="top"><a class="el" href="structJSON_1_1Array.html">Array</a> (<a class="el" href="namespaceJSON.html">JSON</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1slave_1_1FetcherProcess.html">FetcherProcess</a> (<a class="el" href="namespacemesos_1_1internal_1_1slave.html">mesos::internal::slave</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1slave_1_1MemorySubsystemProcess.html">MemorySubsystemProcess</a> (<a class="el" href="namespacemesos_1_1internal_1_1slave.html">mesos::internal::slave</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structinternal_1_1windows_1_1ProcessData.html">ProcessData</a> (<a class="el" href="namespaceinternal_1_1windows.html">internal::windows</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1tests_1_1TestLauncher.html">TestLauncher</a> (<a class="el" href="namespacemesos_1_1internal_1_1tests.html">mesos::in
 ternal::tests</a>)&#160;&#160;&#160;</td></tr>
-<tr><td valign="top"><a class="el" href="classJSON_1_1ArrayWriter.html">ArrayWriter</a> (<a class="el" href="namespaceJSON.html">JSON</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classJvm_1_1Field.html">Jvm::Field</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1tests_1_1MemoryTestHelper.html">MemoryTestHelper</a> (<a class="el" href="namespacemesos_1_1internal_1_1tests.html">mesos::internal::tests</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classprocess_1_1ProcessReference.html">ProcessReference</a> (<a class="el" href="namespaceprocess.html">process</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1tests_1_1scheduler_1_1TestMesos.html">TestMesos</a> (<a class="el" href="namespacemesos_1_1internal_1_1tests_1_1scheduler.html">mesos::internal::tests::scheduler</a>)&#160;&#160;&#160;</td></tr>
-<tr><td valign="top"><a class="el" href="classprocess_1_1AsyncExecutor.html">AsyncExecutor</a> (<a class="el" href="namespaceprocess.html">process</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classjava_1_1io_1_1File.html">File</a> (<a class="el" href="namespacejava_1_1io.html">java::io</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1v1_1_1executor_1_1Mesos.html">Mesos</a> (<a class="el" href="namespacemesos_1_1v1_1_1executor.html">mesos::v1::executor</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structproc_1_1ProcessStatus.html">ProcessStatus</a> (<a class="el" href="namespaceproc.html">proc</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1tests_1_1executor_1_1TestMesos.html">TestMesos</a> (<a class="el" href="namespacemesos_1_1internal_1_1tests_1_1executor.html">mesos::internal::tests::executor</a>)&#160;&#160;&#160;</td></tr>
-<tr><td valign="top"><a class="el" href="structAtLeastOneIsSameOrConvertible.html">AtLeastOneIsSameOrConvertible</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="clasself_1_1File.html">File</a> (<a class="el" href="namespaceelf.html">elf</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1v1_1_1scheduler_1_1Mesos.html">Mesos</a> (<a class="el" href="namespacemesos_1_1v1_1_1scheduler.html">mesos::v1::scheduler</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classos_1_1ProcessTree.html">ProcessTree</a> (<a class="el" href="namespaceos.html">os</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classTestModule.html">TestModule</a>&#160;&#160;&#160;</td></tr>
-<tr><td valign="top"><a class="el" href="structAtLeastOneIsSameOrConvertible_3_01U_00_01T_00_01Ts_8_8_8_01_4.html">AtLeastOneIsSameOrConvertible&lt; U, T, Ts... &gt;</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classprocess_1_1FileEncoder.html">FileEncoder</a> (<a class="el" href="namespaceprocess.html">process</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1master_1_1allocator_1_1MesosAllocator.html">MesosAllocator</a> (<a class="el" href="namespacemesos_1_1internal_1_1master_1_1allocator.html">mesos::internal::master::allocator</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classProcessWatcher.html">ProcessWatcher</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classprocess_1_1TestsFilter.html">TestsFilter</a> (<a class="el" href="namespaceprocess.html">process</a>)&#160;&#160;&#160;</td></tr>
-<tr><td valign="top"><a class="el" href="classmesos_1_1Attributes.html">Attributes</a> (<a class="el" href="namespacemesos.html">mesos</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1Files.html">Files</a> (<a class="el" href="namespacemesos_1_1internal.html">mesos::internal</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1master_1_1allocator_1_1MesosAllocatorProcess.html">MesosAllocatorProcess</a> (<a class="el" href="namespacemesos_1_1internal_1_1master_1_1allocator.html">mesos::internal::master::allocator</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classprocess_1_1EventQueue_1_1Producer.html">EventQueue::Producer</a> (<a class="el" href="namespaceprocess.html">process</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1tests_1_1TestStore.html">TestStore</a> (<a class="el" href="namespacemesos_1_1internal_1_1tests.html">mesos::internal::tests<
 /a>)&#160;&#160;&#160;</td></tr>
-<tr><td valign="top"><a class="el" href="classmesos_1_1v1_1_1Attributes.html">Attributes</a> (<a class="el" href="namespacemesos_1_1v1.html">mesos::v1</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1FilesError.html">FilesError</a> (<a class="el" href="namespacemesos_1_1internal.html">mesos::internal</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1v1_1_1executor_1_1MesosBase.html">MesosBase</a> (<a class="el" href="namespacemesos_1_1v1_1_1executor.html">mesos::v1::executor</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structmesos_1_1DiskProfileAdaptor_1_1ProfileInfo.html">DiskProfileAdaptor::ProfileInfo</a> (<a class="el" href="namespacemesos.html">mesos</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1tests_1_1ZooKeeperTest_1_1TestWatcher.html">ZooKeeperTest::TestWatcher</a> (<a class="el" href="namespacemesos_1_1internal_1_1tests.html">mesos::internal::
 tests</a>)&#160;&#160;&#160;</td></tr>
-<tr><td valign="top"><a class="el" href="classmesos_1_1internal_1_1slave_1_1AufsBackend.html">AufsBackend</a> (<a class="el" href="namespacemesos_1_1internal_1_1slave.html">mesos::internal::slave</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classorg_1_1apache_1_1zookeeper_1_1server_1_1persistence_1_1FileTxnSnapLog.html">FileTxnSnapLog</a> (<a class="el" href="namespaceorg_1_1apache_1_1zookeeper_1_1server_1_1persistence.html">org::apache::zookeeper::server::persistence</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1v1_1_1scheduler_1_1MesosBase.html">MesosBase</a> (<a class="el" href="namespacemesos_1_1v1_1_1scheduler.html">mesos::v1::scheduler</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classprocess_1_1Profiler.html">Profiler</a> (<a class="el" href="namespaceprocess.html">process</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classjava_1_1lang_1_1Throwable.html">Throwable</a> (<a class="el" href="
 namespacejava_1_1lang.html">java::lang</a>)&#160;&#160;&#160;</td></tr>
-<tr><td valign="top"><a class="el" href="classmesos_1_1http_1_1authentication_1_1Authenticatee.html">Authenticatee</a> (<a class="el" href="namespacemesos_1_1http_1_1authentication.html">mesos::http::authentication</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classprocess_1_1Filter.html">Filter</a> (<a class="el" href="namespaceprocess.html">process</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1slave_1_1MesosContainerizer.html">MesosContainerizer</a> (<a class="el" href="namespacemesos_1_1internal_1_1slave.html">mesos::internal::slave</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classprocess_1_1Promise.html">Promise</a> (<a class="el" href="namespaceprocess.html">process</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classprocess_1_1internal_1_1ThunkProcess.html">ThunkProcess</a> (<a class="el" href="namespaceprocess_1_1internal.html">process::internal</a>)&#160;&#160;&#160;</td></tr>
-<tr><td valign="top"><a class="el" href="classmesos_1_1Authenticatee.html">Authenticatee</a> (<a class="el" href="namespacemesos.html">mesos</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structrouting_1_1filter_1_1Filter.html">Filter</a> (<a class="el" href="namespacerouting_1_1filter.html">routing::filter</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1slave_1_1MesosContainerizerLaunch.html">MesosContainerizerLaunch</a> (<a class="el" href="namespacemesos_1_1internal_1_1slave.html">mesos::internal::slave</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structmesos_1_1internal_1_1cram__md5_1_1Property.html">Property</a> (<a class="el" href="namespacemesos_1_1internal_1_1cram__md5.html">mesos::internal::cram_md5</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classprocess_1_1Time.html">Time</a> (<a class="el" href="namespaceprocess.html">process</a>)&#160;&#160;&#160;</td></tr>
-<tr><td valign="top"><a class="el" href="structzookeeper_1_1Authentication.html">Authentication</a> (<a class="el" href="namespacezookeeper.html">zookeeper</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classprocess_1_1FilterTestEventListener.html">FilterTestEventListener</a> (<a class="el" href="namespaceprocess.html">process</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1slave_1_1MesosContainerizerMount.html">MesosContainerizerMount</a> (<a class="el" href="namespacemesos_1_1internal_1_1slave.html">mesos::internal::slave</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structJSON_1_1Protobuf.html">Protobuf</a> (<a class="el" href="namespaceJSON.html">JSON</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classprocess_1_1Timeout.html">Timeout</a> (<a class="el" href="namespaceprocess.html">process</a>)&#160;&#160;&#160;</td></tr>
-<tr><td valign="top"><a class="el" href="structprocess_1_1http_1_1authentication_1_1AuthenticationResult.html">AuthenticationResult</a> (<a class="el" href="namespaceprocess_1_1http_1_1authentication.html">process::http::authentication</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classprocess_1_1firewall_1_1FirewallRule.html">FirewallRule</a> (<a class="el" href="namespaceprocess_1_1firewall.html">process::firewall</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1slave_1_1MesosContainerizerProcess.html">MesosContainerizerProcess</a> (<a class="el" href="namespacemesos_1_1internal_1_1slave.html">mesos::internal::slave</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classProtobufProcess.html">ProtobufProcess</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classprocess_1_1Timer.html">Timer</a> (<a class="el" href="namespaceprocess.html">process</a>)&#160;&#160;&#160;</td></tr>
-<tr><td valign="top"><a class="el" href="classmesos_1_1Authenticator.html">Authenticator</a> (<a class="el" href="namespacemesos.html">mesos</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structflags_1_1Flag.html">Flag</a> (<a class="el" href="namespaceflags.html">flags</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1MesosExecutorDriver.html">MesosExecutorDriver</a> (<a class="el" href="namespacemesos.html">mesos</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structProtocol.html">Protocol</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classprocess_1_1metrics_1_1Timer.html">Timer</a> (<a class="el" href="namespaceprocess_1_1metrics.html">process::metrics</a>)&#160;&#160;&#160;</td></tr>
-<tr><td valign="top"><a class="el" href="classprocess_1_1http_1_1authentication_1_1Authenticator.html">Authenticator</a> (<a class="el" href="namespaceprocess_1_1http_1_1authentication.html">process::http::authentication</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1log_1_1tool_1_1Benchmark_1_1Flags.html">Benchmark::Flags</a> (<a class="el" href="namespacemesos_1_1internal_1_1log_1_1tool.html">mesos::internal::log::tool</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structmesos_1_1python_1_1MesosExecutorDriverImpl.html">MesosExecutorDriverImpl</a> (<a class="el" href="namespacemesos_1_1python.html">mesos::python</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1slave_1_1Provisioner.html">Provisioner</a> (<a class="el" href="namespacemesos_1_1internal_1_1slave.html">mesos::internal::slave</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structprocess_1_1TimeSeries.html"
 >TimeSeries</a> (<a class="el" href="namespaceprocess.html">process</a>)&#160;&#160;&#160;</td></tr>
-<tr><td valign="top"><a class="el" href="classprocess_1_1http_1_1authentication_1_1AuthenticatorManager.html">AuthenticatorManager</a> (<a class="el" href="namespaceprocess_1_1http_1_1authentication.html">process::http::authentication</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structmesos_1_1internal_1_1tests_1_1ActiveUserTestHelper_1_1Flags.html">ActiveUserTestHelper::Flags</a> (<a class="el" href="namespacemesos_1_1internal_1_1tests.html">mesos::internal::tests</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1slave_1_1MesosIsolator.html">MesosIsolator</a> (<a class="el" href="namespacemesos_1_1internal_1_1slave.html">mesos::internal::slave</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1slave_1_1ProvisionerProcess.html">ProvisionerProcess</a> (<a class="el" href="namespacemesos_1_1internal_1_1slave.html">mesos::internal::slave</a>)&#160;&#160;&#160;</td><td valign="top"><a class
 ="el" href="classmesos_1_1internal_1_1log_1_1tool_1_1Tool.html">Tool</a> (<a class="el" href="namespacemesos_1_1internal_1_1log_1_1tool.html">mesos::internal::log::tool</a>)&#160;&#160;&#160;</td></tr>
-<tr><td valign="top"><a class="el" href="classmesos_1_1Authorizer.html">Authorizer</a> (<a class="el" href="namespacemesos.html">mesos</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1log_1_1tool_1_1Initialize_1_1Flags.html">Initialize::Flags</a> (<a class="el" href="namespacemesos_1_1internal_1_1log_1_1tool.html">mesos::internal::log::tool</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1slave_1_1MesosIsolatorProcess.html">MesosIsolatorProcess</a> (<a class="el" href="namespacemesos_1_1internal_1_1slave.html">mesos::internal::slave</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structmesos_1_1internal_1_1slave_1_1ProvisionInfo.html">ProvisionInfo</a> (<a class="el" href="namespacemesos_1_1internal_1_1slave.html">mesos::internal::slave</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structJSON_1_1True.html">True</a> (<a class="el" href="namespaceJSON.html">JSON</a>)&#16
 0;&#160;&#160;</td></tr>
-<tr><td valign="top"><a class="el" href="classprocess_1_1internal_1_1AwaitProcess.html">AwaitProcess</a> (<a class="el" href="namespaceprocess_1_1internal.html">process::internal</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structmesos_1_1internal_1_1tests_1_1CapabilitiesTestHelper_1_1Flags.html">CapabilitiesTestHelper::Flags</a> (<a class="el" href="namespacemesos_1_1internal_1_1tests.html">mesos::internal::tests</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1MesosSchedulerDriver.html">MesosSchedulerDriver</a> (<a class="el" href="namespacemesos.html">mesos</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classJSON_1_1Proxy.html">Proxy</a> (<a class="el" href="namespaceJSON.html">JSON</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classTry.html">Try</a>&#160;&#160;&#160;</td></tr>
+<tr><td valign="top"><a class="el" href="structmesos_1_1internal_1_1master_1_1allocator_1_1RandomSorter_1_1Node_1_1Allocation.html">RandomSorter::Node::Allocation</a> (<a class="el" href="namespacemesos_1_1internal_1_1master_1_1allocator.html">mesos::internal::master::allocator</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1master_1_1detector_1_1MasterDetector.html">MasterDetector</a> (<a class="el" href="namespacemesos_1_1master_1_1detector.html">mesos::master::detector</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structmesos_1_1internal_1_1tests_1_1ParamExecutorType_1_1Printer.html">ParamExecutorType::Printer</a> (<a class="el" href="namespacemesos_1_1internal_1_1tests.html">mesos::internal::tests</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structrouting_1_1action_1_1Terminal.html">Terminal</a> (<a class="el" href="namespacerouting_1_1action.html">routing::action</a>)&#160;&#160;&#160;</td></tr>
+<tr><td valign="top"><a class="el" href="classmesos_1_1allocator_1_1Allocator.html">Allocator</a> (<a class="el" href="namespacemesos_1_1allocator.html">mesos::allocator</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structprocess_1_1Failure.html">Failure</a> (<a class="el" href="namespaceprocess.html">process</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1resource__provider_1_1MasterRegistrar.html">MasterRegistrar</a> (<a class="el" href="namespacemesos_1_1resource__provider.html">mesos::resource_provider</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classrouting_1_1filter_1_1Priority.html">Priority</a> (<a class="el" href="namespacerouting_1_1filter.html">routing::filter</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structprocess_1_1TerminateEvent.html">TerminateEvent</a> (<a class="el" href="namespaceprocess.html">process</a>)&#160;&#160;&#160;</td></tr>
+<tr><td valign="top"><a class="el" href="classmesos_1_1modules_1_1Anonymous.html">Anonymous</a> (<a class="el" href="namespacemesos_1_1modules.html">mesos::modules</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structJSON_1_1False.html">False</a> (<a class="el" href="namespaceJSON.html">JSON</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structzookeeper_1_1Group_1_1Membership.html">Group::Membership</a> (<a class="el" href="namespacezookeeper.html">zookeeper</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classprocess_1_1Process.html">Process</a> (<a class="el" href="namespaceprocess.html">process</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1tests_1_1TestAllocator.html">TestAllocator</a> (<a class="el" href="namespacemesos_1_1internal_1_1tests.html">mesos::internal::tests</a>)&#160;&#160;&#160;</td></tr>
+<tr><td valign="top"><a class="el" href="classmesos_1_1internal_1_1slave_1_1AppcRuntimeIsolatorProcess.html">AppcRuntimeIsolatorProcess</a> (<a class="el" href="namespacemesos_1_1internal_1_1slave.html">mesos::internal::slave</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1uri_1_1Fetcher.html">Fetcher</a> (<a class="el" href="namespacemesos_1_1uri.html">mesos::uri</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structos_1_1Memory.html">Memory</a> (<a class="el" href="namespaceos.html">os</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structos_1_1Process.html">Process</a> (<a class="el" href="namespaceos.html">os</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1tests_1_1TestContainerizer.html">TestContainerizer</a> (<a class="el" href="namespacemesos_1_1internal_1_1tests.html">mesos::internal::tests</a>)&#160;&#160;&#160;</td></tr>
+<tr><td valign="top"><a class="el" href="classos_1_1raw_1_1Argv.html">Argv</a> (<a class="el" href="namespaceos_1_1raw.html">os::raw</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1slave_1_1Fetcher.html">Fetcher</a> (<a class="el" href="namespacemesos_1_1internal_1_1slave.html">mesos::internal::slave</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structos_1_1Fork_1_1Tree_1_1Memory.html">Fork::Tree::Memory</a> (<a class="el" href="namespaceos.html">os</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classprocess_1_1ProcessBase.html">ProcessBase</a> (<a class="el" href="namespaceprocess.html">process</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classstout_1_1internal_1_1tests_1_1TestFilter.html">TestFilter</a> (<a class="el" href="namespacestout_1_1internal_1_1tests.html">stout::internal::tests</a>)&#160;&#160;&#160;</td></tr>
+<tr><td valign="top"><a class="el" href="structJSON_1_1Array.html">Array</a> (<a class="el" href="namespaceJSON.html">JSON</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1slave_1_1appc_1_1Fetcher.html">Fetcher</a> (<a class="el" href="namespacemesos_1_1internal_1_1slave_1_1appc.html">mesos::internal::slave::appc</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classprocess_1_1MemoryProfiler.html">MemoryProfiler</a> (<a class="el" href="namespaceprocess.html">process</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1capabilities_1_1ProcessCapabilities.html">ProcessCapabilities</a> (<a class="el" href="namespacemesos_1_1internal_1_1capabilities.html">mesos::internal::capabilities</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1tests_1_1TestingMesosSchedulerDriver.html">TestingMesosSchedulerDriver</a> (<a class="el" href="namespacemesos_1_1internal_
 1_1tests.html">mesos::internal::tests</a>)&#160;&#160;&#160;</td></tr>
+<tr><td valign="top"><a class="el" href="classJSON_1_1ArrayWriter.html">ArrayWriter</a> (<a class="el" href="namespaceJSON.html">JSON</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1slave_1_1FetcherProcess.html">FetcherProcess</a> (<a class="el" href="namespacemesos_1_1internal_1_1slave.html">mesos::internal::slave</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1slave_1_1MemorySubsystemProcess.html">MemorySubsystemProcess</a> (<a class="el" href="namespacemesos_1_1internal_1_1slave.html">mesos::internal::slave</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structinternal_1_1windows_1_1ProcessData.html">ProcessData</a> (<a class="el" href="namespaceinternal_1_1windows.html">internal::windows</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1tests_1_1TestLauncher.html">TestLauncher</a> (<a class="el" href="namespacemesos_1_1internal_1_1tests.html
 ">mesos::internal::tests</a>)&#160;&#160;&#160;</td></tr>
+<tr><td valign="top"><a class="el" href="classprocess_1_1AsyncExecutor.html">AsyncExecutor</a> (<a class="el" href="namespaceprocess.html">process</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classJvm_1_1Field.html">Jvm::Field</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1tests_1_1MemoryTestHelper.html">MemoryTestHelper</a> (<a class="el" href="namespacemesos_1_1internal_1_1tests.html">mesos::internal::tests</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classprocess_1_1ProcessReference.html">ProcessReference</a> (<a class="el" href="namespaceprocess.html">process</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1tests_1_1scheduler_1_1TestMesos.html">TestMesos</a> (<a class="el" href="namespacemesos_1_1internal_1_1tests_1_1scheduler.html">mesos::internal::tests::scheduler</a>)&#160;&#160;&#160;</td></tr>
+<tr><td valign="top"><a class="el" href="structAtLeastOneIsSameOrConvertible.html">AtLeastOneIsSameOrConvertible</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classjava_1_1io_1_1File.html">File</a> (<a class="el" href="namespacejava_1_1io.html">java::io</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1v1_1_1executor_1_1Mesos.html">Mesos</a> (<a class="el" href="namespacemesos_1_1v1_1_1executor.html">mesos::v1::executor</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structproc_1_1ProcessStatus.html">ProcessStatus</a> (<a class="el" href="namespaceproc.html">proc</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1tests_1_1executor_1_1TestMesos.html">TestMesos</a> (<a class="el" href="namespacemesos_1_1internal_1_1tests_1_1executor.html">mesos::internal::tests::executor</a>)&#160;&#160;&#160;</td></tr>
+<tr><td valign="top"><a class="el" href="structAtLeastOneIsSameOrConvertible_3_01U_00_01T_00_01Ts_8_8_8_01_4.html">AtLeastOneIsSameOrConvertible&lt; U, T, Ts... &gt;</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="clasself_1_1File.html">File</a> (<a class="el" href="namespaceelf.html">elf</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1v1_1_1scheduler_1_1Mesos.html">Mesos</a> (<a class="el" href="namespacemesos_1_1v1_1_1scheduler.html">mesos::v1::scheduler</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classos_1_1ProcessTree.html">ProcessTree</a> (<a class="el" href="namespaceos.html">os</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classTestModule.html">TestModule</a>&#160;&#160;&#160;</td></tr>
+<tr><td valign="top"><a class="el" href="classmesos_1_1Attributes.html">Attributes</a> (<a class="el" href="namespacemesos.html">mesos</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classprocess_1_1FileEncoder.html">FileEncoder</a> (<a class="el" href="namespaceprocess.html">process</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1master_1_1allocator_1_1MesosAllocator.html">MesosAllocator</a> (<a class="el" href="namespacemesos_1_1internal_1_1master_1_1allocator.html">mesos::internal::master::allocator</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classProcessWatcher.html">ProcessWatcher</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classprocess_1_1TestsFilter.html">TestsFilter</a> (<a class="el" href="namespaceprocess.html">process</a>)&#160;&#160;&#160;</td></tr>
+<tr><td valign="top"><a class="el" href="classmesos_1_1v1_1_1Attributes.html">Attributes</a> (<a class="el" href="namespacemesos_1_1v1.html">mesos::v1</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1Files.html">Files</a> (<a class="el" href="namespacemesos_1_1internal.html">mesos::internal</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1master_1_1allocator_1_1MesosAllocatorProcess.html">MesosAllocatorProcess</a> (<a class="el" href="namespacemesos_1_1internal_1_1master_1_1allocator.html">mesos::internal::master::allocator</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classprocess_1_1EventQueue_1_1Producer.html">EventQueue::Producer</a> (<a class="el" href="namespaceprocess.html">process</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1tests_1_1TestStore.html">TestStore</a> (<a class="el" href="namespacemesos_1_1internal_1_1tests.html">mesos::
 internal::tests</a>)&#160;&#160;&#160;</td></tr>
+<tr><td valign="top"><a class="el" href="classmesos_1_1internal_1_1slave_1_1AufsBackend.html">AufsBackend</a> (<a class="el" href="namespacemesos_1_1internal_1_1slave.html">mesos::internal::slave</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1FilesError.html">FilesError</a> (<a class="el" href="namespacemesos_1_1internal.html">mesos::internal</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1v1_1_1executor_1_1MesosBase.html">MesosBase</a> (<a class="el" href="namespacemesos_1_1v1_1_1executor.html">mesos::v1::executor</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structmesos_1_1DiskProfileAdaptor_1_1ProfileInfo.html">DiskProfileAdaptor::ProfileInfo</a> (<a class="el" href="namespacemesos.html">mesos</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1tests_1_1ZooKeeperTest_1_1TestWatcher.html">ZooKeeperTest::TestWatcher</a> (<a class="el" href="namespacemesos
 _1_1internal_1_1tests.html">mesos::internal::tests</a>)&#160;&#160;&#160;</td></tr>
+<tr><td valign="top"><a class="el" href="classmesos_1_1http_1_1authentication_1_1Authenticatee.html">Authenticatee</a> (<a class="el" href="namespacemesos_1_1http_1_1authentication.html">mesos::http::authentication</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classorg_1_1apache_1_1zookeeper_1_1server_1_1persistence_1_1FileTxnSnapLog.html">FileTxnSnapLog</a> (<a class="el" href="namespaceorg_1_1apache_1_1zookeeper_1_1server_1_1persistence.html">org::apache::zookeeper::server::persistence</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1v1_1_1scheduler_1_1MesosBase.html">MesosBase</a> (<a class="el" href="namespacemesos_1_1v1_1_1scheduler.html">mesos::v1::scheduler</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classprocess_1_1Profiler.html">Profiler</a> (<a class="el" href="namespaceprocess.html">process</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classjava_1_1lang_1_1Throwable.html">Throwable</a> (<
 a class="el" href="namespacejava_1_1lang.html">java::lang</a>)&#160;&#160;&#160;</td></tr>
+<tr><td valign="top"><a class="el" href="classmesos_1_1Authenticatee.html">Authenticatee</a> (<a class="el" href="namespacemesos.html">mesos</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classprocess_1_1Filter.html">Filter</a> (<a class="el" href="namespaceprocess.html">process</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1slave_1_1MesosContainerizer.html">MesosContainerizer</a> (<a class="el" href="namespacemesos_1_1internal_1_1slave.html">mesos::internal::slave</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classprocess_1_1Promise.html">Promise</a> (<a class="el" href="namespaceprocess.html">process</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classprocess_1_1internal_1_1ThunkProcess.html">ThunkProcess</a> (<a class="el" href="namespaceprocess_1_1internal.html">process::internal</a>)&#160;&#160;&#160;</td></tr>
+<tr><td valign="top"><a class="el" href="structzookeeper_1_1Authentication.html">Authentication</a> (<a class="el" href="namespacezookeeper.html">zookeeper</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structrouting_1_1filter_1_1Filter.html">Filter</a> (<a class="el" href="namespacerouting_1_1filter.html">routing::filter</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1slave_1_1MesosContainerizerLaunch.html">MesosContainerizerLaunch</a> (<a class="el" href="namespacemesos_1_1internal_1_1slave.html">mesos::internal::slave</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structmesos_1_1internal_1_1cram__md5_1_1Property.html">Property</a> (<a class="el" href="namespacemesos_1_1internal_1_1cram__md5.html">mesos::internal::cram_md5</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classprocess_1_1Time.html">Time</a> (<a class="el" href="namespaceprocess.html">process</a>)&#160;&#160;&#160;</td></tr>
+<tr><td valign="top"><a class="el" href="structprocess_1_1http_1_1authentication_1_1AuthenticationResult.html">AuthenticationResult</a> (<a class="el" href="namespaceprocess_1_1http_1_1authentication.html">process::http::authentication</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classprocess_1_1FilterTestEventListener.html">FilterTestEventListener</a> (<a class="el" href="namespaceprocess.html">process</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1slave_1_1MesosContainerizerMount.html">MesosContainerizerMount</a> (<a class="el" href="namespacemesos_1_1internal_1_1slave.html">mesos::internal::slave</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structJSON_1_1Protobuf.html">Protobuf</a> (<a class="el" href="namespaceJSON.html">JSON</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classprocess_1_1Timeout.html">Timeout</a> (<a class="el" href="namespaceprocess.html">process</a>)&#160;&#160;&#
 160;</td></tr>
+<tr><td valign="top"><a class="el" href="classmesos_1_1Authenticator.html">Authenticator</a> (<a class="el" href="namespacemesos.html">mesos</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classprocess_1_1firewall_1_1FirewallRule.html">FirewallRule</a> (<a class="el" href="namespaceprocess_1_1firewall.html">process::firewall</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1slave_1_1MesosContainerizerProcess.html">MesosContainerizerProcess</a> (<a class="el" href="namespacemesos_1_1internal_1_1slave.html">mesos::internal::slave</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classProtobufProcess.html">ProtobufProcess</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classprocess_1_1Timer.html">Timer</a> (<a class="el" href="namespaceprocess.html">process</a>)&#160;&#160;&#160;</td></tr>
+<tr><td valign="top"><a class="el" href="classprocess_1_1http_1_1authentication_1_1Authenticator.html">Authenticator</a> (<a class="el" href="namespaceprocess_1_1http_1_1authentication.html">process::http::authentication</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structflags_1_1Flag.html">Flag</a> (<a class="el" href="namespaceflags.html">flags</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1MesosExecutorDriver.html">MesosExecutorDriver</a> (<a class="el" href="namespacemesos.html">mesos</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structProtocol.html">Protocol</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classprocess_1_1metrics_1_1Timer.html">Timer</a> (<a class="el" href="namespaceprocess_1_1metrics.html">process::metrics</a>)&#160;&#160;&#160;</td></tr>
+<tr><td valign="top"><a class="el" href="classprocess_1_1http_1_1authentication_1_1AuthenticatorManager.html">AuthenticatorManager</a> (<a class="el" href="namespaceprocess_1_1http_1_1authentication.html">process::http::authentication</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1log_1_1tool_1_1Benchmark_1_1Flags.html">Benchmark::Flags</a> (<a class="el" href="namespacemesos_1_1internal_1_1log_1_1tool.html">mesos::internal::log::tool</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structmesos_1_1python_1_1MesosExecutorDriverImpl.html">MesosExecutorDriverImpl</a> (<a class="el" href="namespacemesos_1_1python.html">mesos::python</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1slave_1_1Provisioner.html">Provisioner</a> (<a class="el" href="namespacemesos_1_1internal_1_1slave.html">mesos::internal::slave</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structprocess_1_1Ti
 meSeries.html">TimeSeries</a> (<a class="el" href="namespaceprocess.html">process</a>)&#160;&#160;&#160;</td></tr>
+<tr><td valign="top"><a class="el" href="classmesos_1_1Authorizer.html">Authorizer</a> (<a class="el" href="namespacemesos.html">mesos</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structmesos_1_1internal_1_1tests_1_1ActiveUserTestHelper_1_1Flags.html">ActiveUserTestHelper::Flags</a> (<a class="el" href="namespacemesos_1_1internal_1_1tests.html">mesos::internal::tests</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1slave_1_1MesosIsolator.html">MesosIsolator</a> (<a class="el" href="namespacemesos_1_1internal_1_1slave.html">mesos::internal::slave</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1slave_1_1ProvisionerProcess.html">ProvisionerProcess</a> (<a class="el" href="namespacemesos_1_1internal_1_1slave.html">mesos::internal::slave</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1log_1_1tool_1_1Tool.html">Tool</a> (<a class="el" href="namesp
 acemesos_1_1internal_1_1log_1_1tool.html">mesos::internal::log::tool</a>)&#160;&#160;&#160;</td></tr>
+<tr><td valign="top"><a class="el" href="classprocess_1_1internal_1_1AwaitProcess.html">AwaitProcess</a> (<a class="el" href="namespaceprocess_1_1internal.html">process::internal</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1log_1_1tool_1_1Initialize_1_1Flags.html">Initialize::Flags</a> (<a class="el" href="namespacemesos_1_1internal_1_1log_1_1tool.html">mesos::internal::log::tool</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1slave_1_1MesosIsolatorProcess.html">MesosIsolatorProcess</a> (<a class="el" href="namespacemesos_1_1internal_1_1slave.html">mesos::internal::slave</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structmesos_1_1internal_1_1slave_1_1ProvisionInfo.html">ProvisionInfo</a> (<a class="el" href="namespacemesos_1_1internal_1_1slave.html">mesos::internal::slave</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structJSON_1_1True.html">True</a> (<a class=
 "el" href="namespaceJSON.html">JSON</a>)&#160;&#160;&#160;</td></tr>
 <tr><td rowspan="2" valign="bottom"><a name="letter_B"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;B&#160;&#160;</div></td></tr></table>
-</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1log_1_1tool_1_1Read_1_1Flags.html">Read::Flags</a> (<a class="el" href="namespacemesos_1_1internal_1_1log_1_1tool.html">mesos::internal::log::tool</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structmesos_1_1python_1_1MesosSchedulerDriverImpl.html">MesosSchedulerDriverImpl</a> (<a class="el" href="namespacemesos_1_1python.html">mesos::python</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1python_1_1ProxyExecutor.html">ProxyExecutor</a> (<a class="el" href="namespacemesos_1_1python.html">mesos::python</a>)&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_U"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;U&#160;&#160;</div></td></tr></table>
+</td><td valign="top"><a class="el" href="structmesos_1_1internal_1_1tests_1_1CapabilitiesTestHelper_1_1Flags.html">CapabilitiesTestHelper::Flags</a> (<a class="el" href="namespacemesos_1_1internal_1_1tests.html">mesos::internal::tests</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1MesosSchedulerDriver.html">MesosSchedulerDriver</a> (<a class="el" href="namespacemesos.html">mesos</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classJSON_1_1Proxy.html">Proxy</a> (<a class="el" href="namespaceJSON.html">JSON</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classTry.html">Try</a>&#160;&#160;&#160;</td></tr>
+<tr><td valign="top"><a class="el" href="classmesos_1_1internal_1_1log_1_1tool_1_1Read_1_1Flags.html">Read::Flags</a> (<a class="el" href="namespacemesos_1_1internal_1_1log_1_1tool.html">mesos::internal::log::tool</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structmesos_1_1python_1_1MesosSchedulerDriverImpl.html">MesosSchedulerDriverImpl</a> (<a class="el" href="namespacemesos_1_1python.html">mesos::python</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1python_1_1ProxyExecutor.html">ProxyExecutor</a> (<a class="el" href="namespacemesos_1_1python.html">mesos::python</a>)&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_U"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;U&#160;&#160;</div></td></tr></table>
 </td></tr>
-<tr><td valign="top"><a class="el" href="classmesos_1_1internal_1_1log_1_1tool_1_1Replica_1_1Flags.html">Replica::Flags</a> (<a class="el" href="namespacemesos_1_1internal_1_1log_1_1tool.html">mesos::internal::log::tool</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1tests_1_1MesosTest.html">MesosTest</a> (<a class="el" href="namespacemesos_1_1internal_1_1tests.html">mesos::internal::tests</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1python_1_1ProxyScheduler.html">ProxyScheduler</a> (<a class="el" href="namespacemesos_1_1python.html">mesos::python</a>)&#160;&#160;&#160;</td></tr>
-<tr><td valign="top"><a class="el" href="classmesos_1_1internal_1_1slave_1_1Backend.html">Backend</a> (<a class="el" href="namespacemesos_1_1internal_1_1slave.html">mesos::internal::slave</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1logging_1_1Flags.html">Flags</a> (<a class="el" href="namespacemesos_1_1internal_1_1logging.html">mesos::internal::logging</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structprocess_1_1Message.html">Message</a> (<a class="el" href="namespaceprocess.html">process</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1master_1_1Prune.html">Prune</a> (<a class="el" href="namespacemesos_1_1internal_1_1master.html">mesos::internal::master</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classrouting_1_1filter_1_1U32Handle.html">U32Handle</a> (<a class="el" href="namespacerouting_1_1filter.html">routing::filter</a>)&#160;&#160;&#160;</td></tr>
-<tr><td valign="top"><a class="el" href="structprocess_1_1http_1_1BadRequest.html">BadRequest</a> (<a class="el" href="namespaceprocess_1_1http.html">process::http</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1tests_1_1Flags.html">Flags</a> (<a class="el" href="namespacemesos_1_1internal_1_1tests.html">mesos::internal::tests</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classprocess_1_1MessageEncoder.html">MessageEncoder</a> (<a class="el" href="namespaceprocess.html">process</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1slave_1_1docker_1_1Puller.html">Puller</a> (<a class="el" href="namespacemesos_1_1internal_1_1slave_1_1docker.html">mesos::internal::slave::docker</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structprocess_1_1http_1_1Unauthorized.html">Unauthorized</a> (<a class="el" href="namespaceprocess_1_1http.html">process::http</a>)&#160;&#160;&#160;</td
 ></tr>
-<tr><td valign="top"><a class="el" href="classmesos_1_1http_1_1authentication_1_1BasicAuthenticatee.html">BasicAuthenticatee</a> (<a class="el" href="namespacemesos_1_1http_1_1authentication.html">mesos::http::authentication</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structmesos_1_1internal_1_1tests_1_1HttpServerTestHelper_1_1Flags.html">HttpServerTestHelper::Flags</a> (<a class="el" href="namespacemesos_1_1internal_1_1tests.html">mesos::internal::tests</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structprocess_1_1MessageEvent.html">MessageEvent</a> (<a class="el" href="namespaceprocess.html">process</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classprocess_1_1metrics_1_1PullGauge.html">PullGauge</a> (<a class="el" href="namespaceprocess_1_1metrics.html">process::metrics</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structmesos_1_1UnavailableResources.html">UnavailableResources</a> (<a class="el" href="name
 spacemesos.html">mesos</a>)&#160;&#160;&#160;</td></tr>
-<tr><td valign="top"><a class="el" href="classprocess_1_1http_1_1authentication_1_1BasicAuthenticator.html">BasicAuthenticator</a> (<a class="el" href="namespaceprocess_1_1http_1_1authentication.html">process::http::authentication</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structmesos_1_1internal_1_1tests_1_1KillPolicyTestHelper_1_1Flags.html">KillPolicyTestHelper::Flags</a> (<a class="el" href="namespacemesos_1_1internal_1_1tests.html">mesos::internal::tests</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1slave_1_1docker_1_1MetadataManager.html">MetadataManager</a> (<a class="el" href="namespacemesos_1_1internal_1_1slave_1_1docker.html">mesos::internal::slave::docker</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classprocess_1_1metrics_1_1PushGauge.html">PushGauge</a> (<a class="el" href="namespaceprocess_1_1metrics.html">process::metrics</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="
 structprocess_1_1UndiscardableDecorator.html">UndiscardableDecorator</a> (<a class="el" href="namespaceprocess.html">process</a>)&#160;&#160;&#160;</td></tr>
-<tr><td valign="top"><a class="el" href="classmesos_1_1http_1_1authentication_1_1BasicAuthenticatorFactory.html">BasicAuthenticatorFactory</a> (<a class="el" href="namespacemesos_1_1http_1_1authentication.html">mesos::http::authentication</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1uri_1_1fetcher_1_1Flags.html">Flags</a> (<a class="el" href="namespacemesos_1_1uri_1_1fetcher.html">mesos::uri::fetcher</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classJvm_1_1Method.html">Jvm::Method</a>&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_Q"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;Q&#160;&#160;</div></td></tr></table>
+<tr><td valign="top"><a class="el" href="classmesos_1_1internal_1_1slave_1_1Backend.html">Backend</a> (<a class="el" href="namespacemesos_1_1internal_1_1slave.html">mesos::internal::slave</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1log_1_1tool_1_1Replica_1_1Flags.html">Replica::Flags</a> (<a class="el" href="namespacemesos_1_1internal_1_1log_1_1tool.html">mesos::internal::log::tool</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1tests_1_1MesosTest.html">MesosTest</a> (<a class="el" href="namespacemesos_1_1internal_1_1tests.html">mesos::internal::tests</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1python_1_1ProxyScheduler.html">ProxyScheduler</a> (<a class="el" href="namespacemesos_1_1python.html">mesos::python</a>)&#160;&#160;&#160;</td></tr>
+<tr><td valign="top"><a class="el" href="structprocess_1_1http_1_1BadRequest.html">BadRequest</a> (<a class="el" href="namespaceprocess_1_1http.html">process::http</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1logging_1_1Flags.html">Flags</a> (<a class="el" href="namespacemesos_1_1internal_1_1logging.html">mesos::internal::logging</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structprocess_1_1Message.html">Message</a> (<a class="el" href="namespaceprocess.html">process</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1master_1_1Prune.html">Prune</a> (<a class="el" href="namespacemesos_1_1internal_1_1master.html">mesos::internal::master</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classrouting_1_1filter_1_1U32Handle.html">U32Handle</a> (<a class="el" href="namespacerouting_1_1filter.html">routing::filter</a>)&#160;&#160;&#160;</td></tr>
+<tr><td valign="top"><a class="el" href="classmesos_1_1http_1_1authentication_1_1BasicAuthenticatee.html">BasicAuthenticatee</a> (<a class="el" href="namespacemesos_1_1http_1_1authentication.html">mesos::http::authentication</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1tests_1_1Flags.html">Flags</a> (<a class="el" href="namespacemesos_1_1internal_1_1tests.html">mesos::internal::tests</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classprocess_1_1MessageEncoder.html">MessageEncoder</a> (<a class="el" href="namespaceprocess.html">process</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1slave_1_1docker_1_1Puller.html">Puller</a> (<a class="el" href="namespacemesos_1_1internal_1_1slave_1_1docker.html">mesos::internal::slave::docker</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structprocess_1_1http_1_1Unauthorized.html">Unauthorized</a> (<a class="el" href="namespacep
 rocess_1_1http.html">process::http</a>)&#160;&#160;&#160;</td></tr>
+<tr><td valign="top"><a class="el" href="classprocess_1_1http_1_1authentication_1_1BasicAuthenticator.html">BasicAuthenticator</a> (<a class="el" href="namespaceprocess_1_1http_1_1authentication.html">process::http::authentication</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structmesos_1_1internal_1_1tests_1_1HttpServerTestHelper_1_1Flags.html">HttpServerTestHelper::Flags</a> (<a class="el" href="namespacemesos_1_1internal_1_1tests.html">mesos::internal::tests</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structprocess_1_1MessageEvent.html">MessageEvent</a> (<a class="el" href="namespaceprocess.html">process</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classprocess_1_1metrics_1_1PullGauge.html">PullGauge</a> (<a class="el" href="namespaceprocess_1_1metrics.html">process::metrics</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structmesos_1_1UnavailableResources.html">UnavailableResources</a> (<a class="el" href
 ="namespacemesos.html">mesos</a>)&#160;&#160;&#160;</td></tr>
+<tr><td valign="top"><a class="el" href="classmesos_1_1http_1_1authentication_1_1BasicAuthenticatorFactory.html">BasicAuthenticatorFactory</a> (<a class="el" href="namespacemesos_1_1http_1_1authentication.html">mesos::http::authentication</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structmesos_1_1internal_1_1tests_1_1KillPolicyTestHelper_1_1Flags.html">KillPolicyTestHelper::Flags</a> (<a class="el" href="namespacemesos_1_1internal_1_1tests.html">mesos::internal::tests</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1internal_1_1slave_1_1docker_1_1MetadataManager.html">MetadataManager</a> (<a class="el" href="namespacemesos_1_1internal_1_1slave_1_1docker.html">mesos::internal::slave::docker</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classprocess_1_1metrics_1_1PushGauge.html">PushGauge</a> (<a class="el" href="namespaceprocess_1_1metrics.html">process::metrics</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el
 " href="structprocess_1_1UndiscardableDecorator.html">UndiscardableDecorator</a> (<a class="el" href="namespaceprocess.html">process</a>)&#160;&#160;&#160;</td></tr>
+<tr><td valign="top"><a class="el" href="classmesos_1_1internal_1_1xfs_1_1BasicBlocks.html">BasicBlocks</a> (<a class="el" href="namespacemesos_1_1internal_1_1xfs.html">mesos::internal::xfs</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classmesos_1_1uri_1_1fetcher_1_1Flags.html">Flags</a> (<a class="el" href="namespacemesos_1_1uri_1_1fetcher.html">mesos::uri::fetcher</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classJvm_1_1Method.html">Jvm::Metho

<TRUNCATED>

[20/50] mesos-site git commit: Updated the website built from mesos SHA: 7c9c72d.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/port__mapping_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/port__mapping_8hpp_source.html b/content/api/latest/c++/port__mapping_8hpp_source.html
index 04d42ee..29ec8b9 100644
--- a/content/api/latest/c++/port__mapping_8hpp_source.html
+++ b/content/api/latest/c++/port__mapping_8hpp_source.html
@@ -52,7 +52,7 @@
 <div class="title">port_mapping.hpp</div>  </div>
 </div><!--header-->
 <div class="contents">
-<a href="port__mapping_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>&#160;<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>&#160;<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>&#160;<span class="comment">// distributed with this work for additional information</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<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>&#160;<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>&#160;<span class="comment">// &quot;License&quot;); you may not use this file except in compliance</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<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>&#160;<span class="comment">// dis
 tributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<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>&#160;<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>&#160;<span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;</div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="preprocessor">#ifndef __PORT_MAPPING_ISOLATOR_HPP__</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="preprocessor">#define __PORT_MAPPING_ISOLATOR_HPP__</span></div><
 div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="preprocessor">#include &lt;stdint.h&gt;</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;</div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="preprocessor">#include &lt;sys/types.h&gt;</span></div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;</div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="preprocessor">#include &lt;set&gt;</span></div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span></div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<span class="preprocessor">#include &lt;vector&gt;</span></div><div class="line"><a name="l00027"></
 a><span class="lineno">   27</span>&#160;</div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="id_8hpp.html">process/id.hpp</a>&gt;</span></div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="owned_8hpp.html">process/owned.hpp</a>&gt;</span></div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="subprocess_8hpp.html">process/subprocess.hpp</a>&gt;</span></div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;</div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="3rdparty_2libprocess_2include_2process_2metrics_2metrics_8hpp.html">process/metrics/metrics.hpp</a>&gt;</span></div><div class="line"><a 
 name="l00033"></a><span class="lineno">   33</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="counter_8hpp.html">process/metrics/counter.hpp</a>&gt;</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>&#160;<span class="preprocessor">#include &lt;<a class="code" href="bytes_8hpp.html">stout/bytes.hpp</a>&gt;</span></div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="hashmap_8hpp.html">stout/hashmap.hpp</a>&gt;</span></div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="hashset_8hpp.html">stout/hashset.hpp</a>&gt;</span></div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="
 3rdparty_2stout_2include_2stout_2ip_8hpp.html">stout/ip.hpp</a>&gt;</span></div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="interval_8hpp.html">stout/interval.hpp</a>&gt;</span></div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="mac_8hpp.html">stout/mac.hpp</a>&gt;</span></div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="none_8hpp.html">stout/none.hpp</a>&gt;</span></div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="option_8hpp.html">stout/option.hpp</a>&gt;</span></div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="sub
 command_8hpp.html">stout/subcommand.hpp</a>&gt;</span></div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;</div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="src_2linux_2routing_2filter_2ip_8hpp.html">linux/routing/filter/ip.hpp</a>&quot;</span></div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;</div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="src_2slave_2flags_8hpp.html">slave/flags.hpp</a>&quot;</span></div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;</div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="src_2slave_2containerizer_2mesos_2isolator_8hpp.html">slave/containerizer/mesos/isolator.hpp</a>&qu
 ot;</span></div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;</div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacemesos.html">mesos</a> {</div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceinternal.html">internal</a> {</div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;<span class="keyword">namespace </span>slave {</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>&#160;<span class="comment">// The prefix this isolator uses for the virtual ethernet devices.</span></div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;<span class="comment">// NOTE: This constant is exposed for testin
 g.</span></div><div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="namespacemesos_1_1internal_1_1slave.html#a41f03e964f9677db22808730f850ccaf">   57</a></span>&#160;<span class="keyword">inline</span> std::string <a class="code" href="namespacemesos_1_1internal_1_1slave.html#a41f03e964f9677db22808730f850ccaf">PORT_MAPPING_VETH_PREFIX</a>() { <span class="keywordflow">return</span> <span class="stringliteral">&quot;mesos&quot;</span>; }</div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;</div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;</div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;<span class="comment">// The root directory where we bind mount all the namespace handles.</span></div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;<span class="comment">// We choose the directory &#39;/var/run/netns&#39; so that we can use</s
 pan></div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;<span class="comment">// iproute2 suite (e.g., ip netns show/exec) to inspect or enter the</span></div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;<span class="comment">// network namespace. This is very useful for debugging purposes.</span></div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;<span class="comment">// NOTE: This constant is exposed for testing.</span></div><div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="namespacemesos_1_1internal_1_1slave.html#a0ef18732ab5fdd1b536ab663f7400b79">   65</a></span>&#160;<span class="keyword">inline</span> std::string <a class="code" href="namespacemesos_1_1internal_1_1slave.html#a0ef18732ab5fdd1b536ab663f7400b79">PORT_MAPPING_BIND_MOUNT_ROOT</a>() { <span class="keywordflow">return</span> <span class="stringliteral">&quot;/var/run/netns&quot;</span>; }</
 div><div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;</div><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;<span class="comment">// The root directory where we keep all the namespace handle</span></div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;<span class="comment">// symlinks. This is introduced in 0.23.0.</span></div><div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;<span class="comment">// NOTE: This constant is exposed for testing.</span></div><div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="namespacemesos_1_1internal_1_1slave.html#a1ecd191f897fc379a18f112fd04a30a1">   70</a></span>&#160;<span class="keyword">inline</span> std::string <a class="code" href="namespacemesos_1_1internal_1_1slave.html#a1ecd191f897fc379a18f112fd04a30a1">PORT_MAPPING_BIND_MOUNT_SYMLINK_ROOT</a>()</div><div class="line"><a name="l00071"></a><span cla
 ss="lineno">   71</span>&#160;{</div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;  <span class="keywordflow">return</span> <span class="stringliteral">&quot;/var/run/mesos/netns&quot;</span>;</div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;}</div><div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;</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>&#160;<span class="comment">// These names are used to identify the traffic control statistics</span></div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;<span class="comment">// output for each of the Linux Traffic Control Qdiscs we report.</span></div><div class="line"><a name="l00078"></a><span class="lineno"><a class="line" href="namespacemesos_1_1internal_1_1slave.html#a589249d396dcac88f6d67d8f68b8a630
 ">   78</a></span>&#160;constexpr <span class="keywordtype">char</span> <a class="code" href="namespacemesos_1_1internal_1_1slave.html#a589249d396dcac88f6d67d8f68b8a630">NET_ISOLATOR_BW_LIMIT</a>[] = <span class="stringliteral">&quot;bw_limit&quot;</span>;</div><div class="line"><a name="l00079"></a><span class="lineno"><a class="line" href="namespacemesos_1_1internal_1_1slave.html#a5b7d3c5110866191112df560e56f91a6">   79</a></span>&#160;constexpr <span class="keywordtype">char</span> <a class="code" href="namespacemesos_1_1internal_1_1slave.html#a5b7d3c5110866191112df560e56f91a6">NET_ISOLATOR_BLOAT_REDUCTION</a>[] = <span class="stringliteral">&quot;bloat_reduction&quot;</span>;</div><div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;</div><div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;</div><div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;<span class="comment">// Responsible for allocating ephem
 eral ports for the port mapping</span></div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;<span class="comment">// network isolator. This class is exposed mainly for unit testing.</span></div><div class="line"><a name="l00084"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1slave_1_1EphemeralPortsAllocator.html">   84</a></span>&#160;<span class="keyword">class </span><a class="code" href="classmesos_1_1internal_1_1slave_1_1EphemeralPortsAllocator.html">EphemeralPortsAllocator</a></div><div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;{</div><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00087"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1slave_1_1EphemeralPortsAllocator.html#a4548e2647cf692062843ce671917a1e5">   87</a></span>&#160;  <a class="code" href="classmesos_1_1int
 ernal_1_1slave_1_1EphemeralPortsAllocator.html#a4548e2647cf692062843ce671917a1e5">EphemeralPortsAllocator</a>(</div><div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;      <span class="keyword">const</span> <a class="code" href="classIntervalSet.html">IntervalSet&lt;uint16_t&gt;</a>&amp; total,</div><div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;      <span class="keywordtype">size_t</span> _portsPerContainer)</div><div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;    : free(total),</div><div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;      portsPerContainer_(_portsPerContainer) {}</div><div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;</div><div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;  <span class="comment">// Returns the number of ephemeral ports for each container.</span></div><div class="line"><a name="
 l00094"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1slave_1_1EphemeralPortsAllocator.html#a806d0d8dbdfe3d482877e439d1402da8">   94</a></span>&#160;  <span class="keywordtype">size_t</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1EphemeralPortsAllocator.html#a806d0d8dbdfe3d482877e439d1402da8">portsPerContainer</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> portsPerContainer_; }</div><div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;</div><div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;  <span class="comment">// Allocate an ephemeral port range for a container. The allocator</span></div><div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;  <span class="comment">// will automatically find one port range with the given container</span></div><div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;  <spa
 n class="comment">// size. Returns error if the allocation cannot be fulfilled (e.g.,</span></div><div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;  <span class="comment">// exhausting available ephemeral ports).</span></div><div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;  <a class="code" href="classTry.html">Try&lt;Interval&lt;uint16_t&gt;</a>&gt; <a class="code" href="classmesos_1_1internal_1_1slave_1_1EphemeralPortsAllocator.html#afcf5e28ba2cb5644f4a4dcba50c75f36">allocate</a>();</div><div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;</div><div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;  <span class="comment">// Mark the specified ephemeral port range as allocated.</span></div><div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;  <span class="keywordtype">void</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1EphemeralPorts
 Allocator.html#afcf5e28ba2cb5644f4a4dcba50c75f36">allocate</a>(<span class="keyword">const</span> <a class="code" href="classInterval.html">Interval&lt;uint16_t&gt;</a>&amp; ports);</div><div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;</div><div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;  <span class="comment">// Deallocate the specified ephemeral port range.</span></div><div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;  <span class="keywordtype">void</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1EphemeralPortsAllocator.html#a35741fc1af9524ee48c586adea8f2a25">deallocate</a>(<span class="keyword">const</span> <a class="code" href="classInterval.html">Interval&lt;uint16_t&gt;</a>&amp; ports);</div><div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;</div><div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;  <span class="comment
 ">// Return true if the specified ephemeral port range is managed by</span></div><div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;  <span class="comment">// the allocator, regardless it has been allocated to use or not.</span></div><div class="line"><a name="l00110"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1slave_1_1EphemeralPortsAllocator.html#ab53def2ef0051bc20f206b2c16146160">  110</a></span>&#160;  <span class="keywordtype">bool</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1EphemeralPortsAllocator.html#ab53def2ef0051bc20f206b2c16146160">isManaged</a>(<span class="keyword">const</span> <a class="code" href="classInterval.html">Interval&lt;uint16_t&gt;</a>&amp; ports)</div><div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;  {</div><div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;    <span class="keywordflow">return</span> (free + used).contains(por
 ts);</div><div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;  }</div><div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;</div><div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;  <span class="comment">// Given an integer x, return the smallest integer t such that t &gt;=</span></div><div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;  <span class="comment">// x and t % m == 0.</span></div><div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;  <span class="keyword">static</span> uint32_t nextMultipleOf(uint32_t x, uint32_t m);</div><div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;</div><div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;  <a class="code" href="classIntervalSet.ht
 ml">IntervalSet&lt;uint16_t&gt;</a> free;</div><div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;  <a class="code" href="classIntervalSet.html">IntervalSet&lt;uint16_t&gt;</a> used;</div><div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;</div><div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;  <span class="comment">// The number of ephemeral ports for each container.</span></div><div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;  <span class="keywordtype">size_t</span> portsPerContainer_;</div><div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;};</div><div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;</div><div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;</div><div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;<span class="comment">// For the specified ports, gene
 rate a set of port ranges each of</span></div><div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;<span class="comment">// which can be used by a single IP filter. In other words, each port</span></div><div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;<span class="comment">// range needs to satisfy the following two conditions: 1) the size of</span></div><div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;<span class="comment">// the range is 2^n (n=0,1,2...); 2) the begin of the range is size</span></div><div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;<span class="comment">// aligned (i.e., begin % size == 0). This function is exposed mainly</span></div><div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;<span class="comment">// for unit testing.</span></div><div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;std::vector&l
 t;routing::filter::ip::PortRange&gt; <a class="code" href="namespacemesos_1_1internal_1_1slave.html#a9f290dc23f39eb7716f2fbb51177efe4">getPortRanges</a>(</div><div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;    <span class="keyword">const</span> <a class="code" href="classIntervalSet.html">IntervalSet&lt;uint16_t&gt;</a>&amp; ports);</div><div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;</div><div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;</div><div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;<span class="comment">// Provides network isolation using port mapping. Each container is</span></div><div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;<span class="comment">// assigned a fixed set of ports (including ephemeral ports). The</span></div><div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;<span class="comment">
 // isolator will set up filters on the host such that network traffic</span></div><div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;<span class="comment">// to the host will be properly redirected to the corresponding</span></div><div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;<span class="comment">// container depending on the destination ports. The network traffic</span></div><div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;<span class="comment">// from containers will also be properly relayed to the host. This</span></div><div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;<span class="comment">// isolator is useful when the operator wants to reuse the host IP for</span></div><div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;<span class="comment">// all containers running on the host (e.g., there are insufficient</span></div><div class="line
 "><a name="l00146"></a><span class="lineno">  146</span>&#160;<span class="comment">// IPs).</span></div><div class="line"><a name="l00147"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1slave_1_1PortMappingIsolatorProcess.html">  147</a></span>&#160;<span class="keyword">class </span><a class="code" href="classmesos_1_1internal_1_1slave_1_1PortMappingIsolatorProcess.html">PortMappingIsolatorProcess</a> : <span class="keyword">public</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1MesosIsolatorProcess.html">MesosIsolatorProcess</a></div><div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;{</div><div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;  <span class="keyword">static</span> <a class="code" href="classTry.html">Try&lt;mesos::slave::Isolator*&gt;</a> <a class="code"
  href="namespacecgroups.html#a2ecc89636706df947027a4c3c2100fbe">create</a>(<span class="keyword">const</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Flags.html">Flags</a>&amp; <a class="code" href="namespaceflags.html">flags</a>);</div><div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;</div><div class="line"><a name="l00152"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1slave_1_1PortMappingIsolatorProcess.html#a9ab1ad63e3db47a0fba934c353b5dd81">  152</a></span>&#160;  <span class="keyword">virtual</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1PortMappingIsolatorProcess.html#a9ab1ad63e3db47a0fba934c353b5dd81">~PortMappingIsolatorProcess</a>() {}</div><div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;</div><div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;  <span class="keyword">virtual</span> <a class="code" href="classprocess_1_1Future.ht
 ml">process::Future&lt;Nothing&gt;</a> <a class="code" href="namespacemesos_1_1internal_1_1log_1_1protocol.html#afa485608d261b11b9b4c619b4b4d6e28">recover</a>(</div><div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;      <span class="keyword">const</span> std::list&lt;mesos::slave::ContainerState&gt;&amp; states,</div><div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;      <span class="keyword">const</span> <a class="code" href="classhashset.html">hashset&lt;ContainerID&gt;</a>&amp; orphans);</div><div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;</div><div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;  <span class="keyword">virtual</span> <a class="code" href="classprocess_1_1Future.html">process::Future&lt;Option&lt;mesos::slave::ContainerLaunchInfo&gt;</a>&gt; <a class="code" href="namespacecgroups.html#a4bf20862574beb5b0f9af7799489866f">prepare</a>(</div><div class="li
 ne"><a name="l00159"></a><span class="lineno">  159</span>&#160;      <span class="keyword">const</span> ContainerID&amp; containerId,</div><div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;      <span class="keyword">const</span> mesos::slave::ContainerConfig&amp; containerConfig);</div><div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;</div><div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;  <span class="keyword">virtual</span> <a class="code" href="classprocess_1_1Future.html">process::Future&lt;Nothing&gt;</a> <a class="code" href="namespacecgroups.html#aceb245d6ea6362ac1c2b1247556179d6">isolate</a>(</div><div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;      <span class="keyword">const</span> ContainerID&amp; containerId,</div><div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;      <a class="code" href="3rdparty_2stout_2include_2stout_2win
 dows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a> pid);</div><div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;</div><div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;  <span class="keyword">virtual</span> <a class="code" href="classprocess_1_1Future.html">process::Future&lt;mesos::slave::ContainerLimitation&gt;</a> watch(</div><div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;      <span class="keyword">const</span> ContainerID&amp; containerId);</div><div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;</div><div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;  <span class="keyword">virtual</span> <a class="code" href="classprocess_1_1Future.html">process::Future&lt;Nothing&gt;</a> <a class="code" href="namespacerouting_1_1filter_1_1basic.html#a088d88712e011acb0673da92045b365b">update</a>(</div><div class="line"><a name="l00170"></a><span
  class="lineno">  170</span>&#160;      <span class="keyword">const</span> ContainerID&amp; containerId,</div><div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;      <span class="keyword">const</span> <a class="code" href="classmesos_1_1Resources.html">Resources</a>&amp; resources);</div><div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;</div><div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;  <span class="keyword">virtual</span> <a class="code" href="classprocess_1_1Future.html">process::Future&lt;ResourceStatistics&gt;</a> <a class="code" href="namespacemesos_1_1internal.html#a91a5bc5e418e8712bb512721b5abc46d">usage</a>(</div><div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;      <span class="keyword">const</span> ContainerID&amp; containerId);</div><div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;</div><div class="line"><a name="l00176"></a
 ><span class="lineno">  176</span>&#160;  <span class="keyword">virtual</span> <a class="code" href="classprocess_1_1Future.html">process::Future&lt;Nothing&gt;</a> <a class="code" href="namespacecgroups.html#a12d210f286e5fcf7993c0c90b9459606">cleanup</a>(</div><div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;      <span class="keyword">const</span> ContainerID&amp; containerId);</div><div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;</div><div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;  <span class="keyword">struct </span>Info</div><div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;  {</div><div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160;    Info(<span class="keyword">const</span> <a class="code" href="classIntervalSet.h
 tml">IntervalSet&lt;uint16_t&gt;</a>&amp; _nonEphemeralPorts,</div><div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;         <span class="keyword">const</span> <a class="code" href="classInterval.html">Interval&lt;uint16_t&gt;</a>&amp; _ephemeralPorts,</div><div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;         <span class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;pid_t&gt;</a>&amp; _pid = <a class="code" href="structNone.html">None</a>())</div><div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;      : nonEphemeralPorts(_nonEphemeralPorts),</div><div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;        ephemeralPorts(_ephemeralPorts),</div><div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;        pid(_pid) {}</div><div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;</div><div class="li
 ne"><a name="l00189"></a><span class="lineno">  189</span>&#160;    <span class="comment">// Non-ephemeral ports used by the container. It&#39;s possible that a</span></div><div class="line"><a name="l00190"></a><span class="lineno">  190</span>&#160;    <span class="comment">// container does not use any non-ephemeral ports. In that case,</span></div><div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160;    <span class="comment">// &#39;nonEphemeralPorts&#39; will be empty. This variable could change</span></div><div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;    <span class="comment">// upon &#39;update&#39;.</span></div><div class="line"><a name="l00193"></a><span class="lineno">  193</span>&#160;    <a class="code" href="classIntervalSet.html">IntervalSet&lt;uint16_t&gt;</a> nonEphemeralPorts;</div><div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#160;</div><div class="line"><a name="l00195"></a><span 
 class="lineno">  195</span>&#160;    <span class="comment">// Each container has one and only one range of ephemeral ports.</span></div><div class="line"><a name="l00196"></a><span class="lineno">  196</span>&#160;    <span class="comment">// It cannot have more than one ranges of ephemeral ports because</span></div><div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;    <span class="comment">// we need to setup the ip_local_port_range (which only accepts a</span></div><div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160;    <span class="comment">// single interval) inside the container to restrict the ephemeral</span></div><div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160;    <span class="comment">// ports used by the container.</span></div><div class="line"><a name="l00200"></a><span class="lineno">  200</span>&#160;    <span class="keyword">const</span> <a class="code" href="classInterval.html">Interva
 l&lt;uint16_t&gt;</a> ephemeralPorts;</div><div class="line"><a name="l00201"></a><span class="lineno">  201</span>&#160;</div><div class="line"><a name="l00202"></a><span class="lineno">  202</span>&#160;    <a class="code" href="classOption.html">Option&lt;pid_t&gt;</a> pid;</div><div class="line"><a name="l00203"></a><span class="lineno">  203</span>&#160;    <a class="code" href="classOption.html">Option&lt;uint16_t&gt;</a> flowId;</div><div class="line"><a name="l00204"></a><span class="lineno">  204</span>&#160;  };</div><div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160;</div><div class="line"><a name="l00206"></a><span class="lineno">  206</span>&#160;  <span class="comment">// Define the metrics used by the port mapping network isolator.</span></div><div class="line"><a name="l00207"></a><span class="lineno">  207</span>&#160;  <span class="keyword">struct </span><a class="code" href="namespacemesos_1_1internal_1_1tests.html#ace210c8852d8ef1f0f67e
 c3af06281f6">Metrics</a></div><div class="line"><a name="l00208"></a><span class="lineno">  208</span>&#160;  {</div><div class="line"><a name="l00209"></a><span class="lineno">  209</span>&#160;    <a class="code" href="namespacemesos_1_1internal_1_1tests.html#ace210c8852d8ef1f0f67ec3af06281f6">Metrics</a>();</div><div class="line"><a name="l00210"></a><span class="lineno">  210</span>&#160;    ~<a class="code" href="namespacemesos_1_1internal_1_1tests.html#ace210c8852d8ef1f0f67ec3af06281f6">Metrics</a>();</div><div class="line"><a name="l00211"></a><span class="lineno">  211</span>&#160;</div><div class="line"><a name="l00212"></a><span class="lineno">  212</span>&#160;    <a class="code" href="classprocess_1_1metrics_1_1Counter.html">process::metrics::Counter</a> adding_eth0_ip_filters_errors;</div><div class="line"><a name="l00213"></a><span class="lineno">  213</span>&#160;    <a class="code" href="classprocess_1_1metrics_1_1Counter.html">process::metrics::Counter</a> adding_et
 h0_ip_filters_already_exist;</div><div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160;    <a class="code" href="classprocess_1_1metrics_1_1Counter.html">process::metrics::Counter</a> adding_eth0_egress_filters_errors;</div><div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160;    <a class="code" href="classprocess_1_1metrics_1_1Counter.html">process::metrics::Counter</a> adding_eth0_egress_filters_already_exist;</div><div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#160;    <a class="code" href="classprocess_1_1metrics_1_1Counter.html">process::metrics::Counter</a> adding_lo_ip_filters_errors;</div><div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160;    <a class="code" href="classprocess_1_1metrics_1_1Counter.html">process::metrics::Counter</a> adding_lo_ip_filters_already_exist;</div><div class="line"><a name="l00218"></a><span class="lineno">  218</span>&#160;    <a class="code" hre
 f="classprocess_1_1metrics_1_1Counter.html">process::metrics::Counter</a> adding_veth_ip_filters_errors;</div><div class="line"><a name="l00219"></a><span class="lineno">  219</span>&#160;    <a class="code" href="classprocess_1_1metrics_1_1Counter.html">process::metrics::Counter</a> adding_veth_ip_filters_already_exist;</div><div class="line"><a name="l00220"></a><span class="lineno">  220</span>&#160;    <a class="code" href="classprocess_1_1metrics_1_1Counter.html">process::metrics::Counter</a> adding_veth_icmp_filters_errors;</div><div class="line"><a name="l00221"></a><span class="lineno">  221</span>&#160;    <a class="code" href="classprocess_1_1metrics_1_1Counter.html">process::metrics::Counter</a> adding_veth_icmp_filters_already_exist;</div><div class="line"><a name="l00222"></a><span class="lineno">  222</span>&#160;    <a class="code" href="classprocess_1_1metrics_1_1Counter.html">process::metrics::Counter</a> adding_veth_arp_filters_errors;</div><div class="line"><a nam
 e="l00223"></a><span class="lineno">  223</span>&#160;    <a class="code" href="classprocess_1_1metrics_1_1Counter.html">process::metrics::Counter</a> adding_veth_arp_filters_already_exist;</div><div class="line"><a name="l00224"></a><span class="lineno">  224</span>&#160;    <a class="code" href="classprocess_1_1metrics_1_1Counter.html">process::metrics::Counter</a> adding_eth0_icmp_filters_errors;</div><div class="line"><a name="l00225"></a><span class="lineno">  225</span>&#160;    <a class="code" href="classprocess_1_1metrics_1_1Counter.html">process::metrics::Counter</a> adding_eth0_icmp_filters_already_exist;</div><div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;    <a class="code" href="classprocess_1_1metrics_1_1Counter.html">process::metrics::Counter</a> adding_eth0_arp_filters_errors;</div><div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160;    <a class="code" href="classprocess_1_1metrics_1_1Counter.html">process::met
 rics::Counter</a> adding_eth0_arp_filters_already_exist;</div><div class="line"><a name="l00228"></a><span class="lineno">  228</span>&#160;    <a class="code" href="classprocess_1_1metrics_1_1Counter.html">process::metrics::Counter</a> removing_eth0_ip_filters_errors;</div><div class="line"><a name="l00229"></a><span class="lineno">  229</span>&#160;    <a class="code" href="classprocess_1_1metrics_1_1Counter.html">process::metrics::Counter</a> removing_eth0_ip_filters_do_not_exist;</div><div class="line"><a name="l00230"></a><span class="lineno">  230</span>&#160;    <a class="code" href="classprocess_1_1metrics_1_1Counter.html">process::metrics::Counter</a> removing_eth0_egress_filters_errors;</div><div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160;    <a class="code" href="classprocess_1_1metrics_1_1Counter.html">process::metrics::Counter</a> removing_eth0_egress_filters_do_not_exist;</div><div class="line"><a name="l00232"></a><span class="lineno">  2
 32</span>&#160;    <a class="code" href="classprocess_1_1metrics_1_1Counter.html">process::metrics::Counter</a> removing_lo_ip_filters_errors;</div><div class="line"><a name="l00233"></a><span class="lineno">  233</span>&#160;    <a class="code" href="classprocess_1_1metrics_1_1Counter.html">process::metrics::Counter</a> removing_lo_ip_filters_do_not_exist;</div><div class="line"><a name="l00234"></a><span class="lineno">  234</span>&#160;    <a class="code" href="classprocess_1_1metrics_1_1Counter.html">process::metrics::Counter</a> removing_veth_ip_filters_errors;</div><div class="line"><a name="l00235"></a><span class="lineno">  235</span>&#160;    <a class="code" href="classprocess_1_1metrics_1_1Counter.html">process::metrics::Counter</a> removing_veth_ip_filters_do_not_exist;</div><div class="line"><a name="l00236"></a><span class="lineno">  236</span>&#160;    <a class="code" href="classprocess_1_1metrics_1_1Counter.html">process::metrics::Counter</a> removing_eth0_icmp_filter
 s_errors;</div><div class="line"><a name="l00237"></a><span class="lineno">  237</span>&#160;    <a class="code" href="classprocess_1_1metrics_1_1Counter.html">process::metrics::Counter</a> removing_eth0_icmp_filters_do_not_exist;</div><div class="line"><a name="l00238"></a><span class="lineno">  238</span>&#160;    <a class="code" href="classprocess_1_1metrics_1_1Counter.html">process::metrics::Counter</a> removing_eth0_arp_filters_errors;</div><div class="line"><a name="l00239"></a><span class="lineno">  239</span>&#160;    <a class="code" href="classprocess_1_1metrics_1_1Counter.html">process::metrics::Counter</a> removing_eth0_arp_filters_do_not_exist;</div><div class="line"><a name="l00240"></a><span class="lineno">  240</span>&#160;    <a class="code" href="classprocess_1_1metrics_1_1Counter.html">process::metrics::Counter</a> updating_eth0_icmp_filters_errors;</div><div class="line"><a name="l00241"></a><span class="lineno">  241</span>&#160;    <a class="code" href="classpro
 cess_1_1metrics_1_1Counter.html">process::metrics::Counter</a> updating_eth0_icmp_filters_already_exist;</div><div class="line"><a name="l00242"></a><span class="lineno">  242</span>&#160;    <a class="code" href="classprocess_1_1metrics_1_1Counter.html">process::metrics::Counter</a> updating_eth0_icmp_filters_do_not_exist;</div><div class="line"><a name="l00243"></a><span class="lineno">  243</span>&#160;    <a class="code" href="classprocess_1_1metrics_1_1Counter.html">process::metrics::Counter</a> updating_eth0_arp_filters_errors;</div><div class="line"><a name="l00244"></a><span class="lineno">  244</span>&#160;    <a class="code" href="classprocess_1_1metrics_1_1Counter.html">process::metrics::Counter</a> updating_eth0_arp_filters_already_exist;</div><div class="line"><a name="l00245"></a><span class="lineno">  245</span>&#160;    <a class="code" href="classprocess_1_1metrics_1_1Counter.html">process::metrics::Counter</a> updating_eth0_arp_filters_do_not_exist;</div><div class=
 "line"><a name="l00246"></a><span class="lineno">  246</span>&#160;    <a class="code" href="classprocess_1_1metrics_1_1Counter.html">process::metrics::Counter</a> updating_container_ip_filters_errors;</div><div class="line"><a name="l00247"></a><span class="lineno">  247</span>&#160;  } <a class="code" href="namespaceprocess_1_1metrics_1_1internal.html#aaa37243f659788386a13de558eba70a7">metrics</a>;</div><div class="line"><a name="l00248"></a><span class="lineno">  248</span>&#160;</div><div class="line"><a name="l00249"></a><span class="lineno">  249</span>&#160;  <a class="code" href="classmesos_1_1internal_1_1slave_1_1PortMappingIsolatorProcess.html">PortMappingIsolatorProcess</a>(</div><div class="line"><a name="l00250"></a><span class="lineno">  250</span>&#160;      <span class="keyword">const</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Flags.html">Flags</a>&amp; _flags,</div><div class="line"><a name="l00251"></a><span class="lineno">  251</span>&#160;   
    <span class="keyword">const</span> std::string&amp; _bindMountRoot,</div><div class="line"><a name="l00252"></a><span class="lineno">  252</span>&#160;      <span class="keyword">const</span> std::string&amp; _eth0,</div><div class="line"><a name="l00253"></a><span class="lineno">  253</span>&#160;      <span class="keyword">const</span> std::string&amp; _lo,</div><div class="line"><a name="l00254"></a><span class="lineno">  254</span>&#160;      <span class="keyword">const</span> <a class="code" href="classnet_1_1MAC.html">net::MAC</a>&amp; _hostMAC,</div><div class="line"><a name="l00255"></a><span class="lineno">  255</span>&#160;      <span class="keyword">const</span> <a class="code" href="classnet_1_1IP_1_1Network.html">net::IP::Network</a>&amp; _hostIPNetwork,</div><div class="line"><a name="l00256"></a><span class="lineno">  256</span>&#160;      <span class="keyword">const</span> <span class="keywordtype">size_t</span> _hostEth0MTU,</div><div class="line"><a name="l00257
 "></a><span class="lineno">  257</span>&#160;      <span class="keyword">const</span> <a class="code" href="classnet_1_1IP.html">net::IP</a>&amp; _hostDefaultGateway,</div><div class="line"><a name="l00258"></a><span class="lineno">  258</span>&#160;      <span class="keyword">const</span> <a class="code" href="classrouting_1_1Handle.html">routing::Handle</a>&amp; _hostTxFqCodelHandle,</div><div class="line"><a name="l00259"></a><span class="lineno">  259</span>&#160;      <span class="keyword">const</span> <a class="code" href="classhashmap.html">hashmap&lt;std::string, std::string&gt;</a>&amp; _hostNetworkConfigurations,</div><div class="line"><a name="l00260"></a><span class="lineno">  260</span>&#160;      <span class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;Bytes&gt;</a>&amp; _egressRateLimitPerContainer,</div><div class="line"><a name="l00261"></a><span class="lineno">  261</span>&#160;      <span class="keyword">const</span> <a class="code" hre
 f="classIntervalSet.html">IntervalSet&lt;uint16_t&gt;</a>&amp; _managedNonEphemeralPorts,</div><div class="line"><a name="l00262"></a><span class="lineno">  262</span>&#160;      <span class="keyword">const</span> <a class="code" href="classprocess_1_1Owned.html">process::Owned&lt;EphemeralPortsAllocator&gt;</a>&amp; _ephemeralPortsAllocator,</div><div class="line"><a name="l00263"></a><span class="lineno">  263</span>&#160;      <span class="keyword">const</span> std::set&lt;uint16_t&gt;&amp; _flowIDs)</div><div class="line"><a name="l00264"></a><span class="lineno">  264</span>&#160;    : ProcessBase(<a class="code" href="namespaceprocess_1_1ID.html#aeb11a48c9def1da169d8455a30d0ee39">process::ID::generate</a>(<span class="stringliteral">&quot;mesos-port-mapping-isolator&quot;</span>)),</div><div class="line"><a name="l00265"></a><span class="lineno">  265</span>&#160;      <a class="code" href="decoder_8hpp.html#abb0829cce9dd20a40ae0d86890ae85c6">flags</a>(_flags),</div><div class
 ="line"><a name="l00266"></a><span class="lineno">  266</span>&#160;      bindMountRoot(_bindMountRoot),</div><div class="line"><a name="l00267"></a><span class="lineno">  267</span>&#160;      <a class="code" href="namespacerouting_1_1link.html#a9d1bc4ad0c1ed50d48b8349fe74ba0ee">eth0</a>(_eth0),</div><div class="line"><a name="l00268"></a><span class="lineno">  268</span>&#160;      <a class="code" href="namespacerouting_1_1link.html#a6051222dd27cef97f932844536a64f1a">lo</a>(_lo),</div><div class="line"><a name="l00269"></a><span class="lineno">  269</span>&#160;      hostMAC(_hostMAC),</div><div class="line"><a name="l00270"></a><span class="lineno">  270</span>&#160;      hostIPNetwork(_hostIPNetwork),</div><div class="line"><a name="l00271"></a><span class="lineno">  271</span>&#160;      hostEth0MTU(_hostEth0MTU),</div><div class="line"><a name="l00272"></a><span class="lineno">  272</span>&#160;      hostDefaultGateway(_hostDefaultGateway),</div><div class="line"><a name="l002
 73"></a><span class="lineno">  273</span>&#160;      hostTxFqCodelHandle(_hostTxFqCodelHandle),</div><div class="line"><a name="l00274"></a><span class="lineno">  274</span>&#160;      hostNetworkConfigurations(_hostNetworkConfigurations),</div><div class="line"><a name="l00275"></a><span class="lineno">  275</span>&#160;      egressRateLimitPerContainer(_egressRateLimitPerContainer),</div><div class="line"><a name="l00276"></a><span class="lineno">  276</span>&#160;      managedNonEphemeralPorts(_managedNonEphemeralPorts),</div><div class="line"><a name="l00277"></a><span class="lineno">  277</span>&#160;      ephemeralPortsAllocator(_ephemeralPortsAllocator),</div><div class="line"><a name="l00278"></a><span class="lineno">  278</span>&#160;      freeFlowIds(_flowIDs) {}</div><div class="line"><a name="l00279"></a><span class="lineno">  279</span>&#160;</div><div class="line"><a name="l00280"></a><span class="lineno">  280</span>&#160;  <span class="comment">// Continuations.</spa
 n></div><div class="line"><a name="l00281"></a><span class="lineno">  281</span>&#160;  <a class="code" href="classTry.html">Try&lt;Nothing&gt;</a> _cleanup(Info* info, <span class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;ContainerID&gt;</a>&amp; containerId);</div><div class="line"><a name="l00282"></a><span class="lineno">  282</span>&#160;  <a class="code" href="classTry.html">Try&lt;Info*&gt;</a> _recover(<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a> pid);</div><div class="line"><a name="l00283"></a><span class="lineno">  283</span>&#160;</div><div class="line"><a name="l00284"></a><span class="lineno">  284</span>&#160;  <span class="keywordtype">void</span> _update(</div><div class="line"><a name="l00285"></a><span class="lineno">  285</span>&#160;      <span class="keyword">const</span> ContainerID&amp; containerId,</div><div class="line"><a name="l00286"></a><span class="l
 ineno">  286</span>&#160;      <span class="keyword">const</span> <a class="code" href="classprocess_1_1Future.html">process::Future</a>&lt;<a class="code" href="classOption.html">Option&lt;int&gt;</a>&gt;&amp; <a class="code" href="namespaceproc.html#a34396c6140a28f583dc13fee3c3c35d4">status</a>);</div><div class="line"><a name="l00287"></a><span class="lineno">  287</span>&#160;</div><div class="line"><a name="l00288"></a><span class="lineno">  288</span>&#160;  <a class="code" href="classprocess_1_1Future.html">process::Future&lt;ResourceStatistics&gt;</a> _usage(</div><div class="line"><a name="l00289"></a><span class="lineno">  289</span>&#160;      <span class="keyword">const</span> ResourceStatistics&amp; result,</div><div class="line"><a name="l00290"></a><span class="lineno">  290</span>&#160;      <span class="keyword">const</span> <a class="code" href="classprocess_1_1Subprocess.html">process::Subprocess</a>&amp; s);</div><div class="line"><a name="l00291"></a><span class
 ="lineno">  291</span>&#160;</div><div class="line"><a name="l00292"></a><span class="lineno">  292</span>&#160;  <a class="code" href="classprocess_1_1Future.html">process::Future&lt;ResourceStatistics&gt;</a> __usage(</div><div class="line"><a name="l00293"></a><span class="lineno">  293</span>&#160;      ResourceStatistics result,</div><div class="line"><a name="l00294"></a><span class="lineno">  294</span>&#160;      <span class="keyword">const</span> <a class="code" href="classprocess_1_1Future.html">process::Future&lt;std::string&gt;</a>&amp; out);</div><div class="line"><a name="l00295"></a><span class="lineno">  295</span>&#160;</div><div class="line"><a name="l00296"></a><span class="lineno">  296</span>&#160;  <span class="comment">// Helper functions.</span></div><div class="line"><a name="l00297"></a><span class="lineno">  297</span>&#160;  <a class="code" href="classTry.html">Try&lt;Nothing&gt;</a> addHostIPFilters(</div><div class="line"><a name="l00298"></a><span clas
 s="lineno">  298</span>&#160;      <span class="keyword">const</span> <a class="code" href="classrouting_1_1filter_1_1ip_1_1PortRange.html">routing::filter::ip::PortRange</a>&amp; range,</div><div class="line"><a name="l00299"></a><span class="lineno">  299</span>&#160;      <span class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;uint16_t&gt;</a>&amp; flowId,</div><div class="line"><a name="l00300"></a><span class="lineno">  300</span>&#160;      <span class="keyword">const</span> std::string&amp; veth);</div><div class="line"><a name="l00301"></a><span class="lineno">  301</span>&#160;</div><div class="line"><a name="l00302"></a><span class="lineno">  302</span>&#160;  <a class="code" href="classTry.html">Try&lt;Nothing&gt;</a> removeHostIPFilters(</div><div class="line"><a name="l00303"></a><span class="lineno">  303</span>&#160;      <span class="keyword">const</span> <a class="code" href="classrouting_1_1filter_1_1ip_1_1PortRange.html">routing::filte
 r::ip::PortRange</a>&amp; range,</div><div class="line"><a name="l00304"></a><span class="lineno">  304</span>&#160;      <span class="keyword">const</span> std::string&amp; veth,</div><div class="line"><a name="l00305"></a><span class="lineno">  305</span>&#160;      <span class="keywordtype">bool</span> removeFiltersOnVeth = <span class="keyword">true</span>);</div><div class="line"><a name="l00306"></a><span class="lineno">  306</span>&#160;</div><div class="line"><a name="l00307"></a><span class="lineno">  307</span>&#160;  <span class="comment">// Return the scripts that will be executed in the child context.</span></div><div class="line"><a name="l00308"></a><span class="lineno">  308</span>&#160;  std::string scripts(Info* info);</div><div class="line"><a name="l00309"></a><span class="lineno">  309</span>&#160;</div><div class="line"><a name="l00310"></a><span class="lineno">  310</span>&#160;  uint16_t getNextFlowId();</div><div class="line"><a name="l00311"></a><span class
 ="lineno">  311</span>&#160;</div><div class="line"><a name="l00312"></a><span class="lineno">  312</span>&#160;  <span class="keyword">const</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Flags.html">Flags</a> <a class="code" href="decoder_8hpp.html#abb0829cce9dd20a40ae0d86890ae85c6">flags</a>;</div><div class="line"><a name="l00313"></a><span class="lineno">  313</span>&#160;  <span class="keyword">const</span> std::string bindMountRoot;</div><div class="line"><a name="l00314"></a><span class="lineno">  314</span>&#160;</div><div class="line"><a name="l00315"></a><span class="lineno">  315</span>&#160;  <span class="keyword">const</span> std::string <a class="code" href="namespacerouting_1_1link.html#a9d1bc4ad0c1ed50d48b8349fe74ba0ee">eth0</a>;</div><div class="line"><a name="l00316"></a><span class="lineno">  316</span>&#160;  <span class="keyword">const</span> std::string <a class="code" href="namespacerouting_1_1link.html#a6051222dd27cef97f932844536a64f1a">lo</
 a>;</div><div class="line"><a name="l00317"></a><span class="lineno">  317</span>&#160;  <span class="keyword">const</span> <a class="code" href="classnet_1_1MAC.html">net::MAC</a> hostMAC;</div><div class="line"><a name="l00318"></a><span class="lineno">  318</span>&#160;  <span class="keyword">const</span> <a class="code" href="classnet_1_1IP_1_1Network.html">net::IP::Network</a> hostIPNetwork;</div><div class="line"><a name="l00319"></a><span class="lineno">  319</span>&#160;  <span class="keyword">const</span> <span class="keywordtype">size_t</span> hostEth0MTU;</div><div class="line"><a name="l00320"></a><span class="lineno">  320</span>&#160;  <span class="keyword">const</span> <a class="code" href="classnet_1_1IP.html">net::IP</a> hostDefaultGateway;</div><div class="line"><a name="l00321"></a><span class="lineno">  321</span>&#160;  <span class="keyword">const</span> <a class="code" href="classrouting_1_1Handle.html">routing::Handle</a> hostTxFqCodelHandle;</div><div class="
 line"><a name="l00322"></a><span class="lineno">  322</span>&#160;</div><div class="line"><a name="l00323"></a><span class="lineno">  323</span>&#160;  <span class="comment">// Describe the host network configurations. It is a map between</span></div><div class="line"><a name="l00324"></a><span class="lineno">  324</span>&#160;  <span class="comment">// configure proc files (e.g., /proc/sys/net/core/somaxconn) and</span></div><div class="line"><a name="l00325"></a><span class="lineno">  325</span>&#160;  <span class="comment">// values of the configure proc files.</span></div><div class="line"><a name="l00326"></a><span class="lineno">  326</span>&#160;  <span class="keyword">const</span> <a class="code" href="classhashmap.html">hashmap&lt;std::string, std::string&gt;</a> hostNetworkConfigurations;</div><div class="line"><a name="l00327"></a><span class="lineno">  327</span>&#160;</div><div class="line"><a name="l00328"></a><span class="lineno">  328</span>&#160;  <span class="comme
 nt">// The optional throughput limit to containers&#39; egress traffic.</span></div><div class="line"><a name="l00329"></a><span class="lineno">  329</span>&#160;  <span class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;Bytes&gt;</a> egressRateLimitPerContainer;</div><div class="line"><a name="l00330"></a><span class="lineno">  330</span>&#160;</div><div class="line"><a name="l00331"></a><span class="lineno">  331</span>&#160;  <span class="comment">// All the non-ephemeral ports managed by the slave, as passed in</span></div><div class="line"><a name="l00332"></a><span class="lineno">  332</span>&#160;  <span class="comment">// via flags.resources.</span></div><div class="line"><a name="l00333"></a><span class="lineno">  333</span>&#160;  <span class="keyword">const</span> <a class="code" href="classIntervalSet.html">IntervalSet&lt;uint16_t&gt;</a> managedNonEphemeralPorts;</div><div class="line"><a name="l00334"></a><span class="lineno">  334</span>&#1
 60;</div><div class="line"><a name="l00335"></a><span class="lineno">  335</span>&#160;  <a class="code" href="classprocess_1_1Owned.html">process::Owned&lt;EphemeralPortsAllocator&gt;</a> ephemeralPortsAllocator;</div><div class="line"><a name="l00336"></a><span class="lineno">  336</span>&#160;</div><div class="line"><a name="l00337"></a><span class="lineno">  337</span>&#160;  <span class="comment">// Store a set of unused flow ID&#39;s on this slave.</span></div><div class="line"><a name="l00338"></a><span class="lineno">  338</span>&#160;  std::set&lt;uint16_t&gt; freeFlowIds;</div><div class="line"><a name="l00339"></a><span class="lineno">  339</span>&#160;</div><div class="line"><a name="l00340"></a><span class="lineno">  340</span>&#160;  <a class="code" href="classhashmap.html">hashmap&lt;ContainerID, Info*&gt;</a> <a class="code" href="namespacerouting_1_1diagnosis_1_1socket.html#a8937277756951dcc28f2dbdbd9ea24d7">infos</a>;</div><div class="line"><a name="l00341"></a><sp
 an class="lineno">  341</span>&#160;</div><div class="line"><a name="l00342"></a><span class="lineno">  342</span>&#160;  <span class="comment">// Recovered containers from a previous run that weren&#39;t managed by</span></div><div class="line"><a name="l00343"></a><span class="lineno">  343</span>&#160;  <span class="comment">// the network isolator.</span></div><div class="line"><a name="l00344"></a><span class="lineno">  344</span>&#160;  <a class="code" href="classhashset.html">hashset&lt;ContainerID&gt;</a> unmanaged;</div><div class="line"><a name="l00345"></a><span class="lineno">  345</span>&#160;};</div><div class="line"><a name="l00346"></a><span class="lineno">  346</span>&#160;</div><div class="line"><a name="l00347"></a><span class="lineno">  347</span>&#160;</div><div class="line"><a name="l00348"></a><span class="lineno">  348</span>&#160;<span class="comment">// Defines the subcommand for &#39;update&#39; that needs to be executed by a</span></div><div class="line">
 <a name="l00349"></a><span class="lineno">  349</span>&#160;<span class="comment">// subprocess to update the filters inside a container.</span></div><div class="line"><a name="l00350"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1slave_1_1PortMappingUpdate.html">  350</a></span>&#160;<span class="keyword">class </span><a class="code" href="classmesos_1_1internal_1_1slave_1_1PortMappingUpdate.html">PortMappingUpdate</a> : <span class="keyword">public</span> <a class="code" href="classSubcommand.html">Subcommand</a></div><div class="line"><a name="l00351"></a><span class="lineno">  351</span>&#160;{</div><div class="line"><a name="l00352"></a><span class="lineno">  352</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00353"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1slave_1_1PortMappingUpdate.html#a81ecc0a07343c1ed2adf4e3a05d8bde6">  353</a></span>&#160;  <span class="keyword">static</span> <spa
 n class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classmesos_1_1internal_1_1slave_1_1PortMappingUpdate.html#a81ecc0a07343c1ed2adf4e3a05d8bde6">NAME</a>;</div><div class="line"><a name="l00354"></a><span class="lineno">  354</span>&#160;</div><div class="line"><a name="l00355"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1slave_1_1PortMappingUpdate_1_1Flags.html">  355</a></span>&#160;  <span class="keyword">struct </span><a class="code" href="structmesos_1_1internal_1_1slave_1_1PortMappingUpdate_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="l00356"></a><span class="lineno">  356</span>&#160;  {</div><div class="line"><a name="l00357"></a><span class="lineno">  357</span>&#160;    <a class="code" href="structmesos_1_1internal_1_1slave_1_1PortMappingUpdate_1_1
 Flags.html">Flags</a>();</div><div class="line"><a name="l00358"></a><span class="lineno">  358</span>&#160;</div><div class="line"><a name="l00359"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1slave_1_1PortMappingUpdate_1_1Flags.html#a940160ab2ebdbdf795b588bb55ccaa78">  359</a></span>&#160;    <a class="code" href="classOption.html">Option&lt;std::string&gt;</a> <a class="code" href="structmesos_1_1internal_1_1slave_1_1PortMappingUpdate_1_1Flags.html#a940160ab2ebdbdf795b588bb55ccaa78">eth0_name</a>;</div><div class="line"><a name="l00360"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1slave_1_1PortMappingUpdate_1_1Flags.html#a5a391668353a74d57d3934e297b4b3b9">  360</a></span>&#160;    <a class="code" href="classOption.html">Option&lt;std::string&gt;</a> <a class="code" href="structmesos_1_1internal_1_1slave_1_1PortMappingUpdate_1_1Flags.html#a5a391668353a74d57d3934e297b4b3b9">lo_name</a>;</div><div class="line"><a name="l00361
 "></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1slave_1_1PortMappingUpdate_1_1Flags.html#a366f255e672049daeac8235dcd175d58">  361</a></span>&#160;    <a class="code" href="classOption.html">Option&lt;pid_t&gt;</a> <a class="code" href="structmesos_1_1internal_1_1slave_1_1PortMappingUpdate_1_1Flags.html#a366f255e672049daeac8235dcd175d58">pid</a>;</div><div class="line"><a name="l00362"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1slave_1_1PortMappingUpdate_1_1Flags.html#a2f01f58b5e10762cc33044cfe5b77084">  362</a></span>&#160;    <a class="code" href="classOption.html">Option&lt;JSON::Object&gt;</a> <a class="code" href="structmesos_1_1internal_1_1slave_1_1PortMappingUpdate_1_1Flags.html#a2f01f58b5e10762cc33044cfe5b77084">ports_to_add</a>;</div><div class="line"><a name="l00363"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1slave_1_1PortMappingUpdate_1_1Flags.html#a7afd367793ea90789e03435ae7a11d27"> 
  363</a></span>&#160;    <a class="code" href="classOption.html">Option&lt;JSON::Object&gt;</a> <a class="code" href="structmesos_1_1internal_1_1slave_1_1PortMappingUpdate_1_1Flags.html#a7afd367793ea90789e03435ae7a11d27">ports_to_remove</a>;</div><div class="line"><a name="l00364"></a><span class="lineno">  364</span>&#160;  };</div><div class="line"><a name="l00365"></a><span class="lineno">  365</span>&#160;</div><div class="line"><a name="l00366"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1slave_1_1PortMappingUpdate.html#a6cd9d283b9847515ec1b0b021579fb70">  366</a></span>&#160;  <a class="code" href="classmesos_1_1internal_1_1slave_1_1PortMappingUpdate.html#a6cd9d283b9847515ec1b0b021579fb70">PortMappingUpdate</a>() : <a class="code" href="classSubcommand.html">Subcommand</a>(NAME) {}</div><div class="line"><a name="l00367"></a><span class="lineno">  367</span>&#160;</div><div class="line"><a name="l00368"></a><span class="lineno"><a class="line" href=
 "classmesos_1_1internal_1_1slave_1_1PortMappingUpdate.html#a3c352740646f3580336fbe9d1442a22f">  368</a></span>&#160;  <a class="code" href="structmesos_1_1internal_1_1slave_1_1PortMappingUpdate_1_1Flags.html">Flags</a> <a class="code" href="classmesos_1_1internal_1_1slave_1_1PortMappingUpdate.html#a3c352740646f3580336fbe9d1442a22f">flags</a>;</div><div class="line"><a name="l00369"></a><span class="lineno">  369</span>&#160;</div><div class="line"><a name="l00370"></a><span class="lineno">  370</span>&#160;<span class="keyword">protected</span>:</div><div class="line"><a name="l00371"></a><span class="lineno">  371</span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="namespacemesos_1_1internal_1_1tests.html#a1526213546914662d7a58263f68d11bc">execute</a>();</div><div class="line"><a name="l00372"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1slave_1_1PortMappingUpdate.html#a8bb4e71fe9df32e2638e81ef7f8
 bc5f4">  372</a></span>&#160;  <span class="keyword">virtual</span> <a class="code" href="classflags_1_1FlagsBase.html">flags::FlagsBase</a>* <a class="code" href="classmesos_1_1internal_1_1slave_1_1PortMappingUpdate.html#a8bb4e71fe9df32e2638e81ef7f8bc5f4">getFlags</a>() { <span class="keywordflow">return</span> &amp;<a class="code" href="decoder_8hpp.html#abb0829cce9dd20a40ae0d86890ae85c6">flags</a>; }</div><div class="line"><a name="l00373"></a><span class="lineno">  373</span>&#160;};</div><div class="line"><a name="l00374"></a><span class="lineno">  374</span>&#160;</div><div class="line"><a name="l00375"></a><span class="lineno">  375</span>&#160;</div><div class="line"><a name="l00376"></a><span class="lineno">  376</span>&#160;<span class="comment">// Defines the subcommand for &#39;statistics&#39; that needs to be executed</span></div><div class="line"><a name="l00377"></a><span class="lineno">  377</span>&#160;<span class="comment">// by a subprocess to retrieve newtork sta
 tistics from inside a</span></div><div class="line"><a name="l00378"></a><span class="lineno">  378</span>&#160;<span class="comment">// container.</span></div><div class="line"><a name="l00379"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1slave_1_1PortMappingStatistics.html">  379</a></span>&#160;<span class="keyword">class </span><a class="code" href="classmesos_1_1internal_1_1slave_1_1PortMappingStatistics.html">PortMappingStatistics</a> : <span class="keyword">public</span> <a class="code" href="classSubcommand.html">Subcommand</a></div><div class="line"><a name="l00380"></a><span class="lineno">  380</span>&#160;{</div><div class="line"><a name="l00381"></a><span class="lineno">  381</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00382"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1slave_1_1PortMappingStatistics.html#a678d4033074fb6dcdc22bacf9803a4b3">  382</a></span>&#160;  <span class="k
 eyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classmesos_1_1internal_1_1slave_1_1PortMappingStatistics.html#a678d4033074fb6dcdc22bacf9803a4b3">NAME</a>;</div><div class="line"><a name="l00383"></a><span class="lineno">  383</span>&#160;</div><div class="line"><a name="l00384"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1slave_1_1PortMappingStatistics_1_1Flags.html">  384</a></span>&#160;  <span class="keyword">struct </span><a class="code" href="structmesos_1_1internal_1_1slave_1_1PortMappingStatistics_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="l00385"></a><span class="lineno">  385</span>&#160;  {</div><div class="line"><a name="l00386"></a><span class="lineno">  386</span>&#160;    <a class="code" href="structmesos_1_1inte
 rnal_1_1slave_1_1PortMappingStatistics_1_1Flags.html">Flags</a>();</div><div class="line"><a name="l00387"></a><span class="lineno">  387</span>&#160;</div><div class="line"><a name="l00388"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1slave_1_1PortMappingStatistics_1_1Flags.html#aa321e8cfac80a2f9a2e395821c5ff6df">  388</a></span>&#160;    <a class="code" href="classOption.html">Option&lt;std::string&gt;</a> <a class="code" href="structmesos_1_1internal_1_1slave_1_1PortMappingStatistics_1_1Flags.html#aa321e8cfac80a2f9a2e395821c5ff6df">eth0_name</a>;</div><div class="line"><a name="l00389"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1slave_1_1PortMappingStatistics_1_1Flags.html#a623547147c8fc85829b30351e75f849e">  389</a></span>&#160;    <a class="code" href="classOption.html">Option&lt;pid_t&gt;</a> <a class="code" href="structmesos_1_1internal_1_1slave_1_1PortMappingStatistics_1_1Flags.html#a623547147c8fc85829b30351e75f849e"
 >pid</a>;</div><div class="line"><a name="l00390"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1slave_1_1PortMappingStatistics_1_1Flags.html#a9f33b77c7fa7ecbc8860f0d82a9d3d94">  390</a></span>&#160;    <span class="keywordtype">bool</span> <a class="code" href="structmesos_1_1internal_1_1slave_1_1PortMappingStatistics_1_1Flags.html#a9f33b77c7fa7ecbc8860f0d82a9d3d94">enable_socket_statistics_summary</a>;</div><div class="line"><a name="l00391"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1slave_1_1PortMappingStatistics_1_1Flags.html#ab20389b12b4ce243d74d43132ff5a490">  391</a></span>&#160;    <span class="keywordtype">bool</span> <a class="code" href="structmesos_1_1internal_1_1slave_1_1PortMappingStatistics_1_1Flags.html#ab20389b12b4ce243d74d43132ff5a490">enable_socket_statistics_details</a>;</div><div class="line"><a name="l00392"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1slave_1_1PortMappingSta
 tistics_1_1Flags.html#ad04d37eba848f9f1639d7214f1b3b949">  392</a></span>&#160;    <span class="keywordtype">bool</span> <a class="code" href="structmesos_1_1internal_1_1slave_1_1PortMappingStatistics_1_1Flags.html#ad04d37eba848f9f1639d7214f1b3b949">enable_snmp_statistics</a>;</div><div class="line"><a name="l00393"></a><span class="lineno">  393</span>&#160;  };</div><div class="line"><a name="l00394"></a><span class="lineno">  394</span>&#160;</div><div class="line"><a name="l00395"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1slave_1_1PortMappingStatistics.html#af7ae85f4202db3e333642bbf905f2df3">  395</a></span>&#160;  <a class="code" href="classmesos_1_1internal_1_1slave_1_1PortMappingStatistics.html#af7ae85f4202db3e333642bbf905f2df3">PortMappingStatistics</a>() : <a class="code" href="classSubcommand.html">Subcommand</a>(NAME) {}</div><div class="line"><a name="l00396"></a><span class="lineno">  396</span>&#160;</div><div class="line"><a name="l00397
 "></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1slave_1_1PortMappingStatistics.html#ab95778fac9a664a603a9979a6004c72e">  397</a></span>&#160;  <a class="code" href="structmesos_1_1internal_1_1slave_1_1PortMappingStatistics_1_1Flags.html">Flags</a> <a class="code" href="classmesos_1_1internal_1_1slave_1_1PortMappingStatistics.html#ab95778fac9a664a603a9979a6004c72e">flags</a>;</div><div class="line"><a name="l00398"></a><span class="lineno">  398</span>&#160;</div><div class="line"><a name="l00399"></a><span class="lineno">  399</span>&#160;<span class="keyword">protected</span>:</div><div class="line"><a name="l00400"></a><span class="lineno">  400</span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="namespacemesos_1_1internal_1_1tests.html#a1526213546914662d7a58263f68d11bc">execute</a>();</div><div class="line"><a name="l00401"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1
 slave_1_1PortMappingStatistics.html#ac8598ef759b3df5dda01440b50cc274d">  401</a></span>&#160;  <span class="keyword">virtual</span> <a class="code" href="classflags_1_1FlagsBase.html">flags::FlagsBase</a>* <a class="code" href="classmesos_1_1internal_1_1slave_1_1PortMappingStatistics.html#ac8598ef759b3df5dda01440b50cc274d">getFlags</a>() { <span class="keywordflow">return</span> &amp;<a class="code" href="decoder_8hpp.html#abb0829cce9dd20a40ae0d86890ae85c6">flags</a>; }</div><div class="line"><a name="l00402"></a><span class="lineno">  402</span>&#160;};</div><div class="line"><a name="l00403"></a><span class="lineno">  403</span>&#160;</div><div class="line"><a name="l00404"></a><span class="lineno">  404</span>&#160;} <span class="comment">// namespace slave {</span></div><div class="line"><a name="l00405"></a><span class="lineno">  405</span>&#160;} <span class="comment">// namespace internal {</span></div><div class="line"><a name="l00406"></a><span class="lineno">  406</span>&#
 160;} <span class="comment">// namespace mesos {</span></div><div class="line"><a name="l00407"></a><span class="lineno">  407</span>&#160;</div><div class="line"><a name="l00408"></a><span class="lineno">  408</span>&#160;<span class="preprocessor">#endif // __PORT_MAPPING_ISOLATOR_HPP__</span></div><div class="ttc" id="namespacemesos_1_1internal_1_1log_1_1protocol_html_afa485608d261b11b9b4c619b4b4d6e28"><div class="ttname"><a href="namespacemesos_1_1internal_1_1log_1_1protocol.html#afa485608d261b11b9b4c619b4b4d6e28">mesos::internal::log::protocol::recover</a></div><div class="ttdeci">Protocol&lt; RecoverRequest, RecoverResponse &gt; recover</div></div>
+<a href="port__mapping_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>&#160;<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>&#160;<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>&#160;<span class="comment">// distributed with this work for additional information</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<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>&#160;<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>&#160;<span class="comment">// &quot;License&quot;); you may not use this file except in compliance</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<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>&#160;<span class="comment">// dis
 tributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<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>&#160;<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>&#160;<span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;</div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="preprocessor">#ifndef __PORT_MAPPING_ISOLATOR_HPP__</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="preprocessor">#define __PORT_MAPPING_ISOLATOR_HPP__</span></div><
 div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="preprocessor">#include &lt;stdint.h&gt;</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;</div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="preprocessor">#include &lt;sys/types.h&gt;</span></div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;</div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="preprocessor">#include &lt;set&gt;</span></div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span></div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<span class="preprocessor">#include &lt;vector&gt;</span></div><div class="line"><a name="l00027"></
 a><span class="lineno">   27</span>&#160;</div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="id_8hpp.html">process/id.hpp</a>&gt;</span></div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="owned_8hpp.html">process/owned.hpp</a>&gt;</span></div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="include_2process_2subprocess_8hpp.html">process/subprocess.hpp</a>&gt;</span></div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;</div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="3rdparty_2libprocess_2include_2process_2metrics_2metrics_8hpp.html">process/metrics/metrics.hpp</a>&gt;</span></div><di
 v class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="counter_8hpp.html">process/metrics/counter.hpp</a>&gt;</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>&#160;<span class="preprocessor">#include &lt;<a class="code" href="bytes_8hpp.html">stout/bytes.hpp</a>&gt;</span></div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="hashmap_8hpp.html">stout/hashmap.hpp</a>&gt;</span></div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="hashset_8hpp.html">stout/hashset.hpp</a>&gt;</span></div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;<span class="preprocessor">#include &lt;<a c
 lass="code" href="3rdparty_2stout_2include_2stout_2ip_8hpp.html">stout/ip.hpp</a>&gt;</span></div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="interval_8hpp.html">stout/interval.hpp</a>&gt;</span></div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="mac_8hpp.html">stout/mac.hpp</a>&gt;</span></div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="none_8hpp.html">stout/none.hpp</a>&gt;</span></div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="option_8hpp.html">stout/option.hpp</a>&gt;</span></div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;<span class="preprocessor">#include &lt;<a clas
 s="code" href="subcommand_8hpp.html">stout/subcommand.hpp</a>&gt;</span></div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;</div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="src_2linux_2routing_2filter_2ip_8hpp.html">linux/routing/filter/ip.hpp</a>&quot;</span></div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;</div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="src_2slave_2flags_8hpp.html">slave/flags.hpp</a>&quot;</span></div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;</div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="src_2slave_2containerizer_2mesos_2isolator_8hpp.html">slave/containerizer/mesos/i
 solator.hpp</a>&quot;</span></div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;</div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacemesos.html">mesos</a> {</div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceinternal.html">internal</a> {</div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;<span class="keyword">namespace </span>slave {</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>&#160;<span class="comment">// The prefix this isolator uses for the virtual ethernet devices.</span></div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;<span class="comment">// NOTE: This constant is 
 exposed for testing.</span></div><div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="namespacemesos_1_1internal_1_1slave.html#a41f03e964f9677db22808730f850ccaf">   57</a></span>&#160;<span class="keyword">inline</span> std::string <a class="code" href="namespacemesos_1_1internal_1_1slave.html#a41f03e964f9677db22808730f850ccaf">PORT_MAPPING_VETH_PREFIX</a>() { <span class="keywordflow">return</span> <span class="stringliteral">&quot;mesos&quot;</span>; }</div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;</div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;</div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;<span class="comment">// The root directory where we bind mount all the namespace handles.</span></div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;<span class="comment">// We choose the directory &#39;/var/run/netns&#39; so 
 that we can use</span></div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;<span class="comment">// iproute2 suite (e.g., ip netns show/exec) to inspect or enter the</span></div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;<span class="comment">// network namespace. This is very useful for debugging purposes.</span></div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;<span class="comment">// NOTE: This constant is exposed for testing.</span></div><div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="namespacemesos_1_1internal_1_1slave.html#a0ef18732ab5fdd1b536ab663f7400b79">   65</a></span>&#160;<span class="keyword">inline</span> std::string <a class="code" href="namespacemesos_1_1internal_1_1slave.html#a0ef18732ab5fdd1b536ab663f7400b79">PORT_MAPPING_BIND_MOUNT_ROOT</a>() { <span class="keywordflow">return</span> <span class="stringliteral">&quot;/var/run/netns
 &quot;</span>; }</div><div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;</div><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;<span class="comment">// The root directory where we keep all the namespace handle</span></div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;<span class="comment">// symlinks. This is introduced in 0.23.0.</span></div><div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;<span class="comment">// NOTE: This constant is exposed for testing.</span></div><div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="namespacemesos_1_1internal_1_1slave.html#a1ecd191f897fc379a18f112fd04a30a1">   70</a></span>&#160;<span class="keyword">inline</span> std::string <a class="code" href="namespacemesos_1_1internal_1_1slave.html#a1ecd191f897fc379a18f112fd04a30a1">PORT_MAPPING_BIND_MOUNT_SYMLINK_ROOT</a>()</div><div class="line"><a name="l00
 071"></a><span class="lineno">   71</span>&#160;{</div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;  <span class="keywordflow">return</span> <span class="stringliteral">&quot;/var/run/mesos/netns&quot;</span>;</div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;}</div><div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;</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>&#160;<span class="comment">// These names are used to identify the traffic control statistics</span></div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;<span class="comment">// output for each of the Linux Traffic Control Qdiscs we report.</span></div><div class="line"><a name="l00078"></a><span class="lineno"><a class="line" href="namespacemesos_1_1internal_1_1slave.html#a589249d396dcac
 88f6d67d8f68b8a630">   78</a></span>&#160;constexpr <span class="keywordtype">char</span> <a class="code" href="namespacemesos_1_1internal_1_1slave.html#a589249d396dcac88f6d67d8f68b8a630">NET_ISOLATOR_BW_LIMIT</a>[] = <span class="stringliteral">&quot;bw_limit&quot;</span>;</div><div class="line"><a name="l00079"></a><span class="lineno"><a class="line" href="namespacemesos_1_1internal_1_1slave.html#a5b7d3c5110866191112df560e56f91a6">   79</a></span>&#160;constexpr <span class="keywordtype">char</span> <a 

<TRUNCATED>

[40/50] mesos-site git commit: Updated the website built from mesos SHA: 7c9c72d.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/dir_01cbbd8dcbf9de3825992568658f467e.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/dir_01cbbd8dcbf9de3825992568658f467e.html b/content/api/latest/c++/dir_01cbbd8dcbf9de3825992568658f467e.html
index 8a92dae..198f190 100644
--- a/content/api/latest/c++/dir_01cbbd8dcbf9de3825992568658f467e.html
+++ b/content/api/latest/c++/dir_01cbbd8dcbf9de3825992568658f467e.html
@@ -53,6 +53,13 @@
 </div><!--header-->
 <div class="contents">
 <table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="subdirs"></a>
+Directories</h2></td></tr>
+<tr class="memitem:dir_0ac73505685689cb4a842e520ca4cca6"><td class="memItemLeft" align="right" valign="top">directory &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dir_0ac73505685689cb4a842e520ca4cca6.html">posix</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:dir_4f303781ded361ff602a549327c53cc9"><td class="memItemLeft" align="right" valign="top">directory &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dir_4f303781ded361ff602a549327c53cc9.html">windows</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="files"></a>
 Files</h2></td></tr>
 <tr class="memitem:authenticator__manager_8hpp"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="authenticator__manager_8hpp.html">authenticator_manager.hpp</a> <a href="authenticator__manager_8hpp_source.html">[code]</a></td></tr>
@@ -71,11 +78,7 @@ Files</h2></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:http__proxy_8hpp"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="http__proxy_8hpp.html">http_proxy.hpp</a> <a href="http__proxy_8hpp_source.html">[code]</a></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:libev_8hpp"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="libev_8hpp.html">libev.hpp</a> <a href="libev_8hpp_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:libevent_8hpp"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="libevent_8hpp.html">libevent.hpp</a> <a href="libevent_8hpp_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:libevent__ssl__socket_8hpp"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="libevent__ssl__socket_8hpp.html">libevent_ssl_socket.hpp</a> <a href="libevent__ssl__socket_8hpp_source.html">[code]</a></td></tr>
+<tr class="memitem:io__internal_8hpp"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="io__internal_8hpp.html">io_internal.hpp</a> <a href="io__internal_8hpp_source.html">[code]</a></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:memory__profiler_8hpp"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="memory__profiler_8hpp.html">memory_profiler.hpp</a> <a href="memory__profiler_8hpp_source.html">[code]</a></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -91,10 +94,6 @@ Files</h2></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:socket__manager_8hpp"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="socket__manager_8hpp.html">socket_manager.hpp</a> <a href="socket__manager_8hpp_source.html">[code]</a></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:subprocess__posix_8hpp"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="subprocess__posix_8hpp.html">subprocess_posix.hpp</a> <a href="subprocess__posix_8hpp_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:subprocess__windows_8hpp"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="subprocess__windows_8hpp.html">subprocess_windows.hpp</a> <a href="subprocess__windows_8hpp_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>
 </div><!-- contents -->
 <!-- start footer part -->

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/dir_0ac73505685689cb4a842e520ca4cca6.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/dir_0ac73505685689cb4a842e520ca4cca6.html b/content/api/latest/c++/dir_0ac73505685689cb4a842e520ca4cca6.html
new file mode 100644
index 0000000..941d47a
--- /dev/null
+++ b/content/api/latest/c++/dir_0ac73505685689cb4a842e520ca4cca6.html
@@ -0,0 +1,76 @@
+<!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: 3rdparty/libprocess/src/posix Directory 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&#160;Page</span></a></li>
+      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li class="current"><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 class="current"><a href="files.html"><span>File&#160;List</span></a></li>
+      <li><a href="globals.html"><span>File&#160;Members</span></a></li>
+    </ul>
+  </div>
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_8cab8f464681f7cc51cee77e79a434cd.html">3rdparty</a></li><li class="navelem"><a class="el" href="dir_043a76de98701f9bddf61b5e98f305ff.html">libprocess</a></li><li class="navelem"><a class="el" href="dir_01cbbd8dcbf9de3825992568658f467e.html">src</a></li><li class="navelem"><a class="el" href="dir_0ac73505685689cb4a842e520ca4cca6.html">posix</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">posix Directory Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="subdirs"></a>
+Directories</h2></td></tr>
+<tr class="memitem:dir_ecbc207ab261ae6376e9b7d1e9eba3c1"><td class="memItemLeft" align="right" valign="top">directory &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dir_ecbc207ab261ae6376e9b7d1e9eba3c1.html">libev</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:dir_b2935a02400d93f2f95b894ab5508ef6"><td class="memItemLeft" align="right" valign="top">directory &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dir_b2935a02400d93f2f95b894ab5508ef6.html">libevent</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="files"></a>
+Files</h2></td></tr>
+<tr class="memitem:src_2posix_2subprocess_8hpp"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="src_2posix_2subprocess_8hpp.html">subprocess.hpp</a> <a href="src_2posix_2subprocess_8hpp_source.html">[code]</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.11
+</small></address>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/dir_1894286df79cf582d947dbc4268b06cf.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/dir_1894286df79cf582d947dbc4268b06cf.html b/content/api/latest/c++/dir_1894286df79cf582d947dbc4268b06cf.html
index e67cdae..40a5dc9 100644
--- a/content/api/latest/c++/dir_1894286df79cf582d947dbc4268b06cf.html
+++ b/content/api/latest/c++/dir_1894286df79cf582d947dbc4268b06cf.html
@@ -162,7 +162,7 @@ Files</h2></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:3rdparty_2libprocess_2include_2process_2statistics_8hpp"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="3rdparty_2libprocess_2include_2process_2statistics_8hpp.html">statistics.hpp</a> <a href="3rdparty_2libprocess_2include_2process_2statistics_8hpp_source.html">[code]</a></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:subprocess_8hpp"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="subprocess_8hpp.html">subprocess.hpp</a> <a href="subprocess_8hpp_source.html">[code]</a></td></tr>
+<tr class="memitem:include_2process_2subprocess_8hpp"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="include_2process_2subprocess_8hpp.html">subprocess.hpp</a> <a href="include_2process_2subprocess_8hpp_source.html">[code]</a></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:system_8hpp"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="system_8hpp.html">system.hpp</a> <a href="system_8hpp_source.html">[code]</a></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/dir_4f303781ded361ff602a549327c53cc9.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/dir_4f303781ded361ff602a549327c53cc9.html b/content/api/latest/c++/dir_4f303781ded361ff602a549327c53cc9.html
new file mode 100644
index 0000000..dafed41
--- /dev/null
+++ b/content/api/latest/c++/dir_4f303781ded361ff602a549327c53cc9.html
@@ -0,0 +1,73 @@
+<!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: 3rdparty/libprocess/src/windows Directory 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&#160;Page</span></a></li>
+      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li class="current"><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 class="current"><a href="files.html"><span>File&#160;List</span></a></li>
+      <li><a href="globals.html"><span>File&#160;Members</span></a></li>
+    </ul>
+  </div>
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_8cab8f464681f7cc51cee77e79a434cd.html">3rdparty</a></li><li class="navelem"><a class="el" href="dir_043a76de98701f9bddf61b5e98f305ff.html">libprocess</a></li><li class="navelem"><a class="el" href="dir_01cbbd8dcbf9de3825992568658f467e.html">src</a></li><li class="navelem"><a class="el" href="dir_4f303781ded361ff602a549327c53cc9.html">windows</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">windows Directory Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="files"></a>
+Files</h2></td></tr>
+<tr class="memitem:windows_2event__loop_8hpp"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="windows_2event__loop_8hpp.html">event_loop.hpp</a> <a href="windows_2event__loop_8hpp_source.html">[code]</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:libwinio_8hpp"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="libwinio_8hpp.html">libwinio.hpp</a> <a href="libwinio_8hpp_source.html">[code]</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:src_2windows_2subprocess_8hpp"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="src_2windows_2subprocess_8hpp.html">subprocess.hpp</a> <a href="src_2windows_2subprocess_8hpp_source.html">[code]</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.11
+</small></address>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/dir_b2935a02400d93f2f95b894ab5508ef6.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/dir_b2935a02400d93f2f95b894ab5508ef6.html b/content/api/latest/c++/dir_b2935a02400d93f2f95b894ab5508ef6.html
new file mode 100644
index 0000000..95111b8
--- /dev/null
+++ b/content/api/latest/c++/dir_b2935a02400d93f2f95b894ab5508ef6.html
@@ -0,0 +1,71 @@
+<!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: 3rdparty/libprocess/src/posix/libevent Directory 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&#160;Page</span></a></li>
+      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li class="current"><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 class="current"><a href="files.html"><span>File&#160;List</span></a></li>
+      <li><a href="globals.html"><span>File&#160;Members</span></a></li>
+    </ul>
+  </div>
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_8cab8f464681f7cc51cee77e79a434cd.html">3rdparty</a></li><li class="navelem"><a class="el" href="dir_043a76de98701f9bddf61b5e98f305ff.html">libprocess</a></li><li class="navelem"><a class="el" href="dir_01cbbd8dcbf9de3825992568658f467e.html">src</a></li><li class="navelem"><a class="el" href="dir_0ac73505685689cb4a842e520ca4cca6.html">posix</a></li><li class="navelem"><a class="el" href="dir_b2935a02400d93f2f95b894ab5508ef6.html">libevent</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">libevent Directory Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="files"></a>
+Files</h2></td></tr>
+<tr class="memitem:libevent_8hpp"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="libevent_8hpp.html">libevent.hpp</a> <a href="libevent_8hpp_source.html">[code]</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:libevent__ssl__socket_8hpp"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="libevent__ssl__socket_8hpp.html">libevent_ssl_socket.hpp</a> <a href="libevent__ssl__socket_8hpp_source.html">[code]</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.11
+</small></address>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/dir_ecbc207ab261ae6376e9b7d1e9eba3c1.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/dir_ecbc207ab261ae6376e9b7d1e9eba3c1.html b/content/api/latest/c++/dir_ecbc207ab261ae6376e9b7d1e9eba3c1.html
new file mode 100644
index 0000000..a8fcd1e
--- /dev/null
+++ b/content/api/latest/c++/dir_ecbc207ab261ae6376e9b7d1e9eba3c1.html
@@ -0,0 +1,69 @@
+<!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: 3rdparty/libprocess/src/posix/libev Directory 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&#160;Page</span></a></li>
+      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li class="current"><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 class="current"><a href="files.html"><span>File&#160;List</span></a></li>
+      <li><a href="globals.html"><span>File&#160;Members</span></a></li>
+    </ul>
+  </div>
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_8cab8f464681f7cc51cee77e79a434cd.html">3rdparty</a></li><li class="navelem"><a class="el" href="dir_043a76de98701f9bddf61b5e98f305ff.html">libprocess</a></li><li class="navelem"><a class="el" href="dir_01cbbd8dcbf9de3825992568658f467e.html">src</a></li><li class="navelem"><a class="el" href="dir_0ac73505685689cb4a842e520ca4cca6.html">posix</a></li><li class="navelem"><a class="el" href="dir_ecbc207ab261ae6376e9b7d1e9eba3c1.html">libev</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">libev Directory Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="files"></a>
+Files</h2></td></tr>
+<tr class="memitem:libev_8hpp"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="libev_8hpp.html">libev.hpp</a> <a href="libev_8hpp_source.html">[code]</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.11
+</small></address>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/docker_2docker_8hpp.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/docker_2docker_8hpp.html b/content/api/latest/c++/docker_2docker_8hpp.html
index 425be11..2a7c792 100644
--- a/content/api/latest/c++/docker_2docker_8hpp.html
+++ b/content/api/latest/c++/docker_2docker_8hpp.html
@@ -62,7 +62,7 @@
 <code>#include &lt;vector&gt;</code><br />
 <code>#include &lt;<a class="el" href="future_8hpp_source.html">process/future.hpp</a>&gt;</code><br />
 <code>#include &lt;<a class="el" href="owned_8hpp_source.html">process/owned.hpp</a>&gt;</code><br />
-<code>#include &lt;<a class="el" href="subprocess_8hpp_source.html">process/subprocess.hpp</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="include_2process_2subprocess_8hpp_source.html">process/subprocess.hpp</a>&gt;</code><br />
 <code>#include &lt;<a class="el" href="duration_8hpp_source.html">stout/duration.hpp</a>&gt;</code><br />
 <code>#include &lt;<a class="el" href="json_8hpp_source.html">stout/json.hpp</a>&gt;</code><br />
 <code>#include &lt;<a class="el" href="none_8hpp_source.html">stout/none.hpp</a>&gt;</code><br />


[18/50] mesos-site git commit: Updated the website built from mesos SHA: 7c9c72d.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/slave_2container__logger_8hpp.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/slave_2container__logger_8hpp.html b/content/api/latest/c++/slave_2container__logger_8hpp.html
index 3a68721..203cd90 100644
--- a/content/api/latest/c++/slave_2container__logger_8hpp.html
+++ b/content/api/latest/c++/slave_2container__logger_8hpp.html
@@ -61,7 +61,7 @@
 <code>#include &lt;<a class="el" href="include_2mesos_2mesos_8hpp_source.html">mesos/mesos.hpp</a>&gt;</code><br />
 <code>#include &lt;<a class="el" href="include_2mesos_2slave_2containerizer_8hpp_source.html">mesos/slave/containerizer.hpp</a>&gt;</code><br />
 <code>#include &lt;<a class="el" href="future_8hpp_source.html">process/future.hpp</a>&gt;</code><br />
-<code>#include &lt;<a class="el" href="subprocess_8hpp_source.html">process/subprocess.hpp</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="include_2process_2subprocess_8hpp_source.html">process/subprocess.hpp</a>&gt;</code><br />
 <code>#include &lt;<a class="el" href="3rdparty_2libprocess_2include_2process_2shared_8hpp_source.html">process/shared.hpp</a>&gt;</code><br />
 <code>#include &lt;<a class="el" href="try_8hpp_source.html">stout/try.hpp</a>&gt;</code><br />
 <code>#include &lt;<a class="el" href="nothing_8hpp_source.html">stout/nothing.hpp</a>&gt;</code><br />

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/slave_2container__logger_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/slave_2container__logger_8hpp_source.html b/content/api/latest/c++/slave_2container__logger_8hpp_source.html
index 8517aa2..b1baab0 100644
--- a/content/api/latest/c++/slave_2container__logger_8hpp_source.html
+++ b/content/api/latest/c++/slave_2container__logger_8hpp_source.html
@@ -52,9 +52,9 @@
 <div class="title">container_logger.hpp</div>  </div>
 </div><!--header-->
 <div class="contents">
-<a href="slave_2container__logger_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>&#160;<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>&#160;<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>&#160;<span class="comment">// distributed with this work for additional information</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<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>&#160;<span class="comment">// to you under the Apache License, Version 2.0 (the</span></div><div class="line"><a name="l000
 06"></a><span class="lineno">    6</span>&#160;<span class="comment">// &quot;License&quot;); you may not use this file except in compliance</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<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>&#160;<span class="comm
 ent">// distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<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>&#160;<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>&#160;<span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;</div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="preprocessor">#ifndef __MESOS_SLAVE_CONTAINER_LOGGER_HPP__</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="preprocessor">#define __MESOS_SLAVE_CONTAINER_L
 OGGER_HPP__</span></div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="preprocessor">#include &lt;map&gt;</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span></div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="preprocessor">#include &lt;vector&gt;</span></div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;</div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="include_2mesos_2mesos_8hpp.html">mesos/mesos.hpp</a>&gt;</span></div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;</div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<span class="p
 reprocessor">#include &lt;<a class="code" href="include_2mesos_2slave_2containerizer_8hpp.html">mesos/slave/containerizer.hpp</a>&gt;</span></div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;</div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="future_8hpp.html">process/future.hpp</a>&gt;</span></div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="subprocess_8hpp.html">process/subprocess.hpp</a>&gt;</span></div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="3rdparty_2libprocess_2include_2process_2shared_8hpp.html">process/shared.hpp</a>&gt;</span></div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;</div><div class="line"><a name="l00032"></a><span
  class="lineno">   32</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="try_8hpp.html">stout/try.hpp</a>&gt;</span></div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="nothing_8hpp.html">stout/nothing.hpp</a>&gt;</span></div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="option_8hpp.html">stout/option.hpp</a>&gt;</span></div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="unreachable_8hpp.html">stout/unreachable.hpp</a>&gt;</span></div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;</div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacemesos.html">mesos</a> {
 </div><div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="namespacemesos_1_1slave.html">   38</a></span>&#160;<span class="keyword">namespace </span>slave {</div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;</div><div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="classmesos_1_1slave_1_1ContainerLogger.html">   52</a></span>&#160;<span class="keyword">class </span><a class="code" href="classmesos_1_1slave_1_1ContainerLogger.html">ContainerLogger</a></div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;{</div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;  <span class="keyword">static</span> <a class="code" href="classTry.html">Try&lt;ContainerLogger*&gt;</a> <a class="code" href="classmesos_1_1slave_1_1ContainerL
 ogger.html#a730e7d402fa06c15886eff94cf0b40d5">create</a>(<span class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;std::string&gt;</a>&amp; <a class="code" href="namespacemesos_1_1internal_1_1fs.html#a2343e2642db514496ba8380776487fba">type</a>);</div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;</div><div class="line"><a name="l00064"></a><span class="lineno"><a class="line" href="classmesos_1_1slave_1_1ContainerLogger.html#a2655dbc87f01116b204bcc03a199da16">   64</a></span>&#160;  <span class="keyword">virtual</span> <a class="code" href="classmesos_1_1slave_1_1ContainerLogger.html#a2655dbc87f01116b204bcc03a199da16">~ContainerLogger</a>() {}</div><div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;</div><div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;  <span class="keyword">virtual</span> <a class="code" href="classTry.html">Try&lt;Nothing&gt;</a> <a class="code" href
 ="classmesos_1_1slave_1_1ContainerLogger.html#abf91d08c21dae805eed4fdd9f9f5fbd5">initialize</a>() = 0;</div><div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;</div><div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;  <span class="keyword">virtual</span> <a class="code" href="classprocess_1_1Future.html">process::Future&lt;ContainerIO&gt;</a> <a class="code" href="classmesos_1_1slave_1_1ContainerLogger.html#a71d26b11f639c21a14187a1b2c0d19b8">prepare</a>(</div><div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;      <span class="keyword">const</span> ContainerID&amp; containerId,</div><div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;      <span class="keyword">const</span> ContainerConfig&amp; containerConfig) = 0;</div><div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;};</div><div class="line"><a name="l00104"></a><span class="lineno">  104</span>
 &#160;</div><div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;} <span class="comment">// namespace slave {</span></div><div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;} <span class="comment">// namespace mesos {</span></div><div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;</div><div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;<span class="preprocessor">#endif // __MESOS_SLAVE_CONTAINER_LOGGER_HPP__</span></div><div class="ttc" id="classOption_html"><div class="ttname"><a href="classOption.html">Option&lt; std::string &gt;</a></div></div>
+<a href="slave_2container__logger_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>&#160;<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>&#160;<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>&#160;<span class="comment">// distributed with this work for additional information</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<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>&#160;<span class="comment">// to you under the Apache License, Version 2.0 (the</span></div><div class="line"><a name="l000
 06"></a><span class="lineno">    6</span>&#160;<span class="comment">// &quot;License&quot;); you may not use this file except in compliance</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<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>&#160;<span class="comm
 ent">// distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<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>&#160;<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>&#160;<span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;</div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="preprocessor">#ifndef __MESOS_SLAVE_CONTAINER_LOGGER_HPP__</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="preprocessor">#define __MESOS_SLAVE_CONTAINER_L
 OGGER_HPP__</span></div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="preprocessor">#include &lt;map&gt;</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span></div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="preprocessor">#include &lt;vector&gt;</span></div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;</div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="include_2mesos_2mesos_8hpp.html">mesos/mesos.hpp</a>&gt;</span></div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;</div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<span class="p
 reprocessor">#include &lt;<a class="code" href="include_2mesos_2slave_2containerizer_8hpp.html">mesos/slave/containerizer.hpp</a>&gt;</span></div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;</div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="future_8hpp.html">process/future.hpp</a>&gt;</span></div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="include_2process_2subprocess_8hpp.html">process/subprocess.hpp</a>&gt;</span></div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="3rdparty_2libprocess_2include_2process_2shared_8hpp.html">process/shared.hpp</a>&gt;</span></div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;</div><div class="line"><a name=
 "l00032"></a><span class="lineno">   32</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="try_8hpp.html">stout/try.hpp</a>&gt;</span></div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="nothing_8hpp.html">stout/nothing.hpp</a>&gt;</span></div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="option_8hpp.html">stout/option.hpp</a>&gt;</span></div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="unreachable_8hpp.html">stout/unreachable.hpp</a>&gt;</span></div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;</div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacemesos
 .html">mesos</a> {</div><div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="namespacemesos_1_1slave.html">   38</a></span>&#160;<span class="keyword">namespace </span>slave {</div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;</div><div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="classmesos_1_1slave_1_1ContainerLogger.html">   52</a></span>&#160;<span class="keyword">class </span><a class="code" href="classmesos_1_1slave_1_1ContainerLogger.html">ContainerLogger</a></div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;{</div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;  <span class="keyword">static</span> <a class="code" href="classTry.html">Try&lt;ContainerLogger*&gt;</a> <a class="code" href="classmesos_1_1s
 lave_1_1ContainerLogger.html#a730e7d402fa06c15886eff94cf0b40d5">create</a>(<span class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;std::string&gt;</a>&amp; <a class="code" href="namespacemesos_1_1internal_1_1fs.html#a2343e2642db514496ba8380776487fba">type</a>);</div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;</div><div class="line"><a name="l00064"></a><span class="lineno"><a class="line" href="classmesos_1_1slave_1_1ContainerLogger.html#a2655dbc87f01116b204bcc03a199da16">   64</a></span>&#160;  <span class="keyword">virtual</span> <a class="code" href="classmesos_1_1slave_1_1ContainerLogger.html#a2655dbc87f01116b204bcc03a199da16">~ContainerLogger</a>() {}</div><div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;</div><div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;  <span class="keyword">virtual</span> <a class="code" href="classTry.html">Try&lt;Nothing&gt;</a> <a
  class="code" href="classmesos_1_1slave_1_1ContainerLogger.html#abf91d08c21dae805eed4fdd9f9f5fbd5">initialize</a>() = 0;</div><div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;</div><div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;  <span class="keyword">virtual</span> <a class="code" href="classprocess_1_1Future.html">process::Future&lt;ContainerIO&gt;</a> <a class="code" href="classmesos_1_1slave_1_1ContainerLogger.html#a71d26b11f639c21a14187a1b2c0d19b8">prepare</a>(</div><div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;      <span class="keyword">const</span> ContainerID&amp; containerId,</div><div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;      <span class="keyword">const</span> ContainerConfig&amp; containerConfig) = 0;</div><div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;};</div><div class="line"><a name="l00104"></a><span class="li
 neno">  104</span>&#160;</div><div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;} <span class="comment">// namespace slave {</span></div><div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;} <span class="comment">// namespace mesos {</span></div><div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;</div><div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;<span class="preprocessor">#endif // __MESOS_SLAVE_CONTAINER_LOGGER_HPP__</span></div><div class="ttc" id="classOption_html"><div class="ttname"><a href="classOption.html">Option&lt; std::string &gt;</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="subprocess_8hpp_html"><div class="ttname"><a href="subprocess_8hpp.html">subprocess.hpp</a></div></div>
+<div class="ttc" id="include_2process_2subprocess_8hpp_html"><div class="ttname"><a href="include_2process_2subprocess_8hpp.html">subprocess.hpp</a></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="3rdparty_2libprocess_2include_2process_2shared_8hpp_html"><div class="ttname"><a href="3rdparty_2libprocess_2include_2process_2shared_8hpp.html">shared.hpp</a></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/09fd0301/content/api/latest/c++/slave_2containerizer_2mesos_2launcher_8hpp.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/slave_2containerizer_2mesos_2launcher_8hpp.html b/content/api/latest/c++/slave_2containerizer_2mesos_2launcher_8hpp.html
index 3ea55dc..eda3cb2 100644
--- a/content/api/latest/c++/slave_2containerizer_2mesos_2launcher_8hpp.html
+++ b/content/api/latest/c++/slave_2containerizer_2mesos_2launcher_8hpp.html
@@ -62,7 +62,7 @@
 <code>#include &lt;<a class="el" href="include_2mesos_2mesos_8hpp_source.html">mesos/mesos.hpp</a>&gt;</code><br />
 <code>#include &lt;<a class="el" href="include_2mesos_2slave_2isolator_8hpp_source.html">mesos/slave/isolator.hpp</a>&gt;</code><br />
 <code>#include &lt;<a class="el" href="future_8hpp_source.html">process/future.hpp</a>&gt;</code><br />
-<code>#include &lt;<a class="el" href="subprocess_8hpp_source.html">process/subprocess.hpp</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="include_2process_2subprocess_8hpp_source.html">process/subprocess.hpp</a>&gt;</code><br />
 <code>#include &lt;<a class="el" href="3rdparty_2stout_2include_2stout_2flags_8hpp_source.html">stout/flags.hpp</a>&gt;</code><br />
 <code>#include &lt;<a class="el" href="hashmap_8hpp_source.html">stout/hashmap.hpp</a>&gt;</code><br />
 <code>#include &lt;<a class="el" href="hashset_8hpp_source.html">stout/hashset.hpp</a>&gt;</code><br />

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/slave_2containerizer_2mesos_2launcher_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/slave_2containerizer_2mesos_2launcher_8hpp_source.html b/content/api/latest/c++/slave_2containerizer_2mesos_2launcher_8hpp_source.html
index dee9214..8de02d6 100644
--- a/content/api/latest/c++/slave_2containerizer_2mesos_2launcher_8hpp_source.html
+++ b/content/api/latest/c++/slave_2containerizer_2mesos_2launcher_8hpp_source.html
@@ -52,12 +52,12 @@
 <div class="title">launcher.hpp</div>  </div>
 </div><!--header-->
 <div class="contents">
-<a href="slave_2containerizer_2mesos_2launcher_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>&#160;<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>&#160;<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>&#160;<span class="comment">// distributed with this work for additional information</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<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>&#160;<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>&#160;<span class="comment">// &quot;License&quot;); you may not use this file except in compliance</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<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>&#160;<spa
 n class="comment">// distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<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>&#160;<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>&#160;<span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;</div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="preprocessor">#ifndef __LAUNCHER_HPP__</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="preprocessor">#define __LAUNCHER_HPP__</span></div><di
 v class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="preprocessor">#include &lt;sys/types.h&gt;</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;</div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="preprocessor">#include &lt;map&gt;</span></div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span></div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="preprocessor">#include &lt;vector&gt;</span></div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;</div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="include_2mesos_2mesos_8hpp.html">mesos/mes
 os.hpp</a>&gt;</span></div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;</div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="include_2mesos_2slave_2isolator_8hpp.html">mesos/slave/isolator.hpp</a>&gt;</span></div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;</div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="future_8hpp.html">process/future.hpp</a>&gt;</span></div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="subprocess_8hpp.html">process/subprocess.hpp</a>&gt;</span></div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;<span clas
 s="preprocessor">#include &lt;<a class="code" href="3rdparty_2stout_2include_2stout_2flags_8hpp.html">stout/flags.hpp</a>&gt;</span></div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="hashmap_8hpp.html">stout/hashmap.hpp</a>&gt;</span></div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="hashset_8hpp.html">stout/hashset.hpp</a>&gt;</span></div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="lambda_8hpp.html">stout/lambda.hpp</a>&gt;</span></div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="option_8hpp.html">stout/option.hpp</a>&gt;</span></div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#1
 60;<span class="preprocessor">#include &lt;<a class="code" href="try_8hpp.html">stout/try.hpp</a>&gt;</span></div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;</div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="src_2slave_2flags_8hpp.html">slave/flags.hpp</a>&quot;</span></div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="src_2slave_2containerizer_2containerizer_8hpp.html">slave/containerizer/containerizer.hpp</a>&quot;</span></div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;</div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;<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>&#1
 60;<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>&#160;<span class="keyword">namespace </span>slave {</div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;</div><div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1slave_1_1Launcher.html">   47</a></span>&#160;<span class="keyword">class </span><a class="code" href="classmesos_1_1internal_1_1slave_1_1Launcher.html">Launcher</a></div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;{</div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1slave_1_1Launcher.html#a71741e35eb44f5ca5734af8d945b0e8d">   50</a></span>&#160;  <
 span class="keyword">virtual</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Launcher.html#a71741e35eb44f5ca5734af8d945b0e8d">~Launcher</a>() {}</div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;</div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;  <span class="comment">// Recover the necessary state for each container listed in state.</span></div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;  <span class="comment">// Return the set of containers that are known to the launcher but</span></div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;  <span class="comment">// not known to the slave (a.k.a. orphans).</span></div><div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;  <span class="keyword">virtual</span> <a class="code" href="classprocess_1_1Future.html">process::Future&lt;hashset&lt;ContainerID&gt;</a>&gt; <a cl
 ass="code" href="classmesos_1_1internal_1_1slave_1_1Launcher.html#a93e8c38b7a4d497b37ce82d9108fedb4">recover</a>(</div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;      <span class="keyword">const</span> std::vector&lt;mesos::slave::ContainerState&gt;&amp; states) = 0;</div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;</div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;  <span class="comment">// Fork a new process in the containerized context. The child will</span></div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;  <span class="comment">// exec the binary at the given path with the given argv, flags and</span></div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;  <span class="comment">// environment. The I/O of the child will be redirected according to</span></div><div class="line"><a name="l00061"></a><span class="lineno
 ">   61</span>&#160;  <span class="comment">// the specified I/O descriptors. The parentHooks will be executed</span></div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;  <span class="comment">// in the parent process before the child execs. The parent will return</span></div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;  <span class="comment">// the child&#39;s pid if the fork is successful.</span></div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;  <span class="keyword">virtual</span> <a class="code" href="classTry.html">Try&lt;pid_t&gt;</a> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Launcher.html#acb021e7df5f9a5cc902de09e2da7b1df">fork</a>(</div><div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;      <span class="keyword">const</span> ContainerID&amp; containerId,</div><div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#
 160;      <span class="keyword">const</span> std::string&amp; <a class="code" href="namespacepath.html">path</a>,</div><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;      <span class="keyword">const</span> std::vector&lt;std::string&gt;&amp; argv,</div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;      <span class="keyword">const</span> <a class="code" href="structmesos_1_1slave_1_1ContainerIO.html">mesos::slave::ContainerIO</a>&amp; containerIO,</div><div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;      <span class="keyword">const</span> <a class="code" href="classflags_1_1FlagsBase.html">flags::FlagsBase</a>* <a class="code" href="namespaceflags.html">flags</a>,</div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;      <span class="keyword">const</span> <a class="code" href="classOption.html">Option</a>&lt;std::map&lt;std::string, std::string&gt;&gt;&amp; <
 a class="code" href="namespacemesos_1_1internal_1_1tests.html#a1396c5e3b0a179220de2792d74770ec2">environment</a>,</div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;      <span class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;int&gt;</a>&amp; enterNamespaces,</div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;      <span class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;int&gt;</a>&amp; cloneNamespaces,</div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;      <span class="keyword">const</span> std::vector&lt;int_fd&gt;&amp; whitelistFds) = 0;</div><div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;</div><div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;  <span class="comment">// Kill all processes in the containerized context.</span></div><div class="line"><a name="l00076"></a
 ><span class="lineno">   76</span>&#160;  <span class="keyword">virtual</span> <a class="code" href="classprocess_1_1Future.html">process::Future&lt;Nothing&gt;</a> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Launcher.html#adf9cd543b7aaf0b999a2a00aa31c6175">destroy</a>(<span class="keyword">const</span> ContainerID&amp; containerId) = 0;</div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;</div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;  <span class="comment">// Return ContainerStatus information about container.</span></div><div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;  <span class="comment">// Currently only returns Executor PID info.</span></div><div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;  <span class="keyword">virtual</span> <a class="code" href="classprocess_1_1Future.html">process::Future&lt;ContainerStatus&gt;</a> <a class="code" 
 href="classmesos_1_1internal_1_1slave_1_1Launcher.html#a45a6d7403aeb433663419923a9956bc0">status</a>(</div><div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;      <span class="keyword">const</span> ContainerID&amp; containerId) = 0;</div><div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;};</div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;</div><div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;</div><div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;<span class="comment">// Launcher suitable for any POSIX compliant system. Uses process</span></div><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;<span class="comment">// groups and sessions to track processes in a container. POSIX states</span></div><div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;<span class="comment">// that process 
 groups cannot migrate between sessions so all</span></div><div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;<span class="comment">// processes for a container will be contained in a session.</span></div><div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;<span class="comment">// Also suitable for Windows, which uses job objects to obtain the</span></div><div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;<span class="comment">// same functionality. Everything is coordinated through `Subprocess`.</span></div><div class="line"><a name="l00091"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1slave_1_1SubprocessLauncher.html">   91</a></span>&#160;<span class="keyword">class </span><a class="code" href="classmesos_1_1internal_1_1slave_1_1SubprocessLauncher.html">SubprocessLauncher</a> : <span class="keyword">public</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Launc
 her.html">Launcher</a></div><div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;{</div><div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;  <span class="keyword">static</span> <a class="code" href="classTry.html">Try&lt;Launcher*&gt;</a> <a class="code" href="namespacecgroups.html#a2ecc89636706df947027a4c3c2100fbe">create</a>(<span class="keyword">const</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Flags.html">Flags</a>&amp; <a class="code" href="namespaceflags.html">flags</a>);</div><div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;</div><div class="line"><a name="l00096"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1slave_1_1SubprocessLauncher.html#a1d03ee6b67829cfdedf4930208d30976">   96</a></span>&#160;  <span class="keyword">virtual</sp
 an> <a class="code" href="classmesos_1_1internal_1_1slave_1_1SubprocessLauncher.html#a1d03ee6b67829cfdedf4930208d30976">~SubprocessLauncher</a>() {}</div><div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;</div><div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;  <span class="keyword">virtual</span> <a class="code" href="classprocess_1_1Future.html">process::Future&lt;hashset&lt;ContainerID&gt;</a>&gt; <a class="code" href="classmesos_1_1internal_1_1slave_1_1Launcher.html#a93e8c38b7a4d497b37ce82d9108fedb4">recover</a>(</div><div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;      <span class="keyword">const</span> std::vector&lt;mesos::slave::ContainerState&gt;&amp; states);</div><div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;</div><div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;  <span class="keyword">virtual</span> <a class="code" href="clas
 sTry.html">Try&lt;pid_t&gt;</a> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Launcher.html#acb021e7df5f9a5cc902de09e2da7b1df">fork</a>(</div><div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;      <span class="keyword">const</span> ContainerID&amp; containerId,</div><div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;      <span class="keyword">const</span> std::string&amp; <a class="code" href="namespacepath.html">path</a>,</div><div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;      <span class="keyword">const</span> std::vector&lt;std::string&gt;&amp; argv,</div><div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;      <span class="keyword">const</span> <a class="code" href="structmesos_1_1slave_1_1ContainerIO.html">mesos::slave::ContainerIO</a>&amp; containerIO,</div><div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;      <span class
 ="keyword">const</span> <a class="code" href="classflags_1_1FlagsBase.html">flags::FlagsBase</a>* flags,</div><div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;      <span class="keyword">const</span> <a class="code" href="classOption.html">Option</a>&lt;std::map&lt;std::string, std::string&gt;&gt;&amp; <a class="code" href="namespacemesos_1_1internal_1_1tests.html#a1396c5e3b0a179220de2792d74770ec2">environment</a>,</div><div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;      <span class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;int&gt;</a>&amp; enterNamespaces,</div><div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;      <span class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;int&gt;</a>&amp; cloneNamespaces,</div><div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;      <span class="keyword">const</span> std::vect
 or&lt;int_fd&gt;&amp; whitelistFds);</div><div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;</div><div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;  <span class="keyword">virtual</span> <a class="code" href="classprocess_1_1Future.html">process::Future&lt;Nothing&gt;</a> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Launcher.html#adf9cd543b7aaf0b999a2a00aa31c6175">destroy</a>(<span class="keyword">const</span> ContainerID&amp; containerId);</div><div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;</div><div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;  <span class="keyword">virtual</span> <a class="code" href="classprocess_1_1Future.html">process::Future&lt;ContainerStatus&gt;</a> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Launcher.html#a45a6d7403aeb433663419923a9956bc0">status</a>(</div><div class="line"><a name="l00115"></a><span class="lineno"> 
  115</span>&#160;      <span class="keyword">const</span> ContainerID&amp; containerId);</div><div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;</div><div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;<span class="keyword">protected</span>:</div><div class="line"><a name="l00118"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1slave_1_1SubprocessLauncher.html#af010735837a761ba49b0ff6fb0e50ff1">  118</a></span>&#160;  <a class="code" href="classmesos_1_1internal_1_1slave_1_1SubprocessLauncher.html#af010735837a761ba49b0ff6fb0e50ff1">SubprocessLauncher</a>() {}</div><div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;</div><div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;  <span class="comment">// The &#39;pid&#39; is the process id of the first process and also the</span></div><div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#16
 0;  <span class="comment">// process group id and session id.</span></div><div class="line"><a name="l00122"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1slave_1_1SubprocessLauncher.html#a9441321f40e25cb57df4e05751dbcbb5">  122</a></span>&#160;  <a class="code" href="classhashmap.html">hashmap&lt;ContainerID, pid_t&gt;</a> <a class="code" href="classmesos_1_1internal_1_1slave_1_1SubprocessLauncher.html#a9441321f40e25cb57df4e05751dbcbb5">pids</a>;</div><div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;};</div><div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;</div><div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;</div><div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;} <span class="comment">// namespace slave {</span></div><div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;} <span class="comment">// namespace internal 
 {</span></div><div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;} <span class="comment">// namespace mesos {</span></div><div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;</div><div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;<span class="preprocessor">#endif // __LAUNCHER_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>
+<a href="slave_2containerizer_2mesos_2launcher_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>&#160;<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>&#160;<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>&#160;<span class="comment">// distributed with this work for additional information</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<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>&#160;<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>&#160;<span class="comment">// &quot;License&quot;); you may not use this file except in compliance</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<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>&#160;<spa
 n class="comment">// distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<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>&#160;<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>&#160;<span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;</div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="preprocessor">#ifndef __LAUNCHER_HPP__</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="preprocessor">#define __LAUNCHER_HPP__</span></div><di
 v class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="preprocessor">#include &lt;sys/types.h&gt;</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;</div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="preprocessor">#include &lt;map&gt;</span></div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span></div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="preprocessor">#include &lt;vector&gt;</span></div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;</div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="include_2mesos_2mesos_8hpp.html">mesos/mes
 os.hpp</a>&gt;</span></div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;</div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="include_2mesos_2slave_2isolator_8hpp.html">mesos/slave/isolator.hpp</a>&gt;</span></div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;</div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="future_8hpp.html">process/future.hpp</a>&gt;</span></div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="include_2process_2subprocess_8hpp.html">process/subprocess.hpp</a>&gt;</span></div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno">   33</spa
 n>&#160;<span class="preprocessor">#include &lt;<a class="code" href="3rdparty_2stout_2include_2stout_2flags_8hpp.html">stout/flags.hpp</a>&gt;</span></div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="hashmap_8hpp.html">stout/hashmap.hpp</a>&gt;</span></div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="hashset_8hpp.html">stout/hashset.hpp</a>&gt;</span></div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="lambda_8hpp.html">stout/lambda.hpp</a>&gt;</span></div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="option_8hpp.html">stout/option.hpp</a>&gt;</span></div><div class="line"><a name="l00038"></a><span class="linen
 o">   38</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="try_8hpp.html">stout/try.hpp</a>&gt;</span></div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;</div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="src_2slave_2flags_8hpp.html">slave/flags.hpp</a>&quot;</span></div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="src_2slave_2containerizer_2containerizer_8hpp.html">slave/containerizer/containerizer.hpp</a>&quot;</span></div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;</div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacemesos.html">mesos</a> {</div><div class="line"><a name="l00044"></a><span class="linen
 o">   44</span>&#160;<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>&#160;<span class="keyword">namespace </span>slave {</div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;</div><div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1slave_1_1Launcher.html">   47</a></span>&#160;<span class="keyword">class </span><a class="code" href="classmesos_1_1internal_1_1slave_1_1Launcher.html">Launcher</a></div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;{</div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1slave_1_1Launcher.html#a71741e35eb44f5ca5734af8d945b0e8d">   50</
 a></span>&#160;  <span class="keyword">virtual</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Launcher.html#a71741e35eb44f5ca5734af8d945b0e8d">~Launcher</a>() {}</div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;</div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;  <span class="comment">// Recover the necessary state for each container listed in state.</span></div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;  <span class="comment">// Return the set of containers that are known to the launcher but</span></div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;  <span class="comment">// not known to the slave (a.k.a. orphans).</span></div><div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;  <span class="keyword">virtual</span> <a class="code" href="classprocess_1_1Future.html">process::Future&lt;hashset&lt;ContainerID
 &gt;</a>&gt; <a class="code" href="classmesos_1_1internal_1_1slave_1_1Launcher.html#a93e8c38b7a4d497b37ce82d9108fedb4">recover</a>(</div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;      <span class="keyword">const</span> std::vector&lt;mesos::slave::ContainerState&gt;&amp; states) = 0;</div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;</div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;  <span class="comment">// Fork a new process in the containerized context. The child will</span></div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;  <span class="comment">// exec the binary at the given path with the given argv, flags and</span></div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;  <span class="comment">// environment. The I/O of the child will be redirected according to</span></div><div class="line"><a name="l00061"></a><
 span class="lineno">   61</span>&#160;  <span class="comment">// the specified I/O descriptors. The parentHooks will be executed</span></div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;  <span class="comment">// in the parent process before the child execs. The parent will return</span></div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;  <span class="comment">// the child&#39;s pid if the fork is successful.</span></div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;  <span class="keyword">virtual</span> <a class="code" href="classTry.html">Try&lt;pid_t&gt;</a> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Launcher.html#acb021e7df5f9a5cc902de09e2da7b1df">fork</a>(</div><div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;      <span class="keyword">const</span> ContainerID&amp; containerId,</div><div class="line"><a name="l00066"></a><span class="line
 no">   66</span>&#160;      <span class="keyword">const</span> std::string&amp; <a class="code" href="namespacepath.html">path</a>,</div><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;      <span class="keyword">const</span> std::vector&lt;std::string&gt;&amp; argv,</div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;      <span class="keyword">const</span> <a class="code" href="structmesos_1_1slave_1_1ContainerIO.html">mesos::slave::ContainerIO</a>&amp; containerIO,</div><div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;      <span class="keyword">const</span> <a class="code" href="classflags_1_1FlagsBase.html">flags::FlagsBase</a>* <a class="code" href="namespaceflags.html">flags</a>,</div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;      <span class="keyword">const</span> <a class="code" href="classOption.html">Option</a>&lt;std::map&lt;std::string, std::str
 ing&gt;&gt;&amp; <a class="code" href="namespacemesos_1_1internal_1_1tests.html#a1396c5e3b0a179220de2792d74770ec2">environment</a>,</div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;      <span class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;int&gt;</a>&amp; enterNamespaces,</div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;      <span class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;int&gt;</a>&amp; cloneNamespaces,</div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;      <span class="keyword">const</span> std::vector&lt;int_fd&gt;&amp; whitelistFds) = 0;</div><div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;</div><div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;  <span class="comment">// Kill all processes in the containerized context.</span></div><div class="line"><a
  name="l00076"></a><span class="lineno">   76</span>&#160;  <span class="keyword">virtual</span> <a class="code" href="classprocess_1_1Future.html">process::Future&lt;Nothing&gt;</a> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Launcher.html#adf9cd543b7aaf0b999a2a00aa31c6175">destroy</a>(<span class="keyword">const</span> ContainerID&amp; containerId) = 0;</div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;</div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;  <span class="comment">// Return ContainerStatus information about container.</span></div><div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;  <span class="comment">// Currently only returns Executor PID info.</span></div><div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;  <span class="keyword">virtual</span> <a class="code" href="classprocess_1_1Future.html">process::Future&lt;ContainerStatus&gt;</a
 > <a class="code" href="classmesos_1_1internal_1_1slave_1_1Launcher.html#a45a6d7403aeb433663419923a9956bc0">status</a>(</div><div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;      <span class="keyword">const</span> ContainerID&amp; containerId) = 0;</div><div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;};</div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;</div><div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;</div><div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;<span class="comment">// Launcher suitable for any POSIX compliant system. Uses process</span></div><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;<span class="comment">// groups and sessions to track processes in a container. POSIX states</span></div><div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;<span class="comment
 ">// that process groups cannot migrate between sessions so all</span></div><div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;<span class="comment">// processes for a container will be contained in a session.</span></div><div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;<span class="comment">// Also suitable for Windows, which uses job objects to obtain the</span></div><div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;<span class="comment">// same functionality. Everything is coordinated through `Subprocess`.</span></div><div class="line"><a name="l00091"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1slave_1_1SubprocessLauncher.html">   91</a></span>&#160;<span class="keyword">class </span><a class="code" href="classmesos_1_1internal_1_1slave_1_1SubprocessLauncher.html">SubprocessLauncher</a> : <span class="keyword">public</span> <a class="code" href="classmesos_1_1internal
 _1_1slave_1_1Launcher.html">Launcher</a></div><div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;{</div><div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;  <span class="keyword">static</span> <a class="code" href="classTry.html">Try&lt;Launcher*&gt;</a> <a class="code" href="namespacecgroups.html#a2ecc89636706df947027a4c3c2100fbe">create</a>(<span class="keyword">const</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Flags.html">Flags</a>&amp; <a class="code" href="namespaceflags.html">flags</a>);</div><div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;</div><div class="line"><a name="l00096"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1slave_1_1SubprocessLauncher.html#a1d03ee6b67829cfdedf4930208d30976">   96</a></span>&#160;  <span class="ke
 yword">virtual</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1SubprocessLauncher.html#a1d03ee6b67829cfdedf4930208d30976">~SubprocessLauncher</a>() {}</div><div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;</div><div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;  <span class="keyword">virtual</span> <a class="code" href="classprocess_1_1Future.html">process::Future&lt;hashset&lt;ContainerID&gt;</a>&gt; <a class="code" href="classmesos_1_1internal_1_1slave_1_1Launcher.html#a93e8c38b7a4d497b37ce82d9108fedb4">recover</a>(</div><div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;      <span class="keyword">const</span> std::vector&lt;mesos::slave::ContainerState&gt;&amp; states);</div><div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;</div><div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;  <span class="keyword">virtual</span> <a class
 ="code" href="classTry.html">Try&lt;pid_t&gt;</a> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Launcher.html#acb021e7df5f9a5cc902de09e2da7b1df">fork</a>(</div><div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;      <span class="keyword">const</span> ContainerID&amp; containerId,</div><div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;      <span class="keyword">const</span> std::string&amp; <a class="code" href="namespacepath.html">path</a>,</div><div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;      <span class="keyword">const</span> std::vector&lt;std::string&gt;&amp; argv,</div><div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;      <span class="keyword">const</span> <a class="code" href="structmesos_1_1slave_1_1ContainerIO.html">mesos::slave::ContainerIO</a>&amp; containerIO,</div><div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160
 ;      <span class="keyword">const</span> <a class="code" href="classflags_1_1FlagsBase.html">flags::FlagsBase</a>* flags,</div><div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;      <span class="keyword">const</span> <a class="code" href="classOption.html">Option</a>&lt;std::map&lt;std::string, std::string&gt;&gt;&amp; <a class="code" href="namespacemesos_1_1internal_1_1tests.html#a1396c5e3b0a179220de2792d74770ec2">environment</a>,</div><div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;      <span class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;int&gt;</a>&amp; enterNamespaces,</div><div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;      <span class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;int&gt;</a>&amp; cloneNamespaces,</div><div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;      <span class="keyword">cons
 t</span> std::vector&lt;int_fd&gt;&amp; whitelistFds);</div><div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;</div><div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;  <span class="keyword">virtual</span> <a class="code" href="classprocess_1_1Future.html">process::Future&lt;Nothing&gt;</a> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Launcher.html#adf9cd543b7aaf0b999a2a00aa31c6175">destroy</a>(<span class="keyword">const</span> ContainerID&amp; containerId);</div><div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;</div><div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;  <span class="keyword">virtual</span> <a class="code" href="classprocess_1_1Future.html">process::Future&lt;ContainerStatus&gt;</a> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Launcher.html#a45a6d7403aeb433663419923a9956bc0">status</a>(</div><div class="line"><a name="l00115"></a><spa
 n class="lineno">  115</span>&#160;      <span class="keyword">const</span> ContainerID&amp; containerId);</div><div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;</div><div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;<span class="keyword">protected</span>:</div><div class="line"><a name="l00118"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1slave_1_1SubprocessLauncher.html#af010735837a761ba49b0ff6fb0e50ff1">  118</a></span>&#160;  <a class="code" href="classmesos_1_1internal_1_1slave_1_1SubprocessLauncher.html#af010735837a761ba49b0ff6fb0e50ff1">SubprocessLauncher</a>() {}</div><div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;</div><div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;  <span class="comment">// The &#39;pid&#39; is the process id of the first process and also the</span></div><div class="line"><a name="l00121"></a><span class="lineno
 ">  121</span>&#160;  <span class="comment">// process group id and session id.</span></div><div class="line"><a name="l00122"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1slave_1_1SubprocessLauncher.html#a9441321f40e25cb57df4e05751dbcbb5">  122</a></span>&#160;  <a class="code" href="classhashmap.html">hashmap&lt;ContainerID, pid_t&gt;</a> <a class="code" href="classmesos_1_1internal_1_1slave_1_1SubprocessLauncher.html#a9441321f40e25cb57df4e05751dbcbb5">pids</a>;</div><div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;};</div><div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;</div><div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;</div><div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;} <span class="comment">// namespace slave {</span></div><div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;} <span class="comment">// n
 amespace internal {</span></div><div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;} <span class="comment">// namespace mesos {</span></div><div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;</div><div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;<span class="preprocessor">#endif // __LAUNCHER_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="classmesos_1_1internal_1_1slave_1_1Launcher_html"><div class="ttname"><a href="classmesos_1_1internal_1_1slave_1_1Launcher.html">mesos::internal::slave::Launcher</a></div><div class="ttdef"><b>Definition:</b> launcher.hpp:47</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_1internal_1_1slave_1_1Launcher_html_a93e8c38b7a4d497b37ce82d9108fedb4"><div class="ttname"><a href="classmesos_1_1internal_1_1slave_1_1Launcher.html#a93e8c38b7a4d497b37ce82d9108fedb4">mesos::internal::slave::Launcher::recover</a></div><div class="ttdeci">virtual process::Future&lt; hashset&lt; ContainerID &gt; &gt; recover(const std::vector&lt; mesos::slave::ContainerState &gt; &amp;states)=0</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="subprocess_8hpp_html"><div class="ttname"><a href="subprocess_8hpp.html">subprocess.hpp</a></div></div>
+<div class="ttc" id="include_2process_2subprocess_8hpp_html"><div class="ttname"><a href="include_2process_2subprocess_8hpp.html">subprocess.hpp</a></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="include_2mesos_2slave_2isolator_8hpp_html"><div class="ttname"><a href="include_2mesos_2slave_2isolator_8hpp.html">isolator.hpp</a></div></div>
 <div class="ttc" id="classmesos_1_1internal_1_1slave_1_1Launcher_html_acb021e7df5f9a5cc902de09e2da7b1df"><div class="ttname"><a href="classmesos_1_1internal_1_1slave_1_1Launcher.html#acb021e7df5f9a5cc902de09e2da7b1df">mesos::internal::slave::Launcher::fork</a></div><div class="ttdeci">virtual Try&lt; pid_t &gt; fork(const ContainerID &amp;containerId, const std::string &amp;path, const std::vector&lt; std::string &gt; &amp;argv, const mesos::slave::ContainerIO &amp;containerIO, const flags::FlagsBase *flags, const Option&lt; std::map&lt; std::string, std::string &gt;&gt; &amp;environment, const Option&lt; int &gt; &amp;enterNamespaces, const Option&lt; int &gt; &amp;cloneNamespaces, const std::vector&lt; int_fd &gt; &amp;whitelistFds)=0</div></div>


[35/50] mesos-site git commit: Updated the website built from mesos SHA: 7c9c72d.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/functions_s.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/functions_s.html b/content/api/latest/c++/functions_s.html
index e47a9d2..401b629 100644
--- a/content/api/latest/c++/functions_s.html
+++ b/content/api/latest/c++/functions_s.html
@@ -404,13 +404,13 @@
 , <a class="el" href="classmesos_1_1v1_1_1executor_1_1V0ToV1Adapter.html#a204a93410a8825a916dff56b5f8195c0">mesos::v1::executor::V0ToV1Adapter</a>
 , <a class="el" href="classorg_1_1apache_1_1zookeeper_1_1server_1_1NIOServerCnxnFactory.html#aeb21636f2fcbc8811af2040912c9b1a7">org::apache::zookeeper::server::NIOServerCnxnFactory</a>
 , <a class="el" href="classprocess_1_1network_1_1internal_1_1LibeventSSLSocketImpl.html#a5d1386c7494d6681a764ddf0cff19e40">process::network::internal::LibeventSSLSocketImpl</a>
-, <a class="el" href="classprocess_1_1network_1_1internal_1_1Socket.html#a9d7ac9f641277f1c5f4e7dc6f5464845">process::network::internal::Socket&lt; AddressType &gt;</a>
 </li>
 <li>Shutdown
 : <a class="el" href="classprocess_1_1network_1_1internal_1_1Socket.html#ac5a52929658fbe1ed19b4b03bdd63904">process::network::internal::Socket&lt; AddressType &gt;</a>
 </li>
 <li>shutdown()
-: <a class="el" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a04930363612888ceb04d517061a43f3e">process::network::internal::SocketImpl</a>
+: <a class="el" href="classprocess_1_1network_1_1internal_1_1Socket.html#a9d7ac9f641277f1c5f4e7dc6f5464845">process::network::internal::Socket&lt; AddressType &gt;</a>
+, <a class="el" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a04930363612888ceb04d517061a43f3e">process::network::internal::SocketImpl</a>
 </li>
 <li>shutdownExecutor()
 : <a class="el" href="classmesos_1_1internal_1_1slave_1_1Slave.html#a268b5307f2796f9270acf6efaf29711c">mesos::internal::slave::Slave</a>
@@ -438,12 +438,12 @@
 <li>signature
 : <a class="el" href="classprocess_1_1http_1_1authentication_1_1JWT.html#a7a5314085fad497a929f9901cf55721a">process::http::authentication::JWT</a>
 </li>
-<li>signed_integer
-: <a class="el" href="structJSON_1_1Number.html#a1ef5b2f34492821aec7eae82da8366b7">JSON::Number</a>
-</li>
 <li>SIGNED_INTEGER
 : <a class="el" href="structJSON_1_1Number.html#a156598d70937964dd8de2628351061aaac9c83af02af694c57497b0f1414b0779">JSON::Number</a>
 </li>
+<li>signed_integer
+: <a class="el" href="structJSON_1_1Number.html#a1ef5b2f34492821aec7eae82da8366b7">JSON::Number</a>
+</li>
 <li>size()
 : <a class="el" href="classBoundedHashMap.html#aa0c84c4c9636449ab35ef13ecce36266">BoundedHashMap&lt; Key, Value &gt;</a>
 , <a class="el" href="classCache.html#aae4846f6fb5c598ae164e89129de1350">Cache&lt; Key, Value &gt;</a>
@@ -699,24 +699,26 @@
 : <a class="el" href="classmesos_1_1internal_1_1tests_1_1MockCSIPlugin.html#aaaf2f5692dca8cc06602ca25f62bbaba">mesos::internal::tests::MockCSIPlugin</a>
 , <a class="el" href="classorg_1_1apache_1_1zookeeper_1_1server_1_1NIOServerCnxnFactory.html#aceef33e2bd447da751d4b592f4104121">org::apache::zookeeper::server::NIOServerCnxnFactory</a>
 </li>
+<li>state
+: <a class="el" href="structmesos_1_1internal_1_1master_1_1Framework.html#af4322f8c99cfc37c386d3b5457a6f053">mesos::internal::master::Framework</a>
+</li>
 <li>State
 : <a class="el" href="structmesos_1_1internal_1_1master_1_1Framework.html#a96a90d8ae734d729489ba877367e6b65">mesos::internal::master::Framework</a>
 </li>
 <li>state
-: <a class="el" href="structmesos_1_1internal_1_1master_1_1Framework.html#af4322f8c99cfc37c386d3b5457a6f053">mesos::internal::master::Framework</a>
+: <a class="el" href="classmesos_1_1internal_1_1slave_1_1Executor.html#a27e0e6e088c0fd88a0c7f679c964c409">mesos::internal::slave::Executor</a>
 </li>
 <li>State
 : <a class="el" href="classmesos_1_1internal_1_1slave_1_1Executor.html#a3b2abbbd9f9e9ca5c08b75329ac426c0">mesos::internal::slave::Executor</a>
 </li>
 <li>state
-: <a class="el" href="classmesos_1_1internal_1_1slave_1_1Executor.html#a27e0e6e088c0fd88a0c7f679c964c409">mesos::internal::slave::Executor</a>
+: <a class="el" href="classmesos_1_1internal_1_1slave_1_1Framework.html#adbfec960b7cb705602bdac9853fb0c12">mesos::internal::slave::Framework</a>
 </li>
 <li>State
 : <a class="el" href="classmesos_1_1internal_1_1slave_1_1Framework.html#accb4e9c8d32936b20f3d0ddc71fe8add">mesos::internal::slave::Framework</a>
 </li>
-<li>state
-: <a class="el" href="classmesos_1_1internal_1_1slave_1_1Framework.html#adbfec960b7cb705602bdac9853fb0c12">mesos::internal::slave::Framework</a>
-, <a class="el" href="classmesos_1_1internal_1_1slave_1_1Http.html#a48698f07413ddb1d974b42c04a98c5fa">mesos::internal::slave::Http</a>
+<li>state()
+: <a class="el" href="classmesos_1_1internal_1_1slave_1_1Http.html#a48698f07413ddb1d974b42c04a98c5fa">mesos::internal::slave::Http</a>
 , <a class="el" href="classmesos_1_1internal_1_1slave_1_1Slave.html#af79c3eb007e12f37faec4a24d1f95cc4">mesos::internal::slave::Slave</a>
 </li>
 <li>State
@@ -801,7 +803,7 @@
 , <a class="el" href="classmesos_1_1internal_1_1slave_1_1Slave.html#a1e0c26aadd84e879a41ce399d685e421">mesos::internal::slave::Slave</a>
 </li>
 <li>StatusUpdateManagerProcess()
-: <a class="el" href="classmesos_1_1internal_1_1StatusUpdateManagerProcess.html#a2952d0ef16e5ce7a19f023a5b64e70d0">mesos::internal::StatusUpdateManagerProcess&lt; IDType, CheckpointType, UpdateType &gt;</a>
+: <a class="el" href="classmesos_1_1internal_1_1StatusUpdateManagerProcess.html#a681eb7df0ad9abc702b1dfa6e4a222cb">mesos::internal::StatusUpdateManagerProcess&lt; IDType, CheckpointType, UpdateType &gt;</a>
 </li>
 <li>stderr_from_fd
 : <a class="el" href="structmesos_1_1internal_1_1slave_1_1IOSwitchboardServer_1_1Flags.html#a1bf9244c976c6542fdf1a840bfa9d875">mesos::internal::slave::IOSwitchboardServer::Flags</a>
@@ -836,6 +838,7 @@
 , <a class="el" href="classprocess_1_1Executor.html#a43a9df131ecc0e5fb3c3015c118407da">process::Executor</a>
 , <a class="el" href="classprocess_1_1http_1_1Server.html#acc7de6562fb0670327e6d2a4e9e6c92c">process::http::Server</a>
 , <a class="el" href="classprocess_1_1metrics_1_1Timer.html#add113450a55bb835137f84701f981fcc">process::metrics::Timer&lt; T &gt;</a>
+, <a class="el" href="classprocess_1_1windows_1_1EventLoop.html#a8a07fc602e31875e6cbcaeac8008f09a">process::windows::EventLoop</a>
 , <a class="el" href="classStopwatch.html#aa0266311b7392b948061bb985b49cff4">Stopwatch</a>
 </li>
 <li>stop_timeout
@@ -886,7 +889,7 @@
 : <a class="el" href="classmesos_1_1internal_1_1slave_1_1Flags.html#a2c8aab49e677f3ba6c5ea3c935f2aab0">mesos::internal::slave::Flags</a>
 </li>
 <li>String()
-: <a class="el" href="structJSON_1_1String.html#ab8f3991c166dfd0e7761a8cfc733f4a2">JSON::String</a>
+: <a class="el" href="structJSON_1_1String.html#a7be21f307ea1e322a19a23da1b35afb4">JSON::String</a>
 </li>
 <li>string()
 : <a class="el" href="classJvm.html#ac2c7a5438fbf91870a29720b0a26b0a1">Jvm</a>
@@ -935,7 +938,7 @@
 </li>
 <li>Subscriber
 : <a class="el" href="classmesos_1_1internal_1_1master_1_1Master.html#ad8fccf68963e3540e62df4dfb512bc54">mesos::internal::master::Master</a>
-, <a class="el" href="structmesos_1_1internal_1_1master_1_1Master_1_1Subscribers_1_1Subscriber.html#a648eeb655edb6255b4f515a94ab55473">mesos::internal::master::Master::Subscribers::Subscriber</a>
+, <a class="el" href="structmesos_1_1internal_1_1master_1_1Master_1_1Subscribers_1_1Subscriber.html#a70c60ad79d73c84545ae28bc85714879">mesos::internal::master::Master::Subscribers::Subscriber</a>
 </li>
 <li>substitute_name
 : <a class="el" href="structinternal_1_1windows_1_1SymbolicLink.html#a46106b565c75b06e6bc8332c58ae9484">internal::windows::SymbolicLink</a>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/functions_t.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/functions_t.html b/content/api/latest/c++/functions_t.html
index 8bb4cd2..9442070 100644
--- a/content/api/latest/c++/functions_t.html
+++ b/content/api/latest/c++/functions_t.html
@@ -312,7 +312,7 @@
 , <a class="el" href="structmesos_1_1internal_1_1slave_1_1TaskStatusUpdateStream.html#afed2587d35bff8423602ff07defed554">mesos::internal::slave::TaskStatusUpdateStream</a>
 </li>
 <li>Timeout()
-: <a class="el" href="classprocess_1_1Timeout.html#adeadd19e081fb4f2a0a39ecc586a4af7">process::Timeout</a>
+: <a class="el" href="classprocess_1_1Timeout.html#aa92e0df435b3ef095e9fc40313600334">process::Timeout</a>
 </li>
 <li>timeout()
 : <a class="el" href="classprocess_1_1Timer.html#adcce3e5538751535be6ec4d48670eb89">process::Timer</a>
@@ -437,36 +437,40 @@
 <li>type
 : <a class="el" href="structmesos_1_1csi_1_1paths_1_1ContainerPath.html#ae82c8eee1ce13cbd2d0da44e29134b1f">mesos::csi::paths::ContainerPath</a>
 , <a class="el" href="structmesos_1_1csi_1_1paths_1_1VolumePath.html#a932b55eda0d5df1444fe5e15adba876d">mesos::csi::paths::VolumePath</a>
-, <a class="el" href="classmesos_1_1internal_1_1FilesError.html#aef08f763f1a964529d6e612e5ab49db4">mesos::internal::FilesError</a>
 </li>
 <li>Type
 : <a class="el" href="classmesos_1_1internal_1_1FilesError.html#ace93cf1c2ae2be0671102df57ed0b5a1">mesos::internal::FilesError</a>
 </li>
 <li>type
-: <a class="el" href="structmesos_1_1internal_1_1fs_1_1MountInfoTable_1_1Entry.html#abb78c2f10d58e5d2c8bdd47a459d832b">mesos::internal::fs::MountInfoTable::Entry</a>
+: <a class="el" href="classmesos_1_1internal_1_1FilesError.html#aef08f763f1a964529d6e612e5ab49db4">mesos::internal::FilesError</a>
+, <a class="el" href="structmesos_1_1internal_1_1fs_1_1MountInfoTable_1_1Entry.html#abb78c2f10d58e5d2c8bdd47a459d832b">mesos::internal::fs::MountInfoTable::Entry</a>
 , <a class="el" href="structmesos_1_1internal_1_1fs_1_1MountTable_1_1Entry.html#a59c7e9a32021a096821a898eb03b20e1">mesos::internal::fs::MountTable::Entry</a>
 , <a class="el" href="classmesos_1_1internal_1_1log_1_1tool_1_1Benchmark_1_1Flags.html#a523f498c1c3ca96190b8a654b9a329f2">mesos::internal::log::tool::Benchmark::Flags</a>
-, <a class="el" href="structmesos_1_1internal_1_1ResourceProviderMessage.html#a52b40b56ae9bf3e8d7d96e4a71929cf9">mesos::internal::ResourceProviderMessage</a>
 </li>
 <li>Type
 : <a class="el" href="structmesos_1_1internal_1_1ResourceProviderMessage.html#a1d0830e5e578ade7d92f9908efe8a5c5">mesos::internal::ResourceProviderMessage</a>
 </li>
 <li>type
-: <a class="el" href="structmesos_1_1internal_1_1tests_1_1ZooKeeperTest_1_1TestWatcher_1_1Event.html#ac0d29e60c4e42c93fcd2c5f702f27d45">mesos::internal::tests::ZooKeeperTest::TestWatcher::Event</a>
+: <a class="el" href="structmesos_1_1internal_1_1ResourceProviderMessage.html#a52b40b56ae9bf3e8d7d96e4a71929cf9">mesos::internal::ResourceProviderMessage</a>
+, <a class="el" href="structmesos_1_1internal_1_1tests_1_1ZooKeeperTest_1_1TestWatcher_1_1Event.html#ac0d29e60c4e42c93fcd2c5f702f27d45">mesos::internal::tests::ZooKeeperTest::TestWatcher::Event</a>
 </li>
 <li>Type
 : <a class="el" href="classmesos_1_1slave_1_1ContainerIO_1_1IO.html#a7c8f14a0efec6a09b957d5d24b8f9e99">mesos::slave::ContainerIO::IO</a>
-, <a class="el" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5">os::WindowsFD</a>
 </li>
 <li>type()
 : <a class="el" href="classos_1_1WindowsFD.html#a3ce17a730ace5352a1fc6d49f8336d52">os::WindowsFD</a>
 </li>
 <li>Type
-: <a class="el" href="classprocess_1_1http_1_1authentication_1_1JWTError.html#a6f5217e567bf225c536e03e858a017ed">process::http::authentication::JWTError</a>
+: <a class="el" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5">os::WindowsFD</a>
 </li>
 <li>type
 : <a class="el" href="classprocess_1_1http_1_1authentication_1_1JWTError.html#a082bf5dfcd9d0a9ffcb6851d8e042a01">process::http::authentication::JWTError</a>
-, <a class="el" href="structprocess_1_1http_1_1Request.html#a4e49e02732d986eb32f979156e0d389a">process::http::Request</a>
+</li>
+<li>Type
+: <a class="el" href="classprocess_1_1http_1_1authentication_1_1JWTError.html#a6f5217e567bf225c536e03e858a017ed">process::http::authentication::JWTError</a>
+</li>
+<li>type
+: <a class="el" href="structprocess_1_1http_1_1Request.html#a4e49e02732d986eb32f979156e0d389a">process::http::Request</a>
 , <a class="el" href="structprocess_1_1http_1_1Response.html#a6846045a3c3df3abd8e2735847af3a79">process::http::Response</a>
 , <a class="el" href="structprocess_1_1internal_1_1unwrap.html#a42055ebfe5f79c5139c8811f9866cce9">process::internal::unwrap&lt; T &gt;</a>
 , <a class="el" href="structprocess_1_1internal_1_1unwrap_3_01Future_3_01X_01_4_01_4.html#a14a1ae87a7669ca60aad0624d1e58bff">process::internal::unwrap&lt; Future&lt; X &gt; &gt;</a>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/functions_u.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/functions_u.html b/content/api/latest/c++/functions_u.html
index a7a6ec6..c4b02f9 100644
--- a/content/api/latest/c++/functions_u.html
+++ b/content/api/latest/c++/functions_u.html
@@ -251,12 +251,12 @@
 <li>unsetAuthenticator()
 : <a class="el" href="classprocess_1_1http_1_1authentication_1_1AuthenticatorManager.html#aa68812240328fdac177fd106ef8087dd">process::http::authentication::AuthenticatorManager</a>
 </li>
-<li>unsigned_integer
-: <a class="el" href="structJSON_1_1Number.html#a9c6b075f53b5419af9cee264482272eb">JSON::Number</a>
-</li>
 <li>UNSIGNED_INTEGER
 : <a class="el" href="structJSON_1_1Number.html#a156598d70937964dd8de2628351061aaa0ce531160156e5c4aecfabc42df3b68a">JSON::Number</a>
 </li>
+<li>unsigned_integer
+: <a class="el" href="structJSON_1_1Number.html#a9c6b075f53b5419af9cee264482272eb">JSON::Number</a>
+</li>
 <li>UNSUPPORTED_MEDIA_TYPE
 : <a class="el" href="structprocess_1_1http_1_1Status.html#addffbea97c092bf92955b7f513208ceb">process::http::Status</a>
 </li>
@@ -305,11 +305,13 @@
 , <a class="el" href="classmesos_1_1internal_1_1slave_1_1XfsDiskIsolatorProcess.html#a1794edfd7812b89606b905a3481af673">mesos::internal::slave::XfsDiskIsolatorProcess</a>
 , <a class="el" href="classmesos_1_1internal_1_1StatusUpdateManagerProcess.html#a1658b4adb952dc5e20465e31d572633b">mesos::internal::StatusUpdateManagerProcess&lt; IDType, CheckpointType, UpdateType &gt;</a>
 , <a class="el" href="classmesos_1_1slave_1_1Isolator.html#aa4e5910588131613e4c10903282dc252">mesos::slave::Isolator</a>
-, <a class="el" href="classprocess_1_1Clock.html#a196836d438ff28617159c9e682be3656">process::Clock</a>
 </li>
 <li>Update
 : <a class="el" href="classprocess_1_1Clock.html#a1e639da11c2a00b3bffd3391d4a9412f">process::Clock</a>
 </li>
+<li>update()
+: <a class="el" href="classprocess_1_1Clock.html#a196836d438ff28617159c9e682be3656">process::Clock</a>
+</li>
 <li>updateAllocation()
 : <a class="el" href="classmesos_1_1allocator_1_1Allocator.html#aa8ee61bea88a926c920e909571f836dd">mesos::allocator::Allocator</a>
 , <a class="el" href="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess.html#aaa1ce6cba8a90007ee2c9d2f87dae895">mesos::internal::master::allocator::internal::HierarchicalAllocatorProcess</a>
@@ -439,7 +441,7 @@
 : <a class="el" href="structprocess_1_1http_1_1Request.html#aba3024fe3e1028d19f5fb4e92519cb56">process::http::Request</a>
 </li>
 <li>URL()
-: <a class="el" href="structprocess_1_1http_1_1URL.html#a6f6a9c959c9bb1519f1c29192aa4a407">process::http::URL</a>
+: <a class="el" href="structprocess_1_1http_1_1URL.html#a0405a5eae13705f0cfe7b78e2928bc5f">process::http::URL</a>
 </li>
 <li>us()
 : <a class="el" href="classDuration.html#ab4bc8981d3ac26e3880e57e19f7f7f92">Duration</a>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/functions_v.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/functions_v.html b/content/api/latest/c++/functions_v.html
index d55e9fb..7567092 100644
--- a/content/api/latest/c++/functions_v.html
+++ b/content/api/latest/c++/functions_v.html
@@ -178,7 +178,7 @@
 : <a class="el" href="structJSON_1_1String.html#a6d61cfa2a10f02133833eaaf23b87e75">JSON::String</a>
 </li>
 <li>Value()
-: <a class="el" href="structJSON_1_1Value.html#ab05d7584e0a89ecc8a16d0670d3a84b7">JSON::Value</a>
+: <a class="el" href="structJSON_1_1Value.html#ad06301ec9da0f0a4713556214b7ce43a">JSON::Value</a>
 </li>
 <li>value
 : <a class="el" href="structmesos_1_1ObjectApprover_1_1Object.html#a712288898956dbca1861589a58aa73f7">mesos::ObjectApprover::Object</a>
@@ -214,7 +214,7 @@
 : <a class="el" href="classprocess_1_1ControlFlow.html#a5ce1f085b8043fe8ac900ce9f63a0bde">process::ControlFlow&lt; T &gt;</a>
 </li>
 <li>Variable()
-: <a class="el" href="classJvm_1_1Variable.html#acebe0a7136cbdaffbe3c8d8ccf7fa372">Jvm::Variable&lt; T, name, signature &gt;</a>
+: <a class="el" href="classJvm_1_1Variable.html#afa8ea3c368c4c21313662eace2cc14f3">Jvm::Variable&lt; T, name, signature &gt;</a>
 </li>
 <li>Variant()
 : <a class="el" href="classVariant.html#aeaf81abef309c9e840316c6ebf8b3cdf">Variant&lt; T, Ts &gt;</a>
@@ -246,7 +246,7 @@
 <li>visit()
 : <a class="el" href="structprocess_1_1DispatchEvent.html#a0e76d6c1283c8e70858d7099be34a5ba">process::DispatchEvent</a>
 , <a class="el" href="structprocess_1_1Event.html#a8756ddd411b61f8f1710e13d82e71037">process::Event</a>
-, <a class="el" href="structprocess_1_1EventVisitor.html#ac5a1087909568bbac1213d32105e1221">process::EventVisitor</a>
+, <a class="el" href="structprocess_1_1EventVisitor.html#a2c6446217ce0718ea9c7b87e2ca93049">process::EventVisitor</a>
 , <a class="el" href="structprocess_1_1ExitedEvent.html#aacae7e724b82f3f33f640b9026e163c8">process::ExitedEvent</a>
 , <a class="el" href="structprocess_1_1HttpEvent.html#aef4ca1f2279a4207d18c695fc6510a10">process::HttpEvent</a>
 , <a class="el" href="structprocess_1_1MessageEvent.html#a075568b289b0075487233208e5b1fe7d">process::MessageEvent</a>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/functions_w.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/functions_w.html b/content/api/latest/c++/functions_w.html
index 8d40fe9..3eb9bda 100644
--- a/content/api/latest/c++/functions_w.html
+++ b/content/api/latest/c++/functions_w.html
@@ -167,12 +167,12 @@
 <li>webui_dir
 : <a class="el" href="classmesos_1_1internal_1_1master_1_1Flags.html#a94a63a333e884c51856ce197f29f8e89">mesos::internal::master::Flags</a>
 </li>
-<li>weeks()
-: <a class="el" href="classDuration.html#ae98a411bf78d0ab537c021bf3dbd01b0">Duration</a>
-</li>
 <li>WEEKS
 : <a class="el" href="classDuration.html#aadcf23b757330ae23ee70117aec0656e">Duration</a>
 </li>
+<li>weeks()
+: <a class="el" href="classDuration.html#ae98a411bf78d0ab537c021bf3dbd01b0">Duration</a>
+</li>
 <li>Weeks()
 : <a class="el" href="classWeeks.html#a2606052f27e4baecbf6eb75bd695a034">Weeks</a>
 </li>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/globals_u.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/globals_u.html b/content/api/latest/c++/globals_u.html
index 3e3c549..7f3d7c2 100644
--- a/content/api/latest/c++/globals_u.html
+++ b/content/api/latest/c++/globals_u.html
@@ -94,12 +94,12 @@
 <li>Unimplemented()
 : <a class="el" href="unimplemented_8hpp.html#a788f2d5d116d024fbfd9b0fd36fa334f">unimplemented.hpp</a>
 </li>
-<li>UNREACHABLE
-: <a class="el" href="unreachable_8hpp.html#a0bc63b24b654ca433be7b97a3edde132">unreachable.hpp</a>
-</li>
 <li>Unreachable()
 : <a class="el" href="unreachable_8hpp.html#a247a4dee16fdea6cdd332f35a572e7d3">unreachable.hpp</a>
 </li>
+<li>UNREACHABLE
+: <a class="el" href="unreachable_8hpp.html#a0bc63b24b654ca433be7b97a3edde132">unreachable.hpp</a>
+</li>
 </ul>
 </div><!-- contents -->
 <!-- start footer part -->


[36/50] mesos-site git commit: Updated the website built from mesos SHA: 7c9c72d.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/files.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/files.html b/content/api/latest/c++/files.html
index 1a79c70..2e4b949 100644
--- a/content/api/latest/c++/files.html
+++ b/content/api/latest/c++/files.html
@@ -116,24 +116,33 @@
 <tr id="row_0_0_0_0_49_" class="even" style="display:none;"><td class="entry"><span style="width:80px;display:inline-block;">&#160;</span><a href="libprocess_2include_2process_2socket_8hpp_source.html"><span class="icondoc"></span></a><a class="el" href="libprocess_2include_2process_2socket_8hpp.html" target="_self">socket.hpp</a></td><td class="desc"></td></tr>
 <tr id="row_0_0_0_0_50_" class="even" style="display:none;"><td class="entry"><span style="width:80px;display:inline-block;">&#160;</span><a href="state__machine_8hpp_source.html"><span class="icondoc"></span></a><a class="el" href="state__machine_8hpp.html" target="_self">state_machine.hpp</a></td><td class="desc"></td></tr>
 <tr id="row_0_0_0_0_51_" class="even" style="display:none;"><td class="entry"><span style="width:80px;display:inline-block;">&#160;</span><a href="3rdparty_2libprocess_2include_2process_2statistics_8hpp_source.html"><span class="icondoc"></span></a><a class="el" href="3rdparty_2libprocess_2include_2process_2statistics_8hpp.html" target="_self">statistics.hpp</a></td><td class="desc"></td></tr>
-<tr id="row_0_0_0_0_52_" class="even" style="display:none;"><td class="entry"><span style="width:80px;display:inline-block;">&#160;</span><a href="subprocess_8hpp_source.html"><span class="icondoc"></span></a><a class="el" href="subprocess_8hpp.html" target="_self">subprocess.hpp</a></td><td class="desc"></td></tr>
+<tr id="row_0_0_0_0_52_" class="even" style="display:none;"><td class="entry"><span style="width:80px;display:inline-block;">&#160;</span><a href="include_2process_2subprocess_8hpp_source.html"><span class="icondoc"></span></a><a class="el" href="include_2process_2subprocess_8hpp.html" target="_self">subprocess.hpp</a></td><td class="desc"></td></tr>
 <tr id="row_0_0_0_0_53_" class="even" style="display:none;"><td class="entry"><span style="width:80px;display:inline-block;">&#160;</span><a href="system_8hpp_source.html"><span class="icondoc"></span></a><a class="el" href="system_8hpp.html" target="_self">system.hpp</a></td><td class="desc"></td></tr>
 <tr id="row_0_0_0_0_54_" class="even" style="display:none;"><td class="entry"><span style="width:80px;display:inline-block;">&#160;</span><a href="time_8hpp_source.html"><span class="icondoc"></span></a><a class="el" href="time_8hpp.html" target="_self">time.hpp</a></td><td class="desc"></td></tr>
 <tr id="row_0_0_0_0_55_" class="even" style="display:none;"><td class="entry"><span style="width:80px;display:inline-block;">&#160;</span><a href="timeout_8hpp_source.html"><span class="icondoc"></span></a><a class="el" href="timeout_8hpp.html" target="_self">timeout.hpp</a></td><td class="desc"></td></tr>
 <tr id="row_0_0_0_0_56_" class="even" style="display:none;"><td class="entry"><span style="width:80px;display:inline-block;">&#160;</span><a href="timer_8hpp_source.html"><span class="icondoc"></span></a><a class="el" href="timer_8hpp.html" target="_self">timer.hpp</a></td><td class="desc"></td></tr>
 <tr id="row_0_0_0_0_57_" class="even" style="display:none;"><td class="entry"><span style="width:80px;display:inline-block;">&#160;</span><a href="timeseries_8hpp_source.html"><span class="icondoc"></span></a><a class="el" href="timeseries_8hpp.html" target="_self">timeseries.hpp</a></td><td class="desc"></td></tr>
 <tr id="row_0_0_1_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span id="arr_0_0_1_" class="arrow" onclick="toggleFolder('0_0_1_')">&#9658;</span><span id="img_0_0_1_" class="iconfclosed" onclick="toggleFolder('0_0_1_')">&#160;</span><a class="el" href="dir_01cbbd8dcbf9de3825992568658f467e.html" target="_self">src</a></td><td class="desc"></td></tr>
-<tr id="row_0_0_1_0_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><a href="authenticator__manager_8hpp_source.html"><span class="icondoc"></span></a><a class="el" href="authenticator__manager_8hpp.html" target="_self">authenticator_manager.hpp</a></td><td class="desc"></td></tr>
-<tr id="row_0_0_1_1_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><a href="config_8hpp_source.html"><span class="icondoc"></span></a><a class="el" href="config_8hpp.html" target="_self">config.hpp</a></td><td class="desc"></td></tr>
-<tr id="row_0_0_1_2_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><a href="decoder_8hpp_source.html"><span class="icondoc"></span></a><a class="el" href="decoder_8hpp.html" target="_self">decoder.hpp</a></td><td class="desc"></td></tr>
-<tr id="row_0_0_1_3_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><a href="encoder_8hpp_source.html"><span class="icondoc"></span></a><a class="el" href="encoder_8hpp.html" target="_self">encoder.hpp</a></td><td class="desc"></td></tr>
-<tr id="row_0_0_1_4_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><a href="event__loop_8hpp_source.html"><span class="icondoc"></span></a><a class="el" href="event__loop_8hpp.html" target="_self">event_loop.hpp</a></td><td class="desc"></td></tr>
-<tr id="row_0_0_1_5_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><a href="event__queue_8hpp_source.html"><span class="icondoc"></span></a><a class="el" href="event__queue_8hpp.html" target="_self">event_queue.hpp</a></td><td class="desc"></td></tr>
-<tr id="row_0_0_1_6_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><a href="gate_8hpp_source.html"><span class="icondoc"></span></a><a class="el" href="gate_8hpp.html" target="_self">gate.hpp</a></td><td class="desc"></td></tr>
-<tr id="row_0_0_1_7_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><a href="http__proxy_8hpp_source.html"><span class="icondoc"></span></a><a class="el" href="http__proxy_8hpp.html" target="_self">http_proxy.hpp</a></td><td class="desc"></td></tr>
-<tr id="row_0_0_1_8_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><a href="libev_8hpp_source.html"><span class="icondoc"></span></a><a class="el" href="libev_8hpp.html" target="_self">libev.hpp</a></td><td class="desc"></td></tr>
-<tr id="row_0_0_1_9_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><a href="libevent_8hpp_source.html"><span class="icondoc"></span></a><a class="el" href="libevent_8hpp.html" target="_self">libevent.hpp</a></td><td class="desc"></td></tr>
-<tr id="row_0_0_1_10_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><a href="libevent__ssl__socket_8hpp_source.html"><span class="icondoc"></span></a><a class="el" href="libevent__ssl__socket_8hpp.html" target="_self">libevent_ssl_socket.hpp</a></td><td class="desc"></td></tr>
+<tr id="row_0_0_1_0_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span id="arr_0_0_1_0_" class="arrow" onclick="toggleFolder('0_0_1_0_')">&#9658;</span><span id="img_0_0_1_0_" class="iconfclosed" onclick="toggleFolder('0_0_1_0_')">&#160;</span><a class="el" href="dir_0ac73505685689cb4a842e520ca4cca6.html" target="_self">posix</a></td><td class="desc"></td></tr>
+<tr id="row_0_0_1_0_0_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span id="arr_0_0_1_0_0_" class="arrow" onclick="toggleFolder('0_0_1_0_0_')">&#9658;</span><span id="img_0_0_1_0_0_" class="iconfclosed" onclick="toggleFolder('0_0_1_0_0_')">&#160;</span><a class="el" href="dir_ecbc207ab261ae6376e9b7d1e9eba3c1.html" target="_self">libev</a></td><td class="desc"></td></tr>
+<tr id="row_0_0_1_0_0_0_" class="even" style="display:none;"><td class="entry"><span style="width:96px;display:inline-block;">&#160;</span><a href="libev_8hpp_source.html"><span class="icondoc"></span></a><a class="el" href="libev_8hpp.html" target="_self">libev.hpp</a></td><td class="desc"></td></tr>
+<tr id="row_0_0_1_0_1_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span id="arr_0_0_1_0_1_" class="arrow" onclick="toggleFolder('0_0_1_0_1_')">&#9658;</span><span id="img_0_0_1_0_1_" class="iconfclosed" onclick="toggleFolder('0_0_1_0_1_')">&#160;</span><a class="el" href="dir_b2935a02400d93f2f95b894ab5508ef6.html" target="_self">libevent</a></td><td class="desc"></td></tr>
+<tr id="row_0_0_1_0_1_0_" class="even" style="display:none;"><td class="entry"><span style="width:96px;display:inline-block;">&#160;</span><a href="libevent_8hpp_source.html"><span class="icondoc"></span></a><a class="el" href="libevent_8hpp.html" target="_self">libevent.hpp</a></td><td class="desc"></td></tr>
+<tr id="row_0_0_1_0_1_1_" class="even" style="display:none;"><td class="entry"><span style="width:96px;display:inline-block;">&#160;</span><a href="libevent__ssl__socket_8hpp_source.html"><span class="icondoc"></span></a><a class="el" href="libevent__ssl__socket_8hpp.html" target="_self">libevent_ssl_socket.hpp</a></td><td class="desc"></td></tr>
+<tr id="row_0_0_1_0_2_" class="even" style="display:none;"><td class="entry"><span style="width:80px;display:inline-block;">&#160;</span><a href="src_2posix_2subprocess_8hpp_source.html"><span class="icondoc"></span></a><a class="el" href="src_2posix_2subprocess_8hpp.html" target="_self">subprocess.hpp</a></td><td class="desc"></td></tr>
+<tr id="row_0_0_1_1_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span id="arr_0_0_1_1_" class="arrow" onclick="toggleFolder('0_0_1_1_')">&#9658;</span><span id="img_0_0_1_1_" class="iconfclosed" onclick="toggleFolder('0_0_1_1_')">&#160;</span><a class="el" href="dir_4f303781ded361ff602a549327c53cc9.html" target="_self">windows</a></td><td class="desc"></td></tr>
+<tr id="row_0_0_1_1_0_" class="even" style="display:none;"><td class="entry"><span style="width:80px;display:inline-block;">&#160;</span><a href="windows_2event__loop_8hpp_source.html"><span class="icondoc"></span></a><a class="el" href="windows_2event__loop_8hpp.html" target="_self">event_loop.hpp</a></td><td class="desc"></td></tr>
+<tr id="row_0_0_1_1_1_" class="even" style="display:none;"><td class="entry"><span style="width:80px;display:inline-block;">&#160;</span><a href="libwinio_8hpp_source.html"><span class="icondoc"></span></a><a class="el" href="libwinio_8hpp.html" target="_self">libwinio.hpp</a></td><td class="desc"></td></tr>
+<tr id="row_0_0_1_1_2_" class="even" style="display:none;"><td class="entry"><span style="width:80px;display:inline-block;">&#160;</span><a href="src_2windows_2subprocess_8hpp_source.html"><span class="icondoc"></span></a><a class="el" href="src_2windows_2subprocess_8hpp.html" target="_self">subprocess.hpp</a></td><td class="desc"></td></tr>
+<tr id="row_0_0_1_2_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><a href="authenticator__manager_8hpp_source.html"><span class="icondoc"></span></a><a class="el" href="authenticator__manager_8hpp.html" target="_self">authenticator_manager.hpp</a></td><td class="desc"></td></tr>
+<tr id="row_0_0_1_3_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><a href="config_8hpp_source.html"><span class="icondoc"></span></a><a class="el" href="config_8hpp.html" target="_self">config.hpp</a></td><td class="desc"></td></tr>
+<tr id="row_0_0_1_4_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><a href="decoder_8hpp_source.html"><span class="icondoc"></span></a><a class="el" href="decoder_8hpp.html" target="_self">decoder.hpp</a></td><td class="desc"></td></tr>
+<tr id="row_0_0_1_5_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><a href="encoder_8hpp_source.html"><span class="icondoc"></span></a><a class="el" href="encoder_8hpp.html" target="_self">encoder.hpp</a></td><td class="desc"></td></tr>
+<tr id="row_0_0_1_6_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><a href="event__loop_8hpp_source.html"><span class="icondoc"></span></a><a class="el" href="event__loop_8hpp.html" target="_self">event_loop.hpp</a></td><td class="desc"></td></tr>
+<tr id="row_0_0_1_7_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><a href="event__queue_8hpp_source.html"><span class="icondoc"></span></a><a class="el" href="event__queue_8hpp.html" target="_self">event_queue.hpp</a></td><td class="desc"></td></tr>
+<tr id="row_0_0_1_8_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><a href="gate_8hpp_source.html"><span class="icondoc"></span></a><a class="el" href="gate_8hpp.html" target="_self">gate.hpp</a></td><td class="desc"></td></tr>
+<tr id="row_0_0_1_9_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><a href="http__proxy_8hpp_source.html"><span class="icondoc"></span></a><a class="el" href="http__proxy_8hpp.html" target="_self">http_proxy.hpp</a></td><td class="desc"></td></tr>
+<tr id="row_0_0_1_10_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><a href="io__internal_8hpp_source.html"><span class="icondoc"></span></a><a class="el" href="io__internal_8hpp.html" target="_self">io_internal.hpp</a></td><td class="desc"></td></tr>
 <tr id="row_0_0_1_11_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><a href="memory__profiler_8hpp_source.html"><span class="icondoc"></span></a><a class="el" href="memory__profiler_8hpp.html" target="_self">memory_profiler.hpp</a></td><td class="desc"></td></tr>
 <tr id="row_0_0_1_12_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><a href="openssl_8hpp_source.html"><span class="icondoc"></span></a><a class="el" href="openssl_8hpp.html" target="_self">openssl.hpp</a></td><td class="desc"></td></tr>
 <tr id="row_0_0_1_13_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><a href="poll__socket_8hpp_source.html"><span class="icondoc"></span></a><a class="el" href="poll__socket_8hpp.html" target="_self">poll_socket.hpp</a></td><td class="desc"></td></tr>
@@ -141,8 +150,6 @@
 <tr id="row_0_0_1_15_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><a href="run__queue_8hpp_source.html"><span class="icondoc"></span></a><a class="el" href="run__queue_8hpp.html" target="_self">run_queue.hpp</a></td><td class="desc"></td></tr>
 <tr id="row_0_0_1_16_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><a href="semaphore_8hpp_source.html"><span class="icondoc"></span></a><a class="el" href="semaphore_8hpp.html" target="_self">semaphore.hpp</a></td><td class="desc"></td></tr>
 <tr id="row_0_0_1_17_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><a href="socket__manager_8hpp_source.html"><span class="icondoc"></span></a><a class="el" href="socket__manager_8hpp.html" target="_self">socket_manager.hpp</a></td><td class="desc"></td></tr>
-<tr id="row_0_0_1_18_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><a href="subprocess__posix_8hpp_source.html"><span class="icondoc"></span></a><a class="el" href="subprocess__posix_8hpp.html" target="_self">subprocess_posix.hpp</a></td><td class="desc"></td></tr>
-<tr id="row_0_0_1_19_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><a href="subprocess__windows_8hpp_source.html"><span class="icondoc"></span></a><a class="el" href="subprocess__windows_8hpp.html" target="_self">subprocess_windows.hpp</a></td><td class="desc"></td></tr>
 <tr id="row_0_1_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_0_1_" class="arrow" onclick="toggleFolder('0_1_')">&#9658;</span><span id="img_0_1_" class="iconfclosed" onclick="toggleFolder('0_1_')">&#160;</span><a class="el" href="dir_aa547de1d719d14adccfca1dfb1735b3.html" target="_self">stout</a></td><td class="desc"></td></tr>
 <tr id="row_0_1_0_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span id="arr_0_1_0_" class="arrow" onclick="toggleFolder('0_1_0_')">&#9658;</span><span id="img_0_1_0_" class="iconfclosed" onclick="toggleFolder('0_1_0_')">&#160;</span><a class="el" href="dir_1a1b923d951dd999d43396870333fc33.html" target="_self">include</a></td><td class="desc"></td></tr>
 <tr id="row_0_1_0_0_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span id="arr_0_1_0_0_" class="arrow" onclick="toggleFolder('0_1_0_0_')">&#9658;</span><span id="img_0_1_0_0_" class="iconfclosed" onclick="toggleFolder('0_1_0_0_')">&#160;</span><a class="el" href="dir_dbd52553d038069c1ed93e3477ea333d.html" target="_self">stout</a></td><td class="desc"></td></tr>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/functions_a.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/functions_a.html b/content/api/latest/c++/functions_a.html
index 3776996..5b48703 100644
--- a/content/api/latest/c++/functions_a.html
+++ b/content/api/latest/c++/functions_a.html
@@ -593,9 +593,12 @@
 </li>
 <li>as()
 : <a class="el" href="structJSON_1_1Number.html#a56cb07aeff197c76b03798cd5f25c347">JSON::Number</a>
-, <a class="el" href="structJSON_1_1Value.html#a32ddf233c0ec159c4d72252529219cf6">JSON::Value</a>
+, <a class="el" href="structJSON_1_1Value.html#a2722b8532ba6307e398b4ae28a348c04">JSON::Value</a>
 , <a class="el" href="structprocess_1_1Event.html#a5e2a796c20db188a91540378ac6c6ab5">process::Event</a>
 </li>
+<li>assign_iocp()
+: <a class="el" href="classos_1_1WindowsFD.html#a1a9c96c20213e1b94ba8dcc1bb059163">os::WindowsFD</a>
+</li>
 <li>associate()
 : <a class="el" href="classprocess_1_1Promise.html#aa70c825f2b107eac5f393db03d2dd6ec">process::Promise&lt; T &gt;</a>
 </li>
@@ -605,7 +608,7 @@
 <li>at()
 : <a class="el" href="classBoundedHashMap.html#a70ac620485764a32411dfd63cbed12c5">BoundedHashMap&lt; Key, Value &gt;</a>
 , <a class="el" href="structJSON_1_1Object.html#a4a722484eac14de1842f265785f05e66">JSON::Object</a>
-, <a class="el" href="classLinkedHashMap.html#ae87141dd103665dca487b62d385d5c44">LinkedHashMap&lt; Key, Value &gt;</a>
+, <a class="el" href="classLinkedHashMap.html#a4b6c8f1254c3ccd2459d94215156c1bd">LinkedHashMap&lt; Key, Value &gt;</a>
 </li>
 <li>attach()
 : <a class="el" href="classmesos_1_1internal_1_1Files.html#afba604e3195becd2eedd37675c0bdee2">mesos::internal::Files</a>
@@ -619,7 +622,7 @@
 : <a class="el" href="classmesos_1_1internal_1_1slave_1_1Slave.html#ae960552ceef724d0391a3e35d2d00a71">mesos::internal::slave::Slave</a>
 </li>
 <li>Attributes()
-: <a class="el" href="classmesos_1_1Attributes.html#a9682a8eaa0dbeaa79db17e995216ed5c">mesos::Attributes</a>
+: <a class="el" href="classmesos_1_1Attributes.html#a289537baeca854ebcf9c79ec78c89376">mesos::Attributes</a>
 </li>
 <li>attributes
 : <a class="el" href="classmesos_1_1internal_1_1slave_1_1Flags.html#a28cd0cfc2a86e965450c61ec91857369">mesos::internal::slave::Flags</a>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/functions_c.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/functions_c.html b/content/api/latest/c++/functions_c.html
index 881d413..8823e8e 100644
--- a/content/api/latest/c++/functions_c.html
+++ b/content/api/latest/c++/functions_c.html
@@ -461,12 +461,12 @@
 : <a class="el" href="classmesos_1_1ResourceConversion.html#afa8d5fe5c9c3f6f1588d7df710262080">mesos::ResourceConversion</a>
 , <a class="el" href="classmesos_1_1v1_1_1ResourceConversion.html#a143d22da9ef8e68799b35478bb4e22fe">mesos::v1::ResourceConversion</a>
 </li>
-<li>consumer
-: <a class="el" href="classprocess_1_1EventQueue.html#a73f44b10f6d09ead6bdf3ab11cba4d06">process::EventQueue</a>
-</li>
 <li>Consumer
 : <a class="el" href="classprocess_1_1EventQueue.html#a11390aaa07bced511a5b7fe4c94e97fd">process::EventQueue</a>
 </li>
+<li>consumer
+: <a class="el" href="classprocess_1_1EventQueue.html#a73f44b10f6d09ead6bdf3ab11cba4d06">process::EventQueue</a>
+</li>
 <li>container
 : <a class="el" href="structmesos_1_1internal_1_1docker_1_1Flags.html#aecdc79d01b0158331c2a88aa52c0ce94">mesos::internal::docker::Flags</a>
 </li>
@@ -642,7 +642,7 @@
 , <a class="el" href="classHDFS.html#a8ca4f418d26a66ef497025d7098b743d">HDFS</a>
 , <a class="el" href="classJvm.html#a8ac4728d48c5f88741f3b19ff53411a9">Jvm</a>
 , <a class="el" href="classmesos_1_1allocator_1_1Allocator.html#ae5b969c74d1dc42b98b35a81d571b3fa">mesos::allocator::Allocator</a>
-, <a class="el" href="classmesos_1_1Authorizer.html#aa8e9df242b24665f46dfaf3f5c1b06d8">mesos::Authorizer</a>
+, <a class="el" href="classmesos_1_1Authorizer.html#a547bf45e35208fa8c6aad9193e54984c">mesos::Authorizer</a>
 , <a class="el" href="classmesos_1_1DiskProfileAdaptor.html#a7a417ba4b641b9870944549a1309b1b5">mesos::DiskProfileAdaptor</a>
 , <a class="el" href="classmesos_1_1http_1_1authentication_1_1BasicAuthenticatorFactory.html#adcff8207f6e5884cb0e73173c7eb5eeb">mesos::http::authentication::BasicAuthenticatorFactory</a>
 , <a class="el" href="classmesos_1_1internal_1_1capabilities_1_1Capabilities.html#a19cc225f466432bc2abb6de9381e8c98">mesos::internal::capabilities::Capabilities</a>
@@ -650,7 +650,7 @@
 , <a class="el" href="classmesos_1_1internal_1_1checks_1_1HealthChecker.html#a105485d24368b1f0533d6b6f27d6b7a1">mesos::internal::checks::HealthChecker</a>
 , <a class="el" href="classmesos_1_1internal_1_1cram__md5_1_1CRAMMD5Authenticatee.html#ae83c66c6e6b5c4c8abeffc908a0a1bf2">mesos::internal::cram_md5::CRAMMD5Authenticatee</a>
 , <a class="el" href="classmesos_1_1internal_1_1cram__md5_1_1CRAMMD5Authenticator.html#aad4d755fbf2d61977eb84ba88c7cdca5">mesos::internal::cram_md5::CRAMMD5Authenticator</a>
-, <a class="el" href="classmesos_1_1internal_1_1LocalAuthorizer.html#ae608992132b9d58dc83351a6e4193541">mesos::internal::LocalAuthorizer</a>
+, <a class="el" href="classmesos_1_1internal_1_1LocalAuthorizer.html#a5f7c557cf2ce041622ff3354395bf9ef">mesos::internal::LocalAuthorizer</a>
 , <a class="el" href="classmesos_1_1internal_1_1LocalResourceProvider.html#a87dd361e253a03cfa2874411b8a366cd">mesos::internal::LocalResourceProvider</a>
 , <a class="el" href="classmesos_1_1internal_1_1LocalResourceProviderDaemon.html#af5132abd40c67bd08e24ac970b71bdfe">mesos::internal::LocalResourceProviderDaemon</a>
 , <a class="el" href="classmesos_1_1internal_1_1master_1_1allocator_1_1MesosAllocator.html#acffe93fb6ad2962eb231404a13295b83">mesos::internal::master::allocator::MesosAllocator&lt; AllocatorProcess &gt;</a>
@@ -676,7 +676,7 @@
 , <a class="el" href="classmesos_1_1internal_1_1slave_1_1docker_1_1MetadataManager.html#accd46bed2e7d2ed7db8fe8ad9876590c">mesos::internal::slave::docker::MetadataManager</a>
 , <a class="el" href="classmesos_1_1internal_1_1slave_1_1docker_1_1Puller.html#a28550d1962a9fa4cd700634a559a399f">mesos::internal::slave::docker::Puller</a>
 , <a class="el" href="classmesos_1_1internal_1_1slave_1_1docker_1_1RegistryPuller.html#ad40636bf20c9d28d4ee71a80a4dafba7">mesos::internal::slave::docker::RegistryPuller</a>
-, <a class="el" href="classmesos_1_1internal_1_1slave_1_1docker_1_1Store.html#a41908b70c12530b115427e4645dd9008">mesos::internal::slave::docker::Store</a>
+, <a class="el" href="classmesos_1_1internal_1_1slave_1_1docker_1_1Store.html#a1ae5b5db1c4177ac93e1211f6a0100f5">mesos::internal::slave::docker::Store</a>
 , <a class="el" href="classmesos_1_1internal_1_1slave_1_1docker_1_1volume_1_1DriverClient.html#abe2d517c6f60c16aec1055c3c437d954">mesos::internal::slave::docker::volume::DriverClient</a>
 , <a class="el" href="classmesos_1_1internal_1_1slave_1_1DockerContainerizer.html#ae4acf3fad0a189161329d3fefcd5b1f0">mesos::internal::slave::DockerContainerizer</a>
 , <a class="el" href="classmesos_1_1internal_1_1slave_1_1DockerRuntimeIsolatorProcess.html#a9425bb59244222c0084f80c004d61d3f">mesos::internal::slave::DockerRuntimeIsolatorProcess</a>
@@ -691,7 +691,7 @@
 , <a class="el" href="classmesos_1_1internal_1_1slave_1_1LinuxFilesystemIsolatorProcess.html#ac4b659a1f0c7435908013ccd93b6501a">mesos::internal::slave::LinuxFilesystemIsolatorProcess</a>
 , <a class="el" href="classmesos_1_1internal_1_1slave_1_1LinuxLauncher.html#a188c7d32972b2998023f77444d125247">mesos::internal::slave::LinuxLauncher</a>
 , <a class="el" href="classmesos_1_1internal_1_1slave_1_1MemorySubsystemProcess.html#af4081dd5f2a08a152cedecea66ad7962">mesos::internal::slave::MemorySubsystemProcess</a>
-, <a class="el" href="classmesos_1_1internal_1_1slave_1_1MesosContainerizer.html#ae12c5816134512ade220ff1541bbaf95">mesos::internal::slave::MesosContainerizer</a>
+, <a class="el" href="classmesos_1_1internal_1_1slave_1_1MesosContainerizer.html#a717b40b6012ceb68d4aab7a02e9f3e4b">mesos::internal::slave::MesosContainerizer</a>
 , <a class="el" href="classmesos_1_1internal_1_1slave_1_1NamespacesIPCIsolatorProcess.html#ab4b40c23df011162220d79c50396ea28">mesos::internal::slave::NamespacesIPCIsolatorProcess</a>
 , <a class="el" href="classmesos_1_1internal_1_1slave_1_1NamespacesPidIsolatorProcess.html#a587bf1fca1c9c74550162b00e8153ca3">mesos::internal::slave::NamespacesPidIsolatorProcess</a>
 , <a class="el" href="classmesos_1_1internal_1_1slave_1_1NetClsSubsystemProcess.html#a3760fe67338489419f386de9d5a0d6d8">mesos::internal::slave::NetClsSubsystemProcess</a>
@@ -730,7 +730,7 @@
 , <a class="el" href="structmesos_1_1internal_1_1tests_1_1common_1_1DefaultFrameworkInfo.html#a842b7475bc4e06999d0570793eb81cb4">mesos::internal::tests::common::DefaultFrameworkInfo&lt; TFrameworkInfo, TCredential &gt;</a>
 , <a class="el" href="classmesos_1_1internal_1_1tests_1_1DockerArchive.html#a826aa2afe5f996a0cc370f671a0342b8">mesos::internal::tests::DockerArchive</a>
 , <a class="el" href="classmesos_1_1internal_1_1tests_1_1LinuxRootfs.html#a989f2d98ba0035548be3fa43a0ae23c4">mesos::internal::tests::LinuxRootfs</a>
-, <a class="el" href="classmesos_1_1internal_1_1tests_1_1Module.html#a81386a14653ded5161d87b4e54c3e0a3">mesos::internal::tests::Module&lt; T, N &gt;</a>
+, <a class="el" href="classmesos_1_1internal_1_1tests_1_1Module.html#a6feec23c6307765d6d74118f26258e75">mesos::internal::tests::Module&lt; T, N &gt;</a>
 , <a class="el" href="classmesos_1_1master_1_1contender_1_1MasterContender.html#a2f084b8ac23c1b3afdc8704bcc4070cc">mesos::master::contender::MasterContender</a>
 , <a class="el" href="classmesos_1_1master_1_1detector_1_1MasterDetector.html#a3ddc796d745072faf0e72b17f3ec7781">mesos::master::detector::MasterDetector</a>
 , <a class="el" href="structmesos_1_1modules_1_1Module_3_01Anonymous_01_4.html#a292084f269e3e3013907c91372732e07">mesos::modules::Module&lt; Anonymous &gt;</a>
@@ -753,7 +753,7 @@
 , <a class="el" href="structmesos_1_1modules_1_1Module_3_01TestModule_01_4.html#a8d7381ef38d1d809bdef51d1bc475425">mesos::modules::Module&lt; TestModule &gt;</a>
 , <a class="el" href="classmesos_1_1modules_1_1ModuleManager.html#a0ab072c60a3c002765c843bdb6eafed4">mesos::modules::ModuleManager</a>
 , <a class="el" href="classmesos_1_1ObjectApprovers.html#a0b6051b6fc3abc97d9850c1ad5c66acb">mesos::ObjectApprovers</a>
-, <a class="el" href="classmesos_1_1resource__provider_1_1Registrar.html#a50acc0d159c741cffbaed0a13550877d">mesos::resource_provider::Registrar</a>
+, <a class="el" href="classmesos_1_1resource__provider_1_1Registrar.html#aa352cf7e0d93f192ab82e417821384f9">mesos::resource_provider::Registrar</a>
 , <a class="el" href="classmesos_1_1SecretResolver.html#ab10b3be9bca16db587e8c065da0c71cb">mesos::SecretResolver</a>
 , <a class="el" href="classmesos_1_1slave_1_1ContainerLogger.html#a730e7d402fa06c15886eff94cf0b40d5">mesos::slave::ContainerLogger</a>
 , <a class="el" href="classmesos_1_1slave_1_1QoSController.html#ab6e9f5cbef4c49786372467678baa27c">mesos::slave::QoSController</a>
@@ -762,21 +762,22 @@
 , <a class="el" href="classmesos_1_1uri_1_1CurlFetcherPlugin.html#aaf036192088af176acc7019f51afb666">mesos::uri::CurlFetcherPlugin</a>
 , <a class="el" href="classmesos_1_1uri_1_1DockerFetcherPlugin.html#af758d8583ab14f660cd326fd1256e627">mesos::uri::DockerFetcherPlugin</a>
 , <a class="el" href="classmesos_1_1uri_1_1HadoopFetcherPlugin.html#a32e0d1ef34fd100be130bbc2c686e24b">mesos::uri::HadoopFetcherPlugin</a>
-, <a class="el" href="classnet_1_1IP.html#a627b2e1c1f63a2bc6315a9dfecee141d">net::IP</a>
-, <a class="el" href="classnet_1_1IP_1_1Network.html#ab0bb256813c57bddbf30ab5b10e6d67e">net::IP::Network</a>
+, <a class="el" href="classnet_1_1IP.html#ada206eb1ab14c032f071daf9b8c1b96c">net::IP</a>
+, <a class="el" href="classnet_1_1IP_1_1Network.html#aae567f80d6cee424de7a5ddaf4fcc912">net::IP::Network</a>
 , <a class="el" href="classos_1_1Stack.html#a248fb0d3d52e903c887890d0155f70b7">os::Stack</a>
-, <a class="el" href="classprocess_1_1http_1_1authentication_1_1JWT.html#ab35e9499e062048d82377df855769bfe">process::http::authentication::JWT</a>
+, <a class="el" href="classprocess_1_1http_1_1authentication_1_1JWT.html#ad97d978e383dffd8f6c65c5cfd354837">process::http::authentication::JWT</a>
 , <a class="el" href="classprocess_1_1http_1_1header_1_1WWWAuthenticate.html#ab7ef253f15644097d671e07d602bff72">process::http::header::WWWAuthenticate</a>
-, <a class="el" href="classprocess_1_1http_1_1Server.html#ad5bd52941653a8aeef6b416df58abf38">process::http::Server</a>
+, <a class="el" href="classprocess_1_1http_1_1Server.html#aad73443f021cf049eb9e0a0b7f845346">process::http::Server</a>
 , <a class="el" href="classprocess_1_1internal_1_1Loop.html#a4067cc276cd8152074a7094acf9ca451">process::internal::Loop&lt; Iterate, Body, T, R &gt;</a>
 , <a class="el" href="classprocess_1_1metrics_1_1internal_1_1MetricsProcess.html#a1b0e6141bb79047bf1247e27c2befcfd">process::metrics::internal::MetricsProcess</a>
 , <a class="el" href="classprocess_1_1network_1_1Address.html#a65e3511ccaa4fe9e6794675cab161c4c">process::network::Address</a>
 , <a class="el" href="classprocess_1_1network_1_1internal_1_1LibeventSSLSocketImpl.html#a92fdb78c9aa14030f802d1160f8dfe5c">process::network::internal::LibeventSSLSocketImpl</a>
 , <a class="el" href="classprocess_1_1network_1_1internal_1_1PollSocketImpl.html#af893115c4d9b82346bbf2a204de9c516">process::network::internal::PollSocketImpl</a>
-, <a class="el" href="classprocess_1_1network_1_1internal_1_1Socket.html#ad27271cc7bc094c080af34bc56519b8c">process::network::internal::Socket&lt; AddressType &gt;</a>
-, <a class="el" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a5a00f792b5055241fea9f1fc81b2c4c6">process::network::internal::SocketImpl</a>
+, <a class="el" href="classprocess_1_1network_1_1internal_1_1Socket.html#a0fbcec9bb3b4ecfe298805e179c70f18">process::network::internal::Socket&lt; AddressType &gt;</a>
+, <a class="el" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a2f90a53c7035eade21431123d9c0037a">process::network::internal::SocketImpl</a>
 , <a class="el" href="classprocess_1_1network_1_1unix_1_1Address.html#af91b88086c6c1385e61b42b20510bdd4">process::network::unix::Address</a>
 , <a class="el" href="classprocess_1_1Time.html#a7fa791510b349cfadefe26460730cc2a">process::Time</a>
+, <a class="el" href="classprocess_1_1windows_1_1EventLoop.html#a3bd3da5d721cf2c4db9c5551bdccc3a4">process::windows::EventLoop</a>
 , <a class="el" href="classZooKeeper.html#a60244c525246bd57ff4c971b9ab7f18f">ZooKeeper</a>
 </li>
 <li>created()

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/functions_d.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/functions_d.html b/content/api/latest/c++/functions_d.html
index e01c3ab..a8ed40f 100644
--- a/content/api/latest/c++/functions_d.html
+++ b/content/api/latest/c++/functions_d.html
@@ -395,7 +395,7 @@
 : <a class="el" href="classmesos_1_1internal_1_1slave_1_1DiskUsageCollector.html#a3a20f26f0b31c9efd4e52c7679458531">mesos::internal::slave::DiskUsageCollector</a>
 </li>
 <li>DispatchEvent()
-: <a class="el" href="structprocess_1_1DispatchEvent.html#a416fd627adb3f073cd388afa247df399">process::DispatchEvent</a>
+: <a class="el" href="structprocess_1_1DispatchEvent.html#a6545170c308f78466893b03bfbb57fe4">process::DispatchEvent</a>
 </li>
 <li>dns
 : <a class="el" href="classDocker_1_1Container.html#a434939f30a9e9119fd06c54b81e117d3">Docker::Container</a>
@@ -495,7 +495,7 @@
 : <a class="el" href="classJvm.html#a0d3465e97ae553d2805bfa5add4901fd">Jvm</a>
 </li>
 <li>DRFSorter()
-: <a class="el" href="classmesos_1_1internal_1_1master_1_1allocator_1_1DRFSorter.html#a3b4b4c33a5f1855a871ba18d6e853dc5">mesos::internal::master::allocator::DRFSorter</a>
+: <a class="el" href="classmesos_1_1internal_1_1master_1_1allocator_1_1DRFSorter.html#a26700cc833d70d831dc0510063aeb77c">mesos::internal::master::allocator::DRFSorter</a>
 </li>
 <li>driver
 : <a class="el" href="structmesos_1_1python_1_1MesosExecutorDriverImpl.html#aa4892e3154e1acfb0f7906d698feafa5">mesos::python::MesosExecutorDriverImpl</a>
@@ -516,6 +516,9 @@
 <li>du()
 : <a class="el" href="classHDFS.html#a4496b32281052f9bcb1135a96ac281a4">HDFS</a>
 </li>
+<li>dup
+: <a class="el" href="classos_1_1WindowsFD.html#ae8d4fd38b52ea9f38605f46195fd040b">os::WindowsFD</a>
+</li>
 <li>DUP2()
 : <a class="el" href="classprocess_1_1Subprocess_1_1ChildHook.html#ab5459840c850453f2cacfa5267b9e395">process::Subprocess::ChildHook</a>
 </li>
@@ -523,13 +526,13 @@
 : <a class="el" href="classprocess_1_1Subprocess_1_1IO.html#adb9433454d727de27b2440f729d19990af648d44b624da021da40a80190291380">process::Subprocess::IO</a>
 </li>
 <li>Duration()
-: <a class="el" href="classDuration.html#a7536cef737dbe58a524191be69793d24">Duration</a>
+: <a class="el" href="classDuration.html#a418194042b96bf6ca3135d01106226ad">Duration</a>
 </li>
 <li>duration()
 : <a class="el" href="classprocess_1_1Time.html#a526a30c9b274aed438ee67e7bf732739">process::Time</a>
 </li>
 <li>DynamicLibrary()
-: <a class="el" href="classDynamicLibrary.html#a5068283b12c51f6f3589f18ba7075494">DynamicLibrary</a>
+: <a class="el" href="classDynamicLibrary.html#a59fb7945e893625717cc37c8bc923236">DynamicLibrary</a>
 </li>
 </ul>
 </div><!-- contents -->

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/functions_e.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/functions_e.html b/content/api/latest/c++/functions_e.html
index c6c0e36..d92e90c 100644
--- a/content/api/latest/c++/functions_e.html
+++ b/content/api/latest/c++/functions_e.html
@@ -463,7 +463,7 @@
 : <a class="el" href="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess.html#a9487bd3b10f4c8c3837551c961497bf6">mesos::internal::master::allocator::internal::HierarchicalAllocatorProcess</a>
 </li>
 <li>expire()
-: <a class="el" href="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess.html#a2928f839fd010669924789c6cccd0829">mesos::internal::master::allocator::internal::HierarchicalAllocatorProcess</a>
+: <a class="el" href="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess.html#afcb553f13a6edb382641c1e07d67feb1">mesos::internal::master::allocator::internal::HierarchicalAllocatorProcess</a>
 </li>
 <li>expired()
 : <a class="el" href="classprocess_1_1Timeout.html#a7bdb45221b14748ab1339479e480c4b7">process::Timeout</a>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/functions_func_a.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/functions_func_a.html b/content/api/latest/c++/functions_func_a.html
index 04e7af0..a49038e 100644
--- a/content/api/latest/c++/functions_func_a.html
+++ b/content/api/latest/c++/functions_func_a.html
@@ -391,7 +391,7 @@
 , <a class="el" href="classmesos_1_1ResourceConversion.html#adb691cdd12b7af7db52284b0a1737533">mesos::ResourceConversion</a>
 , <a class="el" href="classmesos_1_1Resources.html#aa0307172aed9f2a8bf5ab9852808074b">mesos::Resources</a>
 , <a class="el" href="classmesos_1_1v1_1_1ResourceConversion.html#a9b5fd5798c8e81bbef5f686b09432c5d">mesos::v1::ResourceConversion</a>
-, <a class="el" href="classmesos_1_1v1_1_1Resources.html#a0f71adb1a8e92b4ab774355b10814717">mesos::v1::Resources</a>
+, <a class="el" href="classmesos_1_1v1_1_1Resources.html#a0eefe6f6c51e2af7fd680c3ed964dd6c">mesos::v1::Resources</a>
 , <a class="el" href="classprocess_1_1firewall_1_1DisabledEndpointsFirewallRule.html#a7af83219b1a8f32238c24dcb5cb5e30a">process::firewall::DisabledEndpointsFirewallRule</a>
 , <a class="el" href="classprocess_1_1firewall_1_1FirewallRule.html#aef80202f4571b5d401daf7e52dacbf32">process::firewall::FirewallRule</a>
 </li>
@@ -408,7 +408,7 @@
 , <a class="el" href="classmesos_1_1ObjectApprovers.html#aebc7fe7ec3179b1a4dac370c50762b0a">mesos::ObjectApprovers</a>
 </li>
 <li>Argv()
-: <a class="el" href="classos_1_1raw_1_1Argv.html#a560ad2a3dd7d4771879a0e262baa200b">os::raw::Argv</a>
+: <a class="el" href="classos_1_1raw_1_1Argv.html#ae92f950a99dae0d0758050d5e079b450">os::raw::Argv</a>
 </li>
 <li>Array()
 : <a class="el" href="structJSON_1_1Array.html#a2d3ae68269b6ac745170a0ec540108b0">JSON::Array</a>
@@ -417,13 +417,16 @@
 : <a class="el" href="classJvm_1_1Class.html#a9e9fd6064ad6d0b34c5bd4739c299117">Jvm::Class</a>
 </li>
 <li>ArrayWriter()
-: <a class="el" href="classJSON_1_1ArrayWriter.html#ae4e7e2e5a08ce25fbe5ca6e68df656f0">JSON::ArrayWriter</a>
+: <a class="el" href="classJSON_1_1ArrayWriter.html#ae2fc79ce389e88e21e65e7c421a09f26">JSON::ArrayWriter</a>
 </li>
 <li>as()
 : <a class="el" href="structJSON_1_1Number.html#a56cb07aeff197c76b03798cd5f25c347">JSON::Number</a>
-, <a class="el" href="structJSON_1_1Value.html#a2722b8532ba6307e398b4ae28a348c04">JSON::Value</a>
+, <a class="el" href="structJSON_1_1Value.html#a32ddf233c0ec159c4d72252529219cf6">JSON::Value</a>
 , <a class="el" href="structprocess_1_1Event.html#a5e2a796c20db188a91540378ac6c6ab5">process::Event</a>
 </li>
+<li>assign_iocp()
+: <a class="el" href="classos_1_1WindowsFD.html#a1a9c96c20213e1b94ba8dcc1bb059163">os::WindowsFD</a>
+</li>
 <li>associate()
 : <a class="el" href="classprocess_1_1Promise.html#aa70c825f2b107eac5f393db03d2dd6ec">process::Promise&lt; T &gt;</a>
 </li>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/functions_func_c.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/functions_func_c.html b/content/api/latest/c++/functions_func_c.html
index 199381a..7bf318c 100644
--- a/content/api/latest/c++/functions_func_c.html
+++ b/content/api/latest/c++/functions_func_c.html
@@ -480,7 +480,7 @@
 , <a class="el" href="classmesos_1_1internal_1_1slave_1_1docker_1_1MetadataManager.html#accd46bed2e7d2ed7db8fe8ad9876590c">mesos::internal::slave::docker::MetadataManager</a>
 , <a class="el" href="classmesos_1_1internal_1_1slave_1_1docker_1_1Puller.html#a28550d1962a9fa4cd700634a559a399f">mesos::internal::slave::docker::Puller</a>
 , <a class="el" href="classmesos_1_1internal_1_1slave_1_1docker_1_1RegistryPuller.html#ad40636bf20c9d28d4ee71a80a4dafba7">mesos::internal::slave::docker::RegistryPuller</a>
-, <a class="el" href="classmesos_1_1internal_1_1slave_1_1docker_1_1Store.html#a41908b70c12530b115427e4645dd9008">mesos::internal::slave::docker::Store</a>
+, <a class="el" href="classmesos_1_1internal_1_1slave_1_1docker_1_1Store.html#a1ae5b5db1c4177ac93e1211f6a0100f5">mesos::internal::slave::docker::Store</a>
 , <a class="el" href="classmesos_1_1internal_1_1slave_1_1docker_1_1volume_1_1DriverClient.html#abe2d517c6f60c16aec1055c3c437d954">mesos::internal::slave::docker::volume::DriverClient</a>
 , <a class="el" href="classmesos_1_1internal_1_1slave_1_1DockerContainerizer.html#ae4acf3fad0a189161329d3fefcd5b1f0">mesos::internal::slave::DockerContainerizer</a>
 , <a class="el" href="classmesos_1_1internal_1_1slave_1_1DockerRuntimeIsolatorProcess.html#a9425bb59244222c0084f80c004d61d3f">mesos::internal::slave::DockerRuntimeIsolatorProcess</a>
@@ -495,7 +495,7 @@
 , <a class="el" href="classmesos_1_1internal_1_1slave_1_1LinuxFilesystemIsolatorProcess.html#ac4b659a1f0c7435908013ccd93b6501a">mesos::internal::slave::LinuxFilesystemIsolatorProcess</a>
 , <a class="el" href="classmesos_1_1internal_1_1slave_1_1LinuxLauncher.html#a188c7d32972b2998023f77444d125247">mesos::internal::slave::LinuxLauncher</a>
 , <a class="el" href="classmesos_1_1internal_1_1slave_1_1MemorySubsystemProcess.html#af4081dd5f2a08a152cedecea66ad7962">mesos::internal::slave::MemorySubsystemProcess</a>
-, <a class="el" href="classmesos_1_1internal_1_1slave_1_1MesosContainerizer.html#ae12c5816134512ade220ff1541bbaf95">mesos::internal::slave::MesosContainerizer</a>
+, <a class="el" href="classmesos_1_1internal_1_1slave_1_1MesosContainerizer.html#a717b40b6012ceb68d4aab7a02e9f3e4b">mesos::internal::slave::MesosContainerizer</a>
 , <a class="el" href="classmesos_1_1internal_1_1slave_1_1NamespacesIPCIsolatorProcess.html#ab4b40c23df011162220d79c50396ea28">mesos::internal::slave::NamespacesIPCIsolatorProcess</a>
 , <a class="el" href="classmesos_1_1internal_1_1slave_1_1NamespacesPidIsolatorProcess.html#a587bf1fca1c9c74550162b00e8153ca3">mesos::internal::slave::NamespacesPidIsolatorProcess</a>
 , <a class="el" href="classmesos_1_1internal_1_1slave_1_1NetClsSubsystemProcess.html#a3760fe67338489419f386de9d5a0d6d8">mesos::internal::slave::NetClsSubsystemProcess</a>
@@ -534,12 +534,12 @@
 , <a class="el" href="structmesos_1_1internal_1_1tests_1_1common_1_1DefaultFrameworkInfo.html#a842b7475bc4e06999d0570793eb81cb4">mesos::internal::tests::common::DefaultFrameworkInfo&lt; TFrameworkInfo, TCredential &gt;</a>
 , <a class="el" href="classmesos_1_1internal_1_1tests_1_1DockerArchive.html#a826aa2afe5f996a0cc370f671a0342b8">mesos::internal::tests::DockerArchive</a>
 , <a class="el" href="classmesos_1_1internal_1_1tests_1_1LinuxRootfs.html#a989f2d98ba0035548be3fa43a0ae23c4">mesos::internal::tests::LinuxRootfs</a>
-, <a class="el" href="classmesos_1_1internal_1_1tests_1_1Module.html#a6feec23c6307765d6d74118f26258e75">mesos::internal::tests::Module&lt; T, N &gt;</a>
+, <a class="el" href="classmesos_1_1internal_1_1tests_1_1Module.html#abae032ed084599d940352ce9b36afa74">mesos::internal::tests::Module&lt; T, N &gt;</a>
 , <a class="el" href="classmesos_1_1master_1_1contender_1_1MasterContender.html#a2f084b8ac23c1b3afdc8704bcc4070cc">mesos::master::contender::MasterContender</a>
 , <a class="el" href="classmesos_1_1master_1_1detector_1_1MasterDetector.html#a3ddc796d745072faf0e72b17f3ec7781">mesos::master::detector::MasterDetector</a>
 , <a class="el" href="classmesos_1_1modules_1_1ModuleManager.html#a0ab072c60a3c002765c843bdb6eafed4">mesos::modules::ModuleManager</a>
 , <a class="el" href="classmesos_1_1ObjectApprovers.html#a0b6051b6fc3abc97d9850c1ad5c66acb">mesos::ObjectApprovers</a>
-, <a class="el" href="classmesos_1_1resource__provider_1_1Registrar.html#a50acc0d159c741cffbaed0a13550877d">mesos::resource_provider::Registrar</a>
+, <a class="el" href="classmesos_1_1resource__provider_1_1Registrar.html#aa352cf7e0d93f192ab82e417821384f9">mesos::resource_provider::Registrar</a>
 , <a class="el" href="classmesos_1_1SecretResolver.html#ab10b3be9bca16db587e8c065da0c71cb">mesos::SecretResolver</a>
 , <a class="el" href="classmesos_1_1slave_1_1ContainerLogger.html#a730e7d402fa06c15886eff94cf0b40d5">mesos::slave::ContainerLogger</a>
 , <a class="el" href="classmesos_1_1slave_1_1QoSController.html#ab6e9f5cbef4c49786372467678baa27c">mesos::slave::QoSController</a>
@@ -549,9 +549,9 @@
 , <a class="el" href="classmesos_1_1uri_1_1DockerFetcherPlugin.html#af758d8583ab14f660cd326fd1256e627">mesos::uri::DockerFetcherPlugin</a>
 , <a class="el" href="classmesos_1_1uri_1_1HadoopFetcherPlugin.html#a32e0d1ef34fd100be130bbc2c686e24b">mesos::uri::HadoopFetcherPlugin</a>
 , <a class="el" href="classnet_1_1IP.html#a627b2e1c1f63a2bc6315a9dfecee141d">net::IP</a>
-, <a class="el" href="classnet_1_1IP_1_1Network.html#aae567f80d6cee424de7a5ddaf4fcc912">net::IP::Network</a>
+, <a class="el" href="classnet_1_1IP_1_1Network.html#ab0bb256813c57bddbf30ab5b10e6d67e">net::IP::Network</a>
 , <a class="el" href="classos_1_1Stack.html#a248fb0d3d52e903c887890d0155f70b7">os::Stack</a>
-, <a class="el" href="classprocess_1_1http_1_1authentication_1_1JWT.html#ad97d978e383dffd8f6c65c5cfd354837">process::http::authentication::JWT</a>
+, <a class="el" href="classprocess_1_1http_1_1authentication_1_1JWT.html#ab35e9499e062048d82377df855769bfe">process::http::authentication::JWT</a>
 , <a class="el" href="classprocess_1_1http_1_1header_1_1WWWAuthenticate.html#ab7ef253f15644097d671e07d602bff72">process::http::header::WWWAuthenticate</a>
 , <a class="el" href="classprocess_1_1http_1_1Server.html#a0531ae6fbd791370262751fda7201c1b">process::http::Server</a>
 , <a class="el" href="classprocess_1_1internal_1_1Loop.html#a4067cc276cd8152074a7094acf9ca451">process::internal::Loop&lt; Iterate, Body, T, R &gt;</a>
@@ -559,10 +559,11 @@
 , <a class="el" href="classprocess_1_1network_1_1Address.html#a65e3511ccaa4fe9e6794675cab161c4c">process::network::Address</a>
 , <a class="el" href="classprocess_1_1network_1_1internal_1_1LibeventSSLSocketImpl.html#a92fdb78c9aa14030f802d1160f8dfe5c">process::network::internal::LibeventSSLSocketImpl</a>
 , <a class="el" href="classprocess_1_1network_1_1internal_1_1PollSocketImpl.html#af893115c4d9b82346bbf2a204de9c516">process::network::internal::PollSocketImpl</a>
-, <a class="el" href="classprocess_1_1network_1_1internal_1_1Socket.html#a0fbcec9bb3b4ecfe298805e179c70f18">process::network::internal::Socket&lt; AddressType &gt;</a>
+, <a class="el" href="classprocess_1_1network_1_1internal_1_1Socket.html#a63ec4379f16d4f8dbf39f91b1be74a31">process::network::internal::Socket&lt; AddressType &gt;</a>
 , <a class="el" href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a5a00f792b5055241fea9f1fc81b2c4c6">process::network::internal::SocketImpl</a>
 , <a class="el" href="classprocess_1_1network_1_1unix_1_1Address.html#af91b88086c6c1385e61b42b20510bdd4">process::network::unix::Address</a>
 , <a class="el" href="classprocess_1_1Time.html#a7fa791510b349cfadefe26460730cc2a">process::Time</a>
+, <a class="el" href="classprocess_1_1windows_1_1EventLoop.html#a3bd3da5d721cf2c4db9c5551bdccc3a4">process::windows::EventLoop</a>
 , <a class="el" href="classZooKeeper.html#a60244c525246bd57ff4c971b9ab7f18f">ZooKeeper</a>
 </li>
 <li>created()

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/functions_func_g.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/functions_func_g.html b/content/api/latest/c++/functions_func_g.html
index fcc0ca2..b8d87ab 100644
--- a/content/api/latest/c++/functions_func_g.html
+++ b/content/api/latest/c++/functions_func_g.html
@@ -170,6 +170,9 @@
 <li>get_interpreter()
 : <a class="el" href="clasself_1_1File.html#a2a4f93c734087be5acbd3788dd276f78">elf::File</a>
 </li>
+<li>get_iocp()
+: <a class="el" href="classos_1_1WindowsFD.html#a380eb8d9b7bc0e6b3bfae0e8e9c6bb0f">os::WindowsFD</a>
+</li>
 <li>get_persistent_socket()
 : <a class="el" href="classprocess_1_1SocketManager.html#a11e6bbf80bf1c9b539b3d3e5090675b8">process::SocketManager</a>
 </li>
@@ -193,7 +196,7 @@
 </li>
 <li>getExecutor()
 : <a class="el" href="classmesos_1_1internal_1_1slave_1_1Framework.html#aaa044d0c042d68e59815f1244440560e">mesos::internal::slave::Framework</a>
-, <a class="el" href="classmesos_1_1internal_1_1slave_1_1Slave.html#a68f5a180b0bd905d22cdcea2cd1d8196">mesos::internal::slave::Slave</a>
+, <a class="el" href="classmesos_1_1internal_1_1slave_1_1Slave.html#ae5cbf7aef363a45048acfca39fbb4c89">mesos::internal::slave::Slave</a>
 </li>
 <li>getExecutorIdForPendingTask()
 : <a class="el" href="classmesos_1_1internal_1_1slave_1_1Framework.html#a2fff4fc7fabe8cd06c9fca35f187b82b">mesos::internal::slave::Framework</a>
@@ -258,7 +261,7 @@
 , <a class="el" href="structmesos_1_1internal_1_1master_1_1Slave.html#a165609c395c72244513e2cc8e103f0a9">mesos::internal::master::Slave</a>
 </li>
 <li>getOrElse()
-: <a class="el" href="classOption.html#abbbed1bc42634fa9092160b16be6ca7e">Option&lt; T &gt;</a>
+: <a class="el" href="classOption.html#ac556a5361d05a4f88d0ee9500737250d">Option&lt; T &gt;</a>
 </li>
 <li>getPath()
 : <a class="el" href="classDocker.html#a4d4e8921b4acbd88c5eea3914e20b033">Docker</a>
@@ -302,7 +305,7 @@
 , <a class="el" href="classmesos_1_1v1_1_1Resources.html#a77bd749c9b8e90069b6aff41d617eb9c">mesos::v1::Resources</a>
 </li>
 <li>Group()
-: <a class="el" href="classzookeeper_1_1Group.html#adfdc9e049635868b52b336b5e6e1504c">zookeeper::Group</a>
+: <a class="el" href="classzookeeper_1_1Group.html#a9c43b1e1dbd2a41f25ed5e14bd327135">zookeeper::Group</a>
 </li>
 <li>GroupProcess()
 : <a class="el" href="classzookeeper_1_1GroupProcess.html#a58c1015ffb0ea042f52cec298de9bce7">zookeeper::GroupProcess</a>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/functions_func_l.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/functions_func_l.html b/content/api/latest/c++/functions_func_l.html
index 13d5ea8..ce5117e 100644
--- a/content/api/latest/c++/functions_func_l.html
+++ b/content/api/latest/c++/functions_func_l.html
@@ -123,6 +123,9 @@
 , <a class="el" href="classmesos_1_1MesosSchedulerDriver.html#aeecb18557c3d94f8c8cc46513f770945">mesos::MesosSchedulerDriver</a>
 , <a class="el" href="classmesos_1_1SchedulerDriver.html#acf7cb2a111fd35ac54f2a2cbf20d9998">mesos::SchedulerDriver</a>
 </li>
+<li>launchTimer()
+: <a class="el" href="classprocess_1_1windows_1_1EventLoop.html#a006cb0c8efb7aaadadf0a692d9c2659a">process::windows::EventLoop</a>
+</li>
 <li>LeaderContender()
 : <a class="el" href="classzookeeper_1_1LeaderContender.html#aa52205da4ebdeab17047f9be409d1292">zookeeper::LeaderContender</a>
 </li>
@@ -157,9 +160,9 @@
 </li>
 <li>load()
 : <a class="el" href="clasself_1_1File.html#a6566b238508d4407604370e1db96d16a">elf::File</a>
-, <a class="el" href="classflags_1_1FlagsBase.html#a69a4792cc358705da4af292f3333843c">flags::FlagsBase</a>
+, <a class="el" href="classflags_1_1FlagsBase.html#a8cd76e5147cea872db5e6f91f9453b09">flags::FlagsBase</a>
 , <a class="el" href="classmesos_1_1internal_1_1cram__md5_1_1InMemoryAuxiliaryPropertyPlugin.html#a98237a629f2b875e149ccefade93e47c">mesos::internal::cram_md5::InMemoryAuxiliaryPropertyPlugin</a>
-, <a class="el" href="classmesos_1_1modules_1_1ModuleManager.html#a3bb2245ab8a00d294fc352f96158ef6e">mesos::modules::ModuleManager</a>
+, <a class="el" href="classmesos_1_1modules_1_1ModuleManager.html#acd8f67faddce984397a9cb07b00816f4">mesos::modules::ModuleManager</a>
 </li>
 <li>LoadQoSController()
 : <a class="el" href="classmesos_1_1internal_1_1slave_1_1LoadQoSController.html#a7dc24c0a4717ac0e2a8907200a50231b">mesos::internal::slave::LoadQoSController</a>
@@ -174,7 +177,7 @@
 : <a class="el" href="classprocess_1_1Mutex.html#a2983b29453c623f58b843d924598793b">process::Mutex</a>
 </li>
 <li>Log()
-: <a class="el" href="classmesos_1_1log_1_1Log.html#aac8f9701de39bc94960487c79d5a3221">mesos::log::Log</a>
+: <a class="el" href="classmesos_1_1log_1_1Log.html#a4d1b102f5ce52ebee204cec33f77f04e">mesos::log::Log</a>
 </li>
 <li>Logger()
 : <a class="el" href="classorg_1_1apache_1_1log4j_1_1Logger.html#a805fd5ad375e86a9eb5095fd526391d2">org::apache::log4j::Logger</a>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/functions_func_p.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/functions_func_p.html b/content/api/latest/c++/functions_func_p.html
index 78400c9..95aec8a 100644
--- a/content/api/latest/c++/functions_func_p.html
+++ b/content/api/latest/c++/functions_func_p.html
@@ -302,7 +302,7 @@
 , <a class="el" href="classmesos_1_1internal_1_1StorageLocalResourceProvider.html#ad877f9008c46391e405a64e8e01295aa">mesos::internal::StorageLocalResourceProvider</a>
 </li>
 <li>Principal()
-: <a class="el" href="structprocess_1_1http_1_1authentication_1_1Principal.html#ad371e6931c0d1f6653b9712489c9ca2a">process::http::authentication::Principal</a>
+: <a class="el" href="structprocess_1_1http_1_1authentication_1_1Principal.html#a52640d68809c22e09de880001b8fb519">process::http::authentication::Principal</a>
 </li>
 <li>Priority()
 : <a class="el" href="classrouting_1_1filter_1_1Priority.html#a41a1939341586e23fe3260c5b94fcc59">routing::filter::Priority</a>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/functions_func_r.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/functions_func_r.html b/content/api/latest/c++/functions_func_r.html
index 144cef7..903fb41 100644
--- a/content/api/latest/c++/functions_func_r.html
+++ b/content/api/latest/c++/functions_func_r.html
@@ -285,6 +285,9 @@
 <li>registerFramework()
 : <a class="el" href="classmesos_1_1internal_1_1master_1_1Master.html#a65522e77d9f6b6587b7a72e5651d4093">mesos::internal::master::Master</a>
 </li>
+<li>registerHandle()
+: <a class="el" href="classprocess_1_1windows_1_1EventLoop.html#a832a73998bb3b26b7caa770ceef38827">process::windows::EventLoop</a>
+</li>
 <li>registerSlave()
 : <a class="el" href="classmesos_1_1internal_1_1master_1_1Master.html#a68134d39542a47d999e5002e23c00c23">mesos::internal::master::Master</a>
 </li>
@@ -470,8 +473,8 @@
 <li>reset()
 : <a class="el" href="classmesos_1_1http_1_1authentication_1_1Authenticatee.html#a7d5f4e616a2fc6fefe403155ad45bb83">mesos::http::authentication::Authenticatee</a>
 , <a class="el" href="classprocess_1_1metrics_1_1Counter.html#a17afc8a0d6eb1b014fffcd6b43c2f796">process::metrics::Counter</a>
-, <a class="el" href="classprocess_1_1Owned.html#aa06f3e1ea22cc4f2b8d1421637db7ea4">process::Owned&lt; T &gt;</a>
-, <a class="el" href="classprocess_1_1Shared.html#aa5eeda331799e0c747c0ccb1fed90bc5">process::Shared&lt; T &gt;</a>
+, <a class="el" href="classprocess_1_1Owned.html#a882bec89a9247989a97ee1ec16e23fa8">process::Owned&lt; T &gt;</a>
+, <a class="el" href="classprocess_1_1Shared.html#adb2203cf8bb3a39b42096e3cef47e906">process::Shared&lt; T &gt;</a>
 </li>
 <li>resolve()
 : <a class="el" href="classmesos_1_1SecretResolver.html#afddfaede33e182ecc658c39b99086679">mesos::SecretResolver</a>
@@ -492,7 +495,7 @@
 : <a class="el" href="structmesos_1_1internal_1_1slave_1_1ResourceProvider.html#a7b0c27289426d4a7f1c17a1ac1591969">mesos::internal::slave::ResourceProvider</a>
 </li>
 <li>ResourceProviderManager()
-: <a class="el" href="classmesos_1_1internal_1_1ResourceProviderManager.html#a6f4cf04270959f5030441dff26748f9a">mesos::internal::ResourceProviderManager</a>
+: <a class="el" href="classmesos_1_1internal_1_1ResourceProviderManager.html#aacff21fa24849ba5015f9ad760271a6e">mesos::internal::ResourceProviderManager</a>
 </li>
 <li>resourceRequest()
 : <a class="el" href="classmesos_1_1internal_1_1master_1_1Master.html#a23b9370f456caab5c1c91b367dd2c5b5">mesos::internal::master::Master</a>
@@ -502,14 +505,14 @@
 , <a class="el" href="classmesos_1_1internal_1_1slave_1_1NvidiaGpuAllocator.html#a27fc74b54530efb09a05e3ba29c3b030">mesos::internal::slave::NvidiaGpuAllocator</a>
 </li>
 <li>Resources()
-: <a class="el" href="classmesos_1_1Resources.html#a224d38fb001cffb8f4f2f6e9dc328091">mesos::Resources</a>
-, <a class="el" href="classmesos_1_1v1_1_1Resources.html#afb96448b026e8b78e338cf82bfc47e7a">mesos::v1::Resources</a>
+: <a class="el" href="classmesos_1_1Resources.html#aed60247869278b5545227ddf7ca9536b">mesos::Resources</a>
+, <a class="el" href="classmesos_1_1v1_1_1Resources.html#a46c478b66abd53e0aed44cd82bc6e4d0">mesos::v1::Resources</a>
 </li>
 <li>ResourcesState()
 : <a class="el" href="structmesos_1_1internal_1_1slave_1_1state_1_1ResourcesState.html#a1cd90dfb2e0c8cb14c45a8ce0ffacd5b">mesos::internal::slave::state::ResourcesState</a>
 </li>
 <li>Response()
-: <a class="el" href="structprocess_1_1http_1_1Response.html#ac7ac8132a8d8772335efd5a55d9ebb4f">process::http::Response</a>
+: <a class="el" href="structprocess_1_1http_1_1Response.html#ab52f93de73e86c37fa21484acd5d8e9d">process::http::Response</a>
 </li>
 <li>ResponseDecoder()
 : <a class="el" href="classprocess_1_1ResponseDecoder.html#ab30005070b52416979638e2e76137717">process::ResponseDecoder</a>
@@ -519,7 +522,7 @@
 , <a class="el" href="classmesos_1_1internal_1_1log_1_1Storage.html#a3b37cd2146b4a5691275a314e605b759">mesos::internal::log::Storage</a>
 </li>
 <li>Result()
-: <a class="el" href="classResult.html#a04393dc61e3f8972de5106c63f1ea50d">Result&lt; T &gt;</a>
+: <a class="el" href="classResult.html#a915f263c53ab8b80d85f014ebb817fb6">Result&lt; T &gt;</a>
 </li>
 <li>resume()
 : <a class="el" href="classmesos_1_1internal_1_1checks_1_1Checker.html#aab23bf981d8adefc42831594343f84c0">mesos::internal::checks::Checker</a>
@@ -561,13 +564,13 @@
 , <a class="el" href="classHDFS.html#ae2b281bb34b01190e4e1bd28806c40c6">HDFS</a>
 </li>
 <li>Role()
-: <a class="el" href="structmesos_1_1internal_1_1master_1_1Role.html#accf0d5437cf11da50c674ecd6c19c7ce">mesos::internal::master::Role</a>
+: <a class="el" href="structmesos_1_1internal_1_1master_1_1Role.html#a9e8163dd90e1dd48c752cbfa82660804">mesos::internal::master::Role</a>
 </li>
 <li>Rootfs()
 : <a class="el" href="classmesos_1_1internal_1_1tests_1_1Rootfs.html#a0d1eefd3053932eceda17475fae5f95c">mesos::internal::tests::Rootfs</a>
 </li>
 <li>route()
-: <a class="el" href="classprocess_1_1ProcessBase.html#af0d1a6f8da798dfb2b6ea92550b8c6f5">process::ProcessBase</a>
+: <a class="el" href="classprocess_1_1ProcessBase.html#a37cf86bbf94884960c041e081a34bee4">process::ProcessBase</a>
 </li>
 <li>RouteOptions()
 : <a class="el" href="structprocess_1_1ProcessBase_1_1RouteOptions.html#a9c202f7f06a7cb90499e3365ce338475">process::ProcessBase::RouteOptions</a>
@@ -587,6 +590,7 @@
 , <a class="el" href="classprocess_1_1EventLoop.html#a5e89851f1fe597bce869fdae00ca2ef2">process::EventLoop</a>
 , <a class="el" href="classprocess_1_1http_1_1Server.html#a0667f67908512b63a7f093800f897da1">process::http::Server</a>
 , <a class="el" href="classprocess_1_1internal_1_1Loop.html#a11417f29be6ae721ee9331b0ccbf16e4">process::internal::Loop&lt; Iterate, Body, T, R &gt;</a>
+, <a class="el" href="classprocess_1_1windows_1_1EventLoop.html#a2578b5fad0eb039f995955c798310c86">process::windows::EventLoop</a>
 , <a class="el" href="classReqResProcess.html#aa88a64351fac32c4d142a4119b8fe45e">ReqResProcess&lt; Req, Res &gt;</a>
 </li>
 <li>RunState()

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/functions_func_s.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/functions_func_s.html b/content/api/latest/c++/functions_func_s.html
index e9efa4e..62d248d 100644
--- a/content/api/latest/c++/functions_func_s.html
+++ b/content/api/latest/c++/functions_func_s.html
@@ -460,7 +460,7 @@
 : <a class="el" href="classmesos_1_1internal_1_1tests_1_1ZooKeeperTestServer.html#a5fb4d10971b61af717fe1f30693a88e8">mesos::internal::tests::ZooKeeperTestServer</a>
 </li>
 <li>StartSlave()
-: <a class="el" href="classmesos_1_1internal_1_1tests_1_1MesosTest.html#a16e854bb05b1c84bcab68963df5b8049">mesos::internal::tests::MesosTest</a>
+: <a class="el" href="classmesos_1_1internal_1_1tests_1_1MesosTest.html#a0604f9cee3cee19c701bf31c6d669375">mesos::internal::tests::MesosTest</a>
 </li>
 <li>startup()
 : <a class="el" href="classmesos_1_1internal_1_1tests_1_1MockCSIPlugin.html#aaaf2f5692dca8cc06602ca25f62bbaba">mesos::internal::tests::MockCSIPlugin</a>
@@ -543,6 +543,7 @@
 , <a class="el" href="classprocess_1_1Executor.html#a43a9df131ecc0e5fb3c3015c118407da">process::Executor</a>
 , <a class="el" href="classprocess_1_1http_1_1Server.html#acc7de6562fb0670327e6d2a4e9e6c92c">process::http::Server</a>
 , <a class="el" href="classprocess_1_1metrics_1_1Timer.html#add113450a55bb835137f84701f981fcc">process::metrics::Timer&lt; T &gt;</a>
+, <a class="el" href="classprocess_1_1windows_1_1EventLoop.html#a8a07fc602e31875e6cbcaeac8008f09a">process::windows::EventLoop</a>
 , <a class="el" href="classStopwatch.html#aa0266311b7392b948061bb985b49cff4">Stopwatch</a>
 </li>
 <li>StopMaintenance()
@@ -575,7 +576,7 @@
 : <a class="el" href="structmesos_1_1internal_1_1StatusUpdateManagerProcess_1_1State_1_1StreamState.html#af46361932dd0c00fb873b16659f415a6">mesos::internal::StatusUpdateManagerProcess&lt; IDType, CheckpointType, UpdateType &gt;::State::StreamState</a>
 </li>
 <li>String()
-: <a class="el" href="structJSON_1_1String.html#ab8f3991c166dfd0e7761a8cfc733f4a2">JSON::String</a>
+: <a class="el" href="structJSON_1_1String.html#a7be21f307ea1e322a19a23da1b35afb4">JSON::String</a>
 </li>
 <li>string()
 : <a class="el" href="classJvm.html#ac2c7a5438fbf91870a29720b0a26b0a1">Jvm</a>
@@ -589,7 +590,7 @@
 , <a class="el" href="structstrings_1_1internal_1_1stringify_3_01T_00_01true_01_4.html#a8bbe1c2705c0084a8e57f44524facf1b">strings::internal::stringify&lt; T, true &gt;</a>
 </li>
 <li>StringWriter()
-: <a class="el" href="classJSON_1_1StringWriter.html#a3e5c995b672908c97ff50420224b0185">JSON::StringWriter</a>
+: <a class="el" href="classJSON_1_1StringWriter.html#af2d977fce1c821dd499796870c642f59">JSON::StringWriter</a>
 </li>
 <li>submitScheduler()
 : <a class="el" href="classmesos_1_1internal_1_1master_1_1Master.html#a10612b0c349105c4e3ac1cb8bc48210f">mesos::internal::master::Master</a>
@@ -693,7 +694,7 @@
 : <a class="el" href="classSynchronized.html#a6f1fcefdbc244929d3a3efce643d1a42">Synchronized&lt; T &gt;</a>
 </li>
 <li>sysctl()
-: <a class="el" href="structos_1_1sysctl.html#a86356cee57ee889e8353fc488a5e61a1">os::sysctl</a>
+: <a class="el" href="structos_1_1sysctl.html#aae16684fca2b68f7ae4c998cee5f6f7e">os::sysctl</a>
 </li>
 <li>System()
 : <a class="el" href="classprocess_1_1System.html#ace32519ce64ed719c6a56e5d3f8cce8d">process::System</a>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/functions_func_v.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/functions_func_v.html b/content/api/latest/c++/functions_func_v.html
index bd534b8..48452df 100644
--- a/content/api/latest/c++/functions_func_v.html
+++ b/content/api/latest/c++/functions_func_v.html
@@ -118,7 +118,7 @@
 , <a class="el" href="classHours.html#aabae7296a0be6bb13850eb285302cf77">Hours</a>
 </li>
 <li>Value()
-: <a class="el" href="structJSON_1_1Value.html#a5e0c2536746e22b71bb3be5883b49c78">JSON::Value</a>
+: <a class="el" href="structJSON_1_1Value.html#ab05d7584e0a89ecc8a16d0670d3a84b7">JSON::Value</a>
 </li>
 <li>value()
 : <a class="el" href="classmesos_1_1state_1_1Variable.html#ade8ed8f89ceb5e3ab004e2922a5b35fa">mesos::state::Variable</a>
@@ -126,7 +126,7 @@
 , <a class="el" href="classMilliseconds.html#a958cbe56379726b0b0e1a01afd3204e7">Milliseconds</a>
 , <a class="el" href="classMinutes.html#a83dd956016276afa0f496520470c4a3d">Minutes</a>
 , <a class="el" href="classNanoseconds.html#a260729fd78d4e539dc1b694d8e2fd06b">Nanoseconds</a>
-, <a class="el" href="classprocess_1_1ControlFlow.html#a9fa0744c29d7bffd54f10aea580ba187">process::ControlFlow&lt; T &gt;</a>
+, <a class="el" href="classprocess_1_1ControlFlow.html#a5c21809a15f9efe012e30d1a1cf05c3a">process::ControlFlow&lt; T &gt;</a>
 , <a class="el" href="classprocess_1_1metrics_1_1Counter.html#a5c3ebc2a8264cd0bb05ce6196e290d08">process::metrics::Counter</a>
 , <a class="el" href="classprocess_1_1metrics_1_1Metric.html#a961b445c5d82327db7fa387a818635c7">process::metrics::Metric</a>
 , <a class="el" href="classprocess_1_1metrics_1_1PullGauge.html#a0e2c9dfec36e9061b476846ae8d42e68">process::metrics::PullGauge</a>
@@ -163,12 +163,12 @@
 <li>visit()
 : <a class="el" href="structprocess_1_1DispatchEvent.html#a0e76d6c1283c8e70858d7099be34a5ba">process::DispatchEvent</a>
 , <a class="el" href="structprocess_1_1Event.html#a8756ddd411b61f8f1710e13d82e71037">process::Event</a>
-, <a class="el" href="structprocess_1_1EventVisitor.html#a2c6446217ce0718ea9c7b87e2ca93049">process::EventVisitor</a>
+, <a class="el" href="structprocess_1_1EventVisitor.html#ac5a1087909568bbac1213d32105e1221">process::EventVisitor</a>
 , <a class="el" href="structprocess_1_1ExitedEvent.html#aacae7e724b82f3f33f640b9026e163c8">process::ExitedEvent</a>
 , <a class="el" href="structprocess_1_1HttpEvent.html#aef4ca1f2279a4207d18c695fc6510a10">process::HttpEvent</a>
 , <a class="el" href="structprocess_1_1MessageEvent.html#a075568b289b0075487233208e5b1fe7d">process::MessageEvent</a>
 , <a class="el" href="structprocess_1_1TerminateEvent.html#ae608861d9805a2d34f2533605808b2c1">process::TerminateEvent</a>
-, <a class="el" href="classVariant.html#ac80eba67c08d5e8c1d0bc87bd112dff7">Variant&lt; T, Ts &gt;</a>
+, <a class="el" href="classVariant.html#a60b427988bfa6cfe7dc6bff236f523b5">Variant&lt; T, Ts &gt;</a>
 </li>
 </ul>
 </div><!-- contents -->

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/functions_g.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/functions_g.html b/content/api/latest/c++/functions_g.html
index 528b5dc..9b28c82 100644
--- a/content/api/latest/c++/functions_g.html
+++ b/content/api/latest/c++/functions_g.html
@@ -183,6 +183,9 @@
 <li>get_interpreter()
 : <a class="el" href="clasself_1_1File.html#a2a4f93c734087be5acbd3788dd276f78">elf::File</a>
 </li>
+<li>get_iocp()
+: <a class="el" href="classos_1_1WindowsFD.html#a380eb8d9b7bc0e6b3bfae0e8e9c6bb0f">os::WindowsFD</a>
+</li>
 <li>get_persistent_socket()
 : <a class="el" href="classprocess_1_1SocketManager.html#a11e6bbf80bf1c9b539b3d3e5090675b8">process::SocketManager</a>
 </li>
@@ -209,7 +212,7 @@
 </li>
 <li>getExecutor()
 : <a class="el" href="classmesos_1_1internal_1_1slave_1_1Framework.html#aaa044d0c042d68e59815f1244440560e">mesos::internal::slave::Framework</a>
-, <a class="el" href="classmesos_1_1internal_1_1slave_1_1Slave.html#ae5cbf7aef363a45048acfca39fbb4c89">mesos::internal::slave::Slave</a>
+, <a class="el" href="classmesos_1_1internal_1_1slave_1_1Slave.html#a68f5a180b0bd905d22cdcea2cd1d8196">mesos::internal::slave::Slave</a>
 </li>
 <li>getExecutorIdForPendingTask()
 : <a class="el" href="classmesos_1_1internal_1_1slave_1_1Framework.html#a2fff4fc7fabe8cd06c9fca35f187b82b">mesos::internal::slave::Framework</a>
@@ -350,14 +353,14 @@
 , <a class="el" href="structos_1_1Process.html#a41f9befab165fd224ba2d829e7c35ba6">os::Process</a>
 </li>
 <li>Group()
-: <a class="el" href="classzookeeper_1_1Group.html#a9c43b1e1dbd2a41f25ed5e14bd327135">zookeeper::Group</a>
+: <a class="el" href="classzookeeper_1_1Group.html#adfdc9e049635868b52b336b5e6e1504c">zookeeper::Group</a>
 </li>
 <li>GroupProcess
 : <a class="el" href="structzookeeper_1_1Group_1_1Membership.html#af98627d242b828f8f25413b5f1504aa2">zookeeper::Group::Membership</a>
 , <a class="el" href="classzookeeper_1_1GroupProcess.html#acecaf6cd579a8462517a0986d7de75b7">zookeeper::GroupProcess</a>
 </li>
 <li>GzipError()
-: <a class="el" href="classgzip_1_1internal_1_1GzipError.html#a329eac2b003b8e0d17ebe4379107d943">gzip::internal::GzipError</a>
+: <a class="el" href="classgzip_1_1internal_1_1GzipError.html#ae37852986117d5d162983538ad51dd33">gzip::internal::GzipError</a>
 </li>
 </ul>
 </div><!-- contents -->

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/functions_l.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/functions_l.html b/content/api/latest/c++/functions_l.html
index 231733f..1c79ccb 100644
--- a/content/api/latest/c++/functions_l.html
+++ b/content/api/latest/c++/functions_l.html
@@ -148,6 +148,9 @@
 , <a class="el" href="classmesos_1_1MesosSchedulerDriver.html#aeecb18557c3d94f8c8cc46513f770945">mesos::MesosSchedulerDriver</a>
 , <a class="el" href="classmesos_1_1SchedulerDriver.html#a63257236eb2943883cf4a88ab2abb851">mesos::SchedulerDriver</a>
 </li>
+<li>launchTimer()
+: <a class="el" href="classprocess_1_1windows_1_1EventLoop.html#a006cb0c8efb7aaadadf0a692d9c2659a">process::windows::EventLoop</a>
+</li>
 <li>layers
 : <a class="el" href="structmesos_1_1internal_1_1slave_1_1ImageInfo.html#a00b3bbd185c4191172c69aca4202529a">mesos::internal::slave::ImageInfo</a>
 </li>
@@ -252,7 +255,7 @@
 : <a class="el" href="classprocess_1_1Mutex.html#a2983b29453c623f58b843d924598793b">process::Mutex</a>
 </li>
 <li>Log()
-: <a class="el" href="classmesos_1_1log_1_1Log.html#aac8f9701de39bc94960487c79d5a3221">mesos::log::Log</a>
+: <a class="el" href="classmesos_1_1log_1_1Log.html#a4d1b102f5ce52ebee204cec33f77f04e">mesos::log::Log</a>
 , <a class="el" href="classmesos_1_1log_1_1Log_1_1Position.html#acd1b2a0733103b7bbeb76b467ea85446">mesos::log::Log::Position</a>
 </li>
 <li>log_auto_initialize
@@ -280,7 +283,7 @@
 : <a class="el" href="classmesos_1_1internal_1_1logging_1_1Flags.html#a9525130c5e3e621116643ade19b30fda">mesos::internal::logging::Flags</a>
 </li>
 <li>LogProcess()
-: <a class="el" href="classmesos_1_1internal_1_1log_1_1LogProcess.html#a04df6a42d4dd6b75bb96ea8d38dcf09b">mesos::internal::log::LogProcess</a>
+: <a class="el" href="classmesos_1_1internal_1_1log_1_1LogProcess.html#abf56bc6edfd50d56f7cd4c7ee100e471">mesos::internal::log::LogProcess</a>
 </li>
 <li>LogReaderProcess
 : <a class="el" href="classmesos_1_1internal_1_1log_1_1LogProcess.html#a11dc02f3ea3de52571a90c60287ed344">mesos::internal::log::LogProcess</a>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/functions_m.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/functions_m.html b/content/api/latest/c++/functions_m.html
index 2878272..ad00385 100644
--- a/content/api/latest/c++/functions_m.html
+++ b/content/api/latest/c++/functions_m.html
@@ -578,7 +578,7 @@
 : <a class="el" href="classmesos_1_1internal_1_1tests_1_1MockDocker.html#a7cb4dbff2995fd68670da9702246672b">mesos::internal::tests::MockDocker</a>
 </li>
 <li>MockDockerContainerizer()
-: <a class="el" href="classmesos_1_1internal_1_1tests_1_1MockDockerContainerizer.html#af3b44a7786c0ba2f701cf5653a79905f">mesos::internal::tests::MockDockerContainerizer</a>
+: <a class="el" href="classmesos_1_1internal_1_1tests_1_1MockDockerContainerizer.html#a66795eec472134c5b433d0c942746eb7">mesos::internal::tests::MockDockerContainerizer</a>
 </li>
 <li>MockDockerContainerizerProcess()
 : <a class="el" href="classmesos_1_1internal_1_1tests_1_1MockDockerContainerizerProcess.html#aa985102c6391bb39798546b23f5c1c84">mesos::internal::tests::MockDockerContainerizerProcess</a>
@@ -672,10 +672,10 @@
 : <a class="el" href="classDuration.html#a05ddd6a9f21b82dba6313f81418f53d2">Duration</a>
 </li>
 <li>multihashmap()
-: <a class="el" href="classmultihashmap.html#a9b179e77c03fb85cfe4e59cc6cf0bf95">multihashmap&lt; Key, Value, Hash, Equal &gt;</a>
+: <a class="el" href="classmultihashmap.html#abf9594bf83c80160e06af9f847285116">multihashmap&lt; Key, Value, Hash, Equal &gt;</a>
 </li>
 <li>Multimap()
-: <a class="el" href="classMultimap.html#af4c45434eb219747fb536a7b7ff4fde1">Multimap&lt; K, V &gt;</a>
+: <a class="el" href="classMultimap.html#a13d4bd4285946600c1af81e5be4b09ad">Multimap&lt; K, V &gt;</a>
 </li>
 <li>MULTIPLE_CHOICES
 : <a class="el" href="structprocess_1_1http_1_1Status.html#a8feae2af2cdeaf0c0ddbd5f80c9f5ff5">process::http::Status</a>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/functions_n.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/functions_n.html b/content/api/latest/c++/functions_n.html
index 21d4368..4ffb2b4 100644
--- a/content/api/latest/c++/functions_n.html
+++ b/content/api/latest/c++/functions_n.html
@@ -278,7 +278,7 @@
 : <a class="el" href="classrouting_1_1filter_1_1U32Handle.html#a905f16da1073dbbced85293a1ed2a39f">routing::filter::U32Handle</a>
 </li>
 <li>NodeCapabilities()
-: <a class="el" href="structmesos_1_1csi_1_1v0_1_1NodeCapabilities.html#ab7697bc98fc12e7bffec0895b7c68244">mesos::csi::v0::NodeCapabilities</a>
+: <a class="el" href="structmesos_1_1csi_1_1v0_1_1NodeCapabilities.html#a589d1a689c231e33f03861797c5bdc41">mesos::csi::v0::NodeCapabilities</a>
 </li>
 <li>nodename
 : <a class="el" href="structos_1_1UTSInfo.html#a03dd23e9031a68b633dc6e405e32bab0">os::UTSInfo</a>
@@ -323,16 +323,16 @@
 : <a class="el" href="structprocess_1_1http_1_1NotAcceptable.html#a7aa1994f2bf2049346177a29ec75b567">process::http::NotAcceptable</a>
 </li>
 <li>NotFound()
-: <a class="el" href="structprocess_1_1http_1_1NotFound.html#afd150061e7afc57ec91516045b09c703">process::http::NotFound</a>
+: <a class="el" href="structprocess_1_1http_1_1NotFound.html#a45432f89f82b758deed0cd6a7994c1fb">process::http::NotFound</a>
 </li>
 <li>notify()
 : <a class="el" href="classprocess_1_1internal_1_1ReaperProcess.html#a9ed3a26894422f571a73edc3a2900e02">process::internal::ReaperProcess</a>
 </li>
 <li>NotImplemented()
-: <a class="el" href="structprocess_1_1http_1_1NotImplemented.html#ac786e0b6d4f5bd8ad74690791bd1c423">process::http::NotImplemented</a>
+: <a class="el" href="structprocess_1_1http_1_1NotImplemented.html#a6ef0e57cfbd6d82ca46977181b1dc19c">process::http::NotImplemented</a>
 </li>
 <li>now()
-: <a class="el" href="classprocess_1_1Clock.html#aeb3feabcc37d4903757ea2a2160f2e32">process::Clock</a>
+: <a class="el" href="classprocess_1_1Clock.html#a24ed3f746bb6b3ddb1c52dce5e0ecd38">process::Clock</a>
 </li>
 <li>ns()
 : <a class="el" href="classDuration.html#aa3703196ba3797f7833a8348ccb5449a">Duration</a>
@@ -350,10 +350,10 @@
 : <a class="el" href="structproc_1_1ProcessStatus.html#ae1165a6a5e77977d3d0ee8f081c8b4ca">proc::ProcessStatus</a>
 </li>
 <li>Number()
-: <a class="el" href="structJSON_1_1Number.html#ae2408d078068d8ac8e310d7eba6fced6">JSON::Number</a>
+: <a class="el" href="structJSON_1_1Number.html#a64361b5b1c34e311ab9407cbc6ccb136">JSON::Number</a>
 </li>
 <li>NumberWriter()
-: <a class="el" href="classJSON_1_1NumberWriter.html#a88564fb4ce2096eb336d68b854a747d2">JSON::NumberWriter</a>
+: <a class="el" href="classJSON_1_1NumberWriter.html#ac248fb67aaa7f2bdeeccfd9cbd6b42e7">JSON::NumberWriter</a>
 </li>
 <li>NvidiaGpuAllocator()
 : <a class="el" href="classmesos_1_1internal_1_1slave_1_1NvidiaGpuAllocator.html#ae719bef3975380c61e888f73ae801d8f">mesos::internal::slave::NvidiaGpuAllocator</a>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/functions_o.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/functions_o.html b/content/api/latest/c++/functions_o.html
index dfaeecc..63b2557 100644
--- a/content/api/latest/c++/functions_o.html
+++ b/content/api/latest/c++/functions_o.html
@@ -94,14 +94,13 @@
 <li>Object()
 : <a class="el" href="structJSON_1_1Object.html#a79dba4ce034071eeef6a807d8d574cea">JSON::Object</a>
 , <a class="el" href="classJvm.html#a0720b5f434e636e22a3ed34f847eec57">Jvm</a>
-, <a class="el" href="classJvm_1_1Object.html#abe0b95c285e9206375dfeb80517a2a69">Jvm::Object</a>
 </li>
 <li>object
 : <a class="el" href="classJvm_1_1Object.html#a3c338f2867b29b7868472a714014ca76">Jvm::Object</a>
 </li>
 <li>Object()
 : <a class="el" href="classJvm_1_1Object.html#ace2b910d3838c7ad2ed5f67d872d9bd9">Jvm::Object</a>
-, <a class="el" href="structmesos_1_1ObjectApprover_1_1Object.html#a8e939da2f28217b77a2347423c2cfe8b">mesos::ObjectApprover::Object</a>
+, <a class="el" href="structmesos_1_1ObjectApprover_1_1Object.html#a03e6baf0690ffd26ad3bc4929b70d967">mesos::ObjectApprover::Object</a>
 </li>
 <li>ObjectWriter()
 : <a class="el" href="classJSON_1_1ObjectWriter.html#a028782ad1c192574b6f7b4de694af1f8">JSON::ObjectWriter</a>
@@ -734,7 +733,7 @@
 : <a class="el" href="classprocess_1_1Shared.html#a84986b276de9b6d1b525c64d944c6797">process::Shared&lt; T &gt;</a>
 </li>
 <li>Owned()
-: <a class="el" href="classprocess_1_1Owned.html#ae4c94696ed1b07401493f1bef8d31981">process::Owned&lt; T &gt;</a>
+: <a class="el" href="classprocess_1_1Owned.html#a22a12b3bd098343628ecf122b5b09d9e">process::Owned&lt; T &gt;</a>
 </li>
 <li>OWNED
 : <a class="el" href="classprocess_1_1Subprocess_1_1IO.html#adb9433454d727de27b2440f729d19990ad3f73761156a6e75873cf903a0d62994">process::Subprocess::IO</a>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/functions_p.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/functions_p.html b/content/api/latest/c++/functions_p.html
index ea739e2..667922e 100644
--- a/content/api/latest/c++/functions_p.html
+++ b/content/api/latest/c++/functions_p.html
@@ -476,7 +476,7 @@
 , <a class="el" href="structprocess_1_1http_1_1authentication_1_1AuthenticationResult.html#a999ea72bc42ca09641699398e612540a">process::http::authentication::AuthenticationResult</a>
 </li>
 <li>Principal()
-: <a class="el" href="structprocess_1_1http_1_1authentication_1_1Principal.html#ad371e6931c0d1f6653b9712489c9ca2a">process::http::authentication::Principal</a>
+: <a class="el" href="structprocess_1_1http_1_1authentication_1_1Principal.html#a52640d68809c22e09de880001b8fb519">process::http::authentication::Principal</a>
 </li>
 <li>print_name
 : <a class="el" href="structinternal_1_1windows_1_1SymbolicLink.html#a7ca6332f2c62622fdf6a8340989fb837">internal::windows::SymbolicLink</a>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/functions_r.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/functions_r.html b/content/api/latest/c++/functions_r.html
index a0b291d..9792b00 100644
--- a/content/api/latest/c++/functions_r.html
+++ b/content/api/latest/c++/functions_r.html
@@ -357,6 +357,9 @@
 <li>registerFramework()
 : <a class="el" href="classmesos_1_1internal_1_1master_1_1Master.html#a65522e77d9f6b6587b7a72e5651d4093">mesos::internal::master::Master</a>
 </li>
+<li>registerHandle()
+: <a class="el" href="classprocess_1_1windows_1_1EventLoop.html#a832a73998bb3b26b7caa770ceef38827">process::windows::EventLoop</a>
+</li>
 <li>REGISTERING
 : <a class="el" href="classmesos_1_1internal_1_1slave_1_1Executor.html#a3b2abbbd9f9e9ca5c08b75329ac426c0a47f27688eed5f4b7b8fae1fe60e35d0d">mesos::internal::slave::Executor</a>
 </li>
@@ -648,7 +651,7 @@
 : <a class="el" href="classmesos_1_1http_1_1authentication_1_1Authenticatee.html#a7d5f4e616a2fc6fefe403155ad45bb83">mesos::http::authentication::Authenticatee</a>
 , <a class="el" href="classprocess_1_1metrics_1_1Counter.html#a17afc8a0d6eb1b014fffcd6b43c2f796">process::metrics::Counter</a>
 , <a class="el" href="classprocess_1_1Owned.html#a882bec89a9247989a97ee1ec16e23fa8">process::Owned&lt; T &gt;</a>
-, <a class="el" href="classprocess_1_1Shared.html#adb2203cf8bb3a39b42096e3cef47e906">process::Shared&lt; T &gt;</a>
+, <a class="el" href="classprocess_1_1Shared.html#aa5eeda331799e0c747c0ccb1fed90bc5">process::Shared&lt; T &gt;</a>
 </li>
 <li>RESET_CONTENT
 : <a class="el" href="structprocess_1_1http_1_1Status.html#adf7f64f0d95bae2b22dde9b5db8e892c">process::http::Status</a>
@@ -690,7 +693,7 @@
 : <a class="el" href="structmesos_1_1internal_1_1ResourceProviderMessage_1_1Disconnect.html#a08152b6d62577e6cf649a33ec85c1df4">mesos::internal::ResourceProviderMessage::Disconnect</a>
 </li>
 <li>ResourceProviderManager()
-: <a class="el" href="classmesos_1_1internal_1_1ResourceProviderManager.html#aacff21fa24849ba5015f9ad760271a6e">mesos::internal::ResourceProviderManager</a>
+: <a class="el" href="classmesos_1_1internal_1_1ResourceProviderManager.html#a6f4cf04270959f5030441dff26748f9a">mesos::internal::ResourceProviderManager</a>
 </li>
 <li>resourceProviders
 : <a class="el" href="structmesos_1_1internal_1_1master_1_1Slave.html#ac69e834c9f86c1628859459e4e5255b5">mesos::internal::master::Slave</a>
@@ -715,7 +718,7 @@
 : <a class="el" href="structmesos_1_1UnavailableResources.html#a2b3f0db5b5a05f3fa0bc1f8abfb68331">mesos::UnavailableResources</a>
 </li>
 <li>Resources()
-: <a class="el" href="classmesos_1_1v1_1_1Resources.html#a2532379d077c61b1addcd6aa47e61ad0">mesos::v1::Resources</a>
+: <a class="el" href="classmesos_1_1v1_1_1Resources.html#afb96448b026e8b78e338cf82bfc47e7a">mesos::v1::Resources</a>
 </li>
 <li>resources_offered_or_allocated
 : <a class="el" href="structmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1Metrics.html#a35bc11894e4074d12b05210ed5d3205b">mesos::internal::master::allocator::internal::Metrics</a>
@@ -755,7 +758,7 @@
 , <a class="el" href="structmesos_1_1internal_1_1slave_1_1ResourceProvider.html#aff76550b79d71087708ccbb25f9b3a5a">mesos::internal::slave::ResourceProvider</a>
 </li>
 <li>Response()
-: <a class="el" href="structprocess_1_1http_1_1Response.html#ab52f93de73e86c37fa21484acd5d8e9d">process::http::Response</a>
+: <a class="el" href="structprocess_1_1http_1_1Response.html#ac7ac8132a8d8772335efd5a55d9ebb4f">process::http::Response</a>
 </li>
 <li>response
 : <a class="el" href="structprocess_1_1HttpEvent.html#ac3cab3251b6f6339db32842bcd37bec4">process::HttpEvent</a>
@@ -885,11 +888,13 @@
 </li>
 <li>role
 : <a class="el" href="classmesos_1_1internal_1_1examples_1_1Flags.html#af84b1942374e87f678a3950ccc136980">mesos::internal::examples::Flags</a>
-, <a class="el" href="structmesos_1_1internal_1_1master_1_1Role.html#ae229ba3fea46929a5a6f5819e3c318cc">mesos::internal::master::Role</a>
 </li>
 <li>Role()
 : <a class="el" href="structmesos_1_1internal_1_1master_1_1Role.html#accf0d5437cf11da50c674ecd6c19c7ce">mesos::internal::master::Role</a>
 </li>
+<li>role
+: <a class="el" href="structmesos_1_1internal_1_1master_1_1Role.html#ae229ba3fea46929a5a6f5819e3c318cc">mesos::internal::master::Role</a>
+</li>
 <li>role_sorter
 : <a class="el" href="classmesos_1_1internal_1_1master_1_1Flags.html#a0fd5f13197bb357ab0cc4f10144f2a58">mesos::internal::master::Flags</a>
 </li>
@@ -944,6 +949,7 @@
 , <a class="el" href="classprocess_1_1EventLoop.html#a5e89851f1fe597bce869fdae00ca2ef2">process::EventLoop</a>
 , <a class="el" href="classprocess_1_1http_1_1Server.html#a0667f67908512b63a7f093800f897da1">process::http::Server</a>
 , <a class="el" href="classprocess_1_1internal_1_1Loop.html#a11417f29be6ae721ee9331b0ccbf16e4">process::internal::Loop&lt; Iterate, Body, T, R &gt;</a>
+, <a class="el" href="classprocess_1_1windows_1_1EventLoop.html#a2578b5fad0eb039f995955c798310c86">process::windows::EventLoop</a>
 , <a class="el" href="classReqResProcess.html#aa88a64351fac32c4d142a4119b8fe45e">ReqResProcess&lt; Req, Res &gt;</a>
 </li>
 <li>RUNNING

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/functions_rela.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/functions_rela.html b/content/api/latest/c++/functions_rela.html
index 100d800..ea822b8 100644
--- a/content/api/latest/c++/functions_rela.html
+++ b/content/api/latest/c++/functions_rela.html
@@ -128,6 +128,9 @@
 : <a class="el" href="structprocess_1_1__Deferred.html#a06d91a9cc0bae33964a4d5b578704bec">process::_Deferred&lt; F &gt;</a>
 , <a class="el" href="structprocess_1_1Deferred.html#aee12191d24dd6ff90f5b1c1fb10552c6">process::Deferred&lt; F &gt;</a>
 </li>
+<li>dup
+: <a class="el" href="classos_1_1WindowsFD.html#ae8d4fd38b52ea9f38605f46195fd040b">os::WindowsFD</a>
+</li>
 </ul>
 
 


[32/50] mesos-site git commit: Updated the website built from mesos SHA: 7c9c72d.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/include_2mesos_2slave_2containerizer_8hpp.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/include_2mesos_2slave_2containerizer_8hpp.html b/content/api/latest/c++/include_2mesos_2slave_2containerizer_8hpp.html
index 94534cc..00d2ae3 100644
--- a/content/api/latest/c++/include_2mesos_2slave_2containerizer_8hpp.html
+++ b/content/api/latest/c++/include_2mesos_2slave_2containerizer_8hpp.html
@@ -57,7 +57,7 @@
 <div class="contents">
 <div class="textblock"><code>#include &lt;string&gt;</code><br />
 <code>#include &lt;<a class="el" href="3rdparty_2libprocess_2include_2process_2shared_8hpp_source.html">process/shared.hpp</a>&gt;</code><br />
-<code>#include &lt;<a class="el" href="subprocess_8hpp_source.html">process/subprocess.hpp</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="include_2process_2subprocess_8hpp_source.html">process/subprocess.hpp</a>&gt;</code><br />
 <code>#include &lt;<a class="el" href="option_8hpp_source.html">stout/option.hpp</a>&gt;</code><br />
 <code>#include &lt;mesos/slave/containerizer.pb.h&gt;</code><br />
 </div>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/include_2mesos_2slave_2containerizer_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/include_2mesos_2slave_2containerizer_8hpp_source.html b/content/api/latest/c++/include_2mesos_2slave_2containerizer_8hpp_source.html
index f34ca21..afecabe 100644
--- a/content/api/latest/c++/include_2mesos_2slave_2containerizer_8hpp_source.html
+++ b/content/api/latest/c++/include_2mesos_2slave_2containerizer_8hpp_source.html
@@ -52,10 +52,10 @@
 <div class="title">containerizer.hpp</div>  </div>
 </div><!--header-->
 <div class="contents">
-<a href="include_2mesos_2slave_2containerizer_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>&#160;<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>&#160;<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>&#160;<span class="comment">// distributed with this work for additional information</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<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>&#160;<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>&#160;<span class="comment">// &quot;License&quot;); you may not use this file except in compliance</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<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>&#160;<span
  class="comment">// distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<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>&#160;<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>&#160;<span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;</div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="preprocessor">#ifndef __MESOS_SLAVE_CONTAINERIZER_HPP__</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="preprocessor">#define __MESOS_SLAVE_CO
 NTAINERIZER_HPP__</span></div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;</div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="3rdparty_2libprocess_2include_2process_2shared_8hpp.html">process/shared.hpp</a>&gt;</span></div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="subprocess_8hpp.html">process/subprocess.hpp</a>&gt;</span></div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;</div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="preprocessor">#include &lt;<a class="code
 " href="option_8hpp.html">stout/option.hpp</a>&gt;</span></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>&#160;<span class="comment">// ONLY USEFUL AFTER RUNNING PROTOC.</span></div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="preprocessor">#include &lt;mesos/slave/containerizer.pb.h&gt;</span></div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;</div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacemesos.html">mesos</a> {</div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="keyword">namespace </span>slave {</div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;</div><div class="line"><a name="l00037"></a><span class="lineno"><
 a class="line" href="structmesos_1_1slave_1_1ContainerIO.html">   37</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structmesos_1_1slave_1_1ContainerIO.html">ContainerIO</a></div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;{</div><div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="classmesos_1_1slave_1_1ContainerIO_1_1IO.html">   52</a></span>&#160;  <span class="keyword">class </span><a class="code" href="classmesos_1_1slave_1_1ContainerIO_1_1IO.html">IO</a></div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;  {</div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;  <span class="keyword">public</span>:</div><div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="classmesos_1_1slave_1_1ContainerIO_1_1IO.html#a7c8f14a0efec6a09b957d5d24b8f9e99">   55</a></span>&#160;    <span class="keyword">enum class</span>
  <a class="code" href="classmesos_1_1slave_1_1ContainerIO_1_1IO.html#a7c8f14a0efec6a09b957d5d24b8f9e99">Type</a></div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;    {</div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;      <a class="code" href="classmesos_1_1slave_1_1ContainerIO_1_1IO.html#a7c8f14a0efec6a09b957d5d24b8f9e99aa8fa6b553b655657f943cb8fd85859d1">FD</a>,</div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;      <a class="code" href="classmesos_1_1slave_1_1ContainerIO_1_1IO.html#a7c8f14a0efec6a09b957d5d24b8f9e99a5ffb5f0d0de78321df46fc7c93ca64a3">PATH</a></div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;    };</div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;</div><div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="classmesos_1_1slave_1_1ContainerIO_1_1IO.html#a341f45297ccb682a0c97
 e7f164d03a55">   61</a></span>&#160;    <span class="keyword">static</span> <a class="code" href="classmesos_1_1slave_1_1ContainerIO_1_1IO.html">IO</a> <a class="code" href="classmesos_1_1slave_1_1ContainerIO_1_1IO.html#a341f45297ccb682a0c97e7f164d03a55">PATH</a>(<span class="keyword">const</span> std::string&amp; <a class="code" href="namespacepath.html">path</a>)</div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;    {</div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;      <span class="keywordflow">return</span> <a class="code" href="classmesos_1_1slave_1_1ContainerIO_1_1IO.html">IO</a>(<a class="code" href="classmesos_1_1slave_1_1ContainerIO_1_1IO.html#a7c8f14a0efec6a09b957d5d24b8f9e99a5ffb5f0d0de78321df46fc7c93ca64a3">Type::PATH</a>, path);</div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;    }</div><div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;</di
 v><div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="classmesos_1_1slave_1_1ContainerIO_1_1IO.html#a96bd292fdd5238a2c080e5f2d1a1535c">   66</a></span>&#160;    <span class="keyword">static</span> <a class="code" href="classmesos_1_1slave_1_1ContainerIO_1_1IO.html">IO</a> <a class="code" href="classmesos_1_1slave_1_1ContainerIO_1_1IO.html#a96bd292fdd5238a2c080e5f2d1a1535c">FD</a>(<a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> fd, <span class="keywordtype">bool</span> closeOnDestruction = <span class="keyword">true</span>)</div><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;    {</div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;      <span class="keywordflow">return</span> <a class="code" href="classmesos_1_1slave_1_1ContainerIO_1_1IO.html">IO</a>(<a class="code" href="classmesos_1_1slave_1_1ContainerIO_1_1IO.html#a7c8f14a0efec6a09b957d5d24b8f9e99aa8fa
 6b553b655657f943cb8fd85859d1">Type::FD</a>, fd, closeOnDestruction);</div><div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;    }</div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;</div><div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="classmesos_1_1slave_1_1ContainerIO_1_1IO.html#a9385d497de23bc65844d6701627ab5b0">   71</a></span>&#160;    <span class="keyword">operator</span> <a class="code" href="classprocess_1_1Subprocess_1_1IO.html">process::Subprocess::IO</a> ()<span class="keyword"> const</span></div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;      <span class="keywordflow">switch</span> (type_) {</div><div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;        <span class="keywordflow">case</span> <a class="
 code" href="classmesos_1_1slave_1_1ContainerIO_1_1IO.html#a7c8f14a0efec6a09b957d5d24b8f9e99aa8fa6b553b655657f943cb8fd85859d1">Type::FD</a>:</div><div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;          <span class="keywordflow">return</span> <a class="code" href="classprocess_1_1Subprocess.html#aaa6e1b76ef54ed6db34d595811122ce0">process::Subprocess::FD</a>(*fd_);</div><div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;        <span class="keywordflow">case</span> <a class="code" href="classmesos_1_1slave_1_1ContainerIO_1_1IO.html#a7c8f14a0efec6a09b957d5d24b8f9e99a5ffb5f0d0de78321df46fc7c93ca64a3">Type::PATH</a>:</div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;          <span class="keywordflow">return</span> <a class="code" href="classprocess_1_1Subprocess.html#a54793e9c516257d68776f63f0872c3c7">process::Subprocess::PATH</a>(path_.get());</div><div class="line"><a name="l00078"></a><span cla
 ss="lineno">   78</span>&#160;        <span class="keywordflow">default</span>:</div><div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;          <a class="code" href="unreachable_8hpp.html#a0bc63b24b654ca433be7b97a3edde132">UNREACHABLE</a>();</div><div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;      }</div><div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;    }</div><div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;</div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;  <span class="keyword">private</span>:</div><div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;    <span class="comment">// A simple abstraction to wrap an FD and (optionally) close it</span></div><div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;    <span class="comment">// on destruction. We know that we never copy inst
 ances of this</span></div><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;    <span class="comment">// class once they are instantiated, so it&#39;s OK to call</span></div><div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;    <span class="comment">// `close()` in the destructor since only one reference will</span></div><div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;    <span class="comment">// ever exist to it.</span></div><div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;    <span class="keyword">class </span>FDWrapper</div><div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;    {</div><div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;    <span class="keyword">public</span>:</div><div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;      FDWrapper(<a class="code" href="int__fd_8hpp.html#ae
 a4dbda01c90455f158ffa9b924c2f07">int_fd</a> _fd, <span class="keywordtype">bool</span> _closeOnDestruction)</div><div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;        : fd(_fd), closeOnDestruction(_closeOnDestruction) {}</div><div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;</div><div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;      ~FDWrapper() {</div><div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;        CHECK(fd &gt;= 0);</div><div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;        <span class="keywordflow">if</span> (closeOnDestruction) {</div><div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;          close(fd);</div><div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;        }</div><div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;      }</div><di
 v class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;</div><div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;      <span class="keyword">operator</span> <a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> fd; }</div><div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;</div><div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;    <span class="keyword">private</span>:</div><div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;      FDWrapper(<span class="keyword">const</span> FDWrapper&amp; fd) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;</div><div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;      <a class="code" href="int__fd_8hpp.html#aea4dbda0
 1c90455f158ffa9b924c2f07">int_fd</a> fd;</div><div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;      <span class="keywordtype">bool</span> closeOnDestruction;</div><div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;    };</div><div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;</div><div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;    <a class="code" href="classmesos_1_1slave_1_1ContainerIO_1_1IO.html">IO</a>(<a class="code" href="classmesos_1_1slave_1_1ContainerIO_1_1IO.html#a7c8f14a0efec6a09b957d5d24b8f9e99">Type</a> _type, <a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> _fd, <span class="keywordtype">bool</span> closeOnDestruction)</div><div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;      : type_(_type),</div><div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;        fd_(<spa
 n class="keyword">new</span> FDWrapper(_fd, closeOnDestruction)),</div><div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;        path_(<a class="code" href="structNone.html">None</a>()) {}</div><div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;</div><div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;    <a class="code" href="classmesos_1_1slave_1_1ContainerIO_1_1IO.html">IO</a>(<a class="code" href="classmesos_1_1slave_1_1ContainerIO_1_1IO.html#a7c8f14a0efec6a09b957d5d24b8f9e99">Type</a> _type, <span class="keyword">const</span> std::string&amp; _path)</div><div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;      : type_(_type),</div><div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;        fd_(),</div><div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;        path_(_path) {}</div><div class="line"><a name="l00120"></a><
 span class="lineno">  120</span>&#160;</div><div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;    <a class="code" href="classmesos_1_1slave_1_1ContainerIO_1_1IO.html#a7c8f14a0efec6a09b957d5d24b8f9e99">Type</a> type_;</div><div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;    <a class="code" href="classprocess_1_1Shared.html">process::Shared&lt;FDWrapper&gt;</a> fd_;</div><div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;    <a class="code" href="classOption.html">Option&lt;std::string&gt;</a> path_;</div><div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;  };</div><div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;</div><div class="line"><a name="l00130"></a><span class="lineno"><a class="line" href="structmesos_1_1slave_1_1ContainerIO.html#a71d1190a036c7e3d2af3fcee95e8d2c8">  130</a></span>&#160;  <a class="code" href="classmesos_1_1slave_1_1Cont
 ainerIO_1_1IO.html">IO</a> <a class="code" href="structmesos_1_1slave_1_1ContainerIO.html#a71d1190a036c7e3d2af3fcee95e8d2c8">in</a> = <a class="code" href="classmesos_1_1slave_1_1ContainerIO_1_1IO.html#a96bd292fdd5238a2c080e5f2d1a1535c">IO::FD</a>(<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#afcf80a6d91178952d107ad00b165752b">STDIN_FILENO</a>, <span class="keyword">false</span>);</div><div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;</div><div class="line"><a name="l00136"></a><span class="lineno"><a class="line" href="structmesos_1_1slave_1_1ContainerIO.html#a0de456b091225ae112d9799652d990ed">  136</a></span>&#160;  <a class="code" href="classmesos_1_1slave_1_1ContainerIO_1_1IO.html">IO</a> <a class="code" href="structmesos_1_1slave_1_1ContainerIO.html#a0de456b091225ae112d9799652d990ed">out</a> = <a class="code" href="classmesos_1_1slave_1_1ContainerIO_1_1IO.html#a96bd292fdd5238a2c080e5f2d1a1535c">IO::FD</a>(<a class="code" h
 ref="3rdparty_2stout_2include_2stout_2windows_8hpp.html#abd165ee6474b5b75bf075842fff13a04">STDOUT_FILENO</a>, <span class="keyword">false</span>);</div><div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;</div><div class="line"><a name="l00141"></a><span class="lineno"><a class="line" href="structmesos_1_1slave_1_1ContainerIO.html#a3cbd98f5b391bb77ea645fdeafb605cf">  141</a></span>&#160;  <a class="code" href="classmesos_1_1slave_1_1ContainerIO_1_1IO.html">IO</a> <a class="code" href="structmesos_1_1slave_1_1ContainerIO.html#a3cbd98f5b391bb77ea645fdeafb605cf">err</a> = <a class="code" href="classmesos_1_1slave_1_1ContainerIO_1_1IO.html#a96bd292fdd5238a2c080e5f2d1a1535c">IO::FD</a>(<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ae2fe1725bb5e9823d089c46b9ed5266e">STDERR_FILENO</a>, <span class="keyword">false</span>);</div><div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;};</div><div class="line"><a name=
 "l00143"></a><span class="lineno">  143</span>&#160;</div><div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;} <span class="comment">// namespace slave {</span></div><div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;} <span class="comment">// namespace mesos {</span></div><div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;</div><div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;<span class="preprocessor">#endif // __MESOS_SLAVE_CONTAINERIZER_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>
+<a href="include_2mesos_2slave_2containerizer_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>&#160;<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>&#160;<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>&#160;<span class="comment">// distributed with this work for additional information</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<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>&#160;<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>&#160;<span class="comment">// &quot;License&quot;); you may not use this file except in compliance</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<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>&#160;<span
  class="comment">// distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<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>&#160;<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>&#160;<span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;</div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="preprocessor">#ifndef __MESOS_SLAVE_CONTAINERIZER_HPP__</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="preprocessor">#define __MESOS_SLAVE_CO
 NTAINERIZER_HPP__</span></div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;</div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="3rdparty_2libprocess_2include_2process_2shared_8hpp.html">process/shared.hpp</a>&gt;</span></div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="include_2process_2subprocess_8hpp.html">process/subprocess.hpp</a>&gt;</span></div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;</div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="preprocessor">#include 
 &lt;<a class="code" href="option_8hpp.html">stout/option.hpp</a>&gt;</span></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>&#160;<span class="comment">// ONLY USEFUL AFTER RUNNING PROTOC.</span></div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="preprocessor">#include &lt;mesos/slave/containerizer.pb.h&gt;</span></div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;</div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacemesos.html">mesos</a> {</div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="keyword">namespace </span>slave {</div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;</div><div class="line"><a name="l00037"></a><spa
 n class="lineno"><a class="line" href="structmesos_1_1slave_1_1ContainerIO.html">   37</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structmesos_1_1slave_1_1ContainerIO.html">ContainerIO</a></div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;{</div><div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="classmesos_1_1slave_1_1ContainerIO_1_1IO.html">   52</a></span>&#160;  <span class="keyword">class </span><a class="code" href="classmesos_1_1slave_1_1ContainerIO_1_1IO.html">IO</a></div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;  {</div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;  <span class="keyword">public</span>:</div><div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="classmesos_1_1slave_1_1ContainerIO_1_1IO.html#a7c8f14a0efec6a09b957d5d24b8f9e99">   55</a></span>&#160;    <span class="keyword"
 >enum class</span> <a class="code" href="classmesos_1_1slave_1_1ContainerIO_1_1IO.html#a7c8f14a0efec6a09b957d5d24b8f9e99">Type</a></div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;    {</div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;      <a class="code" href="classmesos_1_1slave_1_1ContainerIO_1_1IO.html#a7c8f14a0efec6a09b957d5d24b8f9e99aa8fa6b553b655657f943cb8fd85859d1">FD</a>,</div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;      <a class="code" href="classmesos_1_1slave_1_1ContainerIO_1_1IO.html#a7c8f14a0efec6a09b957d5d24b8f9e99a5ffb5f0d0de78321df46fc7c93ca64a3">PATH</a></div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;    };</div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;</div><div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="classmesos_1_1slave_1_1ContainerIO_1_1IO.html#a34
 1f45297ccb682a0c97e7f164d03a55">   61</a></span>&#160;    <span class="keyword">static</span> <a class="code" href="classmesos_1_1slave_1_1ContainerIO_1_1IO.html">IO</a> <a class="code" href="classmesos_1_1slave_1_1ContainerIO_1_1IO.html#a341f45297ccb682a0c97e7f164d03a55">PATH</a>(<span class="keyword">const</span> std::string&amp; <a class="code" href="namespacepath.html">path</a>)</div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;    {</div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;      <span class="keywordflow">return</span> <a class="code" href="classmesos_1_1slave_1_1ContainerIO_1_1IO.html">IO</a>(<a class="code" href="classmesos_1_1slave_1_1ContainerIO_1_1IO.html#a7c8f14a0efec6a09b957d5d24b8f9e99a5ffb5f0d0de78321df46fc7c93ca64a3">Type::PATH</a>, path);</div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;    }</div><div class="line"><a name="l00065"></a><span class="lineno">   6
 5</span>&#160;</div><div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="classmesos_1_1slave_1_1ContainerIO_1_1IO.html#a96bd292fdd5238a2c080e5f2d1a1535c">   66</a></span>&#160;    <span class="keyword">static</span> <a class="code" href="classmesos_1_1slave_1_1ContainerIO_1_1IO.html">IO</a> <a class="code" href="classmesos_1_1slave_1_1ContainerIO_1_1IO.html#a96bd292fdd5238a2c080e5f2d1a1535c">FD</a>(<a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> fd, <span class="keywordtype">bool</span> closeOnDestruction = <span class="keyword">true</span>)</div><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;    {</div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;      <span class="keywordflow">return</span> <a class="code" href="classmesos_1_1slave_1_1ContainerIO_1_1IO.html">IO</a>(<a class="code" href="classmesos_1_1slave_1_1ContainerIO_1_1IO.html#a7c8f14a0efec6a09b95
 7d5d24b8f9e99aa8fa6b553b655657f943cb8fd85859d1">Type::FD</a>, fd, closeOnDestruction);</div><div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;    }</div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;</div><div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="classmesos_1_1slave_1_1ContainerIO_1_1IO.html#a9385d497de23bc65844d6701627ab5b0">   71</a></span>&#160;    <span class="keyword">operator</span> <a class="code" href="classprocess_1_1Subprocess_1_1IO.html">process::Subprocess::IO</a> ()<span class="keyword"> const</span></div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;      <span class="keywordflow">switch</span> (type_) {</div><div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;        <span class="keywordflow">case
 </span> <a class="code" href="classmesos_1_1slave_1_1ContainerIO_1_1IO.html#a7c8f14a0efec6a09b957d5d24b8f9e99aa8fa6b553b655657f943cb8fd85859d1">Type::FD</a>:</div><div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;          <span class="keywordflow">return</span> <a class="code" href="classprocess_1_1Subprocess.html#aaa6e1b76ef54ed6db34d595811122ce0">process::Subprocess::FD</a>(*fd_);</div><div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;        <span class="keywordflow">case</span> <a class="code" href="classmesos_1_1slave_1_1ContainerIO_1_1IO.html#a7c8f14a0efec6a09b957d5d24b8f9e99a5ffb5f0d0de78321df46fc7c93ca64a3">Type::PATH</a>:</div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;          <span class="keywordflow">return</span> <a class="code" href="classprocess_1_1Subprocess.html#a54793e9c516257d68776f63f0872c3c7">process::Subprocess::PATH</a>(path_.get());</div><div class="line"><a name="l00
 078"></a><span class="lineno">   78</span>&#160;        <span class="keywordflow">default</span>:</div><div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;          <a class="code" href="unreachable_8hpp.html#a0bc63b24b654ca433be7b97a3edde132">UNREACHABLE</a>();</div><div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;      }</div><div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;    }</div><div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;</div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;  <span class="keyword">private</span>:</div><div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;    <span class="comment">// A simple abstraction to wrap an FD and (optionally) close it</span></div><div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;    <span class="comment">// on destruction. We know that 
 we never copy instances of this</span></div><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;    <span class="comment">// class once they are instantiated, so it&#39;s OK to call</span></div><div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;    <span class="comment">// `close()` in the destructor since only one reference will</span></div><div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;    <span class="comment">// ever exist to it.</span></div><div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;    <span class="keyword">class </span>FDWrapper</div><div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;    {</div><div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;    <span class="keyword">public</span>:</div><div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;      FDWrapper(<a class="code" href="in
 t__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> _fd, <span class="keywordtype">bool</span> _closeOnDestruction)</div><div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;        : fd(_fd), closeOnDestruction(_closeOnDestruction) {}</div><div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;</div><div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;      ~FDWrapper() {</div><div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;        CHECK(fd &gt;= 0);</div><div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;        <span class="keywordflow">if</span> (closeOnDestruction) {</div><div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;          close(fd);</div><div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;        }</div><div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#16
 0;      }</div><div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;</div><div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;      <span class="keyword">operator</span> <a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> fd; }</div><div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;</div><div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;    <span class="keyword">private</span>:</div><div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;      FDWrapper(<span class="keyword">const</span> FDWrapper&amp; fd) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;</div><div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;      <a class="code" href="int__fd_8
 hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> fd;</div><div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;      <span class="keywordtype">bool</span> closeOnDestruction;</div><div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;    };</div><div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;</div><div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;    <a class="code" href="classmesos_1_1slave_1_1ContainerIO_1_1IO.html">IO</a>(<a class="code" href="classmesos_1_1slave_1_1ContainerIO_1_1IO.html#a7c8f14a0efec6a09b957d5d24b8f9e99">Type</a> _type, <a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> _fd, <span class="keywordtype">bool</span> closeOnDestruction)</div><div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;      : type_(_type),</div><div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#16
 0;        fd_(<span class="keyword">new</span> FDWrapper(_fd, closeOnDestruction)),</div><div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;        path_(<a class="code" href="structNone.html">None</a>()) {}</div><div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;</div><div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;    <a class="code" href="classmesos_1_1slave_1_1ContainerIO_1_1IO.html">IO</a>(<a class="code" href="classmesos_1_1slave_1_1ContainerIO_1_1IO.html#a7c8f14a0efec6a09b957d5d24b8f9e99">Type</a> _type, <span class="keyword">const</span> std::string&amp; _path)</div><div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;      : type_(_type),</div><div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;        fd_(),</div><div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;        path_(_path) {}</div><div class="line"><a n
 ame="l00120"></a><span class="lineno">  120</span>&#160;</div><div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;    <a class="code" href="classmesos_1_1slave_1_1ContainerIO_1_1IO.html#a7c8f14a0efec6a09b957d5d24b8f9e99">Type</a> type_;</div><div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;    <a class="code" href="classprocess_1_1Shared.html">process::Shared&lt;FDWrapper&gt;</a> fd_;</div><div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;    <a class="code" href="classOption.html">Option&lt;std::string&gt;</a> path_;</div><div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;  };</div><div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;</div><div class="line"><a name="l00130"></a><span class="lineno"><a class="line" href="structmesos_1_1slave_1_1ContainerIO.html#a71d1190a036c7e3d2af3fcee95e8d2c8">  130</a></span>&#160;  <a class="code" href="classmeso
 s_1_1slave_1_1ContainerIO_1_1IO.html">IO</a> <a class="code" href="structmesos_1_1slave_1_1ContainerIO.html#a71d1190a036c7e3d2af3fcee95e8d2c8">in</a> = <a class="code" href="classmesos_1_1slave_1_1ContainerIO_1_1IO.html#a96bd292fdd5238a2c080e5f2d1a1535c">IO::FD</a>(<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#afcf80a6d91178952d107ad00b165752b">STDIN_FILENO</a>, <span class="keyword">false</span>);</div><div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;</div><div class="line"><a name="l00136"></a><span class="lineno"><a class="line" href="structmesos_1_1slave_1_1ContainerIO.html#a0de456b091225ae112d9799652d990ed">  136</a></span>&#160;  <a class="code" href="classmesos_1_1slave_1_1ContainerIO_1_1IO.html">IO</a> <a class="code" href="structmesos_1_1slave_1_1ContainerIO.html#a0de456b091225ae112d9799652d990ed">out</a> = <a class="code" href="classmesos_1_1slave_1_1ContainerIO_1_1IO.html#a96bd292fdd5238a2c080e5f2d1a1535c">IO::FD</a>
 (<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#abd165ee6474b5b75bf075842fff13a04">STDOUT_FILENO</a>, <span class="keyword">false</span>);</div><div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;</div><div class="line"><a name="l00141"></a><span class="lineno"><a class="line" href="structmesos_1_1slave_1_1ContainerIO.html#a3cbd98f5b391bb77ea645fdeafb605cf">  141</a></span>&#160;  <a class="code" href="classmesos_1_1slave_1_1ContainerIO_1_1IO.html">IO</a> <a class="code" href="structmesos_1_1slave_1_1ContainerIO.html#a3cbd98f5b391bb77ea645fdeafb605cf">err</a> = <a class="code" href="classmesos_1_1slave_1_1ContainerIO_1_1IO.html#a96bd292fdd5238a2c080e5f2d1a1535c">IO::FD</a>(<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ae2fe1725bb5e9823d089c46b9ed5266e">STDERR_FILENO</a>, <span class="keyword">false</span>);</div><div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;};</div><div cla
 ss="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;</div><div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;} <span class="comment">// namespace slave {</span></div><div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;} <span class="comment">// namespace mesos {</span></div><div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;</div><div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;<span class="preprocessor">#endif // __MESOS_SLAVE_CONTAINERIZER_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="classOption_html"><div class="ttname"><a href="classOption.html">Option&lt; std::string &gt;</a></div></div>
-<div class="ttc" id="subprocess_8hpp_html"><div class="ttname"><a href="subprocess_8hpp.html">subprocess.hpp</a></div></div>
 <div class="ttc" id="classmesos_1_1slave_1_1ContainerIO_1_1IO_html"><div class="ttname"><a href="classmesos_1_1slave_1_1ContainerIO_1_1IO.html">mesos::slave::ContainerIO::IO</a></div><div class="ttdoc">Describes how the containerizer redirects I/O for stdin/stdout/stderr of a container. </div><div class="ttdef"><b>Definition:</b> containerizer.hpp:52</div></div>
+<div class="ttc" id="include_2process_2subprocess_8hpp_html"><div class="ttname"><a href="include_2process_2subprocess_8hpp.html">subprocess.hpp</a></div></div>
 <div class="ttc" id="classprocess_1_1Subprocess_html_a54793e9c516257d68776f63f0872c3c7"><div class="ttname"><a href="classprocess_1_1Subprocess.html#a54793e9c516257d68776f63f0872c3c7">process::Subprocess::PATH</a></div><div class="ttdeci">static IO PATH(const std::string &amp;path)</div></div>
 <div class="ttc" id="structmesos_1_1slave_1_1ContainerIO_html"><div class="ttname"><a href="structmesos_1_1slave_1_1ContainerIO.html">mesos::slave::ContainerIO</a></div><div class="ttdoc">An abstraction around the IO classes used to redirect stdin/stdout/stderr to/from a container by the ...</div><div class="ttdef"><b>Definition:</b> containerizer.hpp:37</div></div>
 <div class="ttc" id="classmesos_1_1slave_1_1ContainerIO_1_1IO_html_a96bd292fdd5238a2c080e5f2d1a1535c"><div class="ttname"><a href="classmesos_1_1slave_1_1ContainerIO_1_1IO.html#a96bd292fdd5238a2c080e5f2d1a1535c">mesos::slave::ContainerIO::IO::FD</a></div><div class="ttdeci">static IO FD(int_fd fd, bool closeOnDestruction=true)</div><div class="ttdef"><b>Definition:</b> containerizer.hpp:66</div></div>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/include_2process_2subprocess_8hpp.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/include_2process_2subprocess_8hpp.html b/content/api/latest/c++/include_2process_2subprocess_8hpp.html
new file mode 100644
index 0000000..be0f670
--- /dev/null
+++ b/content/api/latest/c++/include_2process_2subprocess_8hpp.html
@@ -0,0 +1,125 @@
+<!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: 3rdparty/libprocess/include/process/subprocess.hpp File 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&#160;Page</span></a></li>
+      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li class="current"><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="files.html"><span>File&#160;List</span></a></li>
+      <li><a href="globals.html"><span>File&#160;Members</span></a></li>
+    </ul>
+  </div>
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_8cab8f464681f7cc51cee77e79a434cd.html">3rdparty</a></li><li class="navelem"><a class="el" href="dir_043a76de98701f9bddf61b5e98f305ff.html">libprocess</a></li><li class="navelem"><a class="el" href="dir_eac18f7a64f6f8afbd1493ef4e09abdb.html">include</a></li><li class="navelem"><a class="el" href="dir_1894286df79cf582d947dbc4268b06cf.html">process</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="summary">
+<a href="#nested-classes">Classes</a> &#124;
+<a href="#namespaces">Namespaces</a> &#124;
+<a href="#typedef-members">Typedefs</a> &#124;
+<a href="#func-members">Functions</a>  </div>
+  <div class="headertitle">
+<div class="title">subprocess.hpp File Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &lt;map&gt;</code><br />
+<code>#include &lt;memory&gt;</code><br />
+<code>#include &lt;string&gt;</code><br />
+<code>#include &lt;vector&gt;</code><br />
+<code>#include &lt;<a class="el" href="future_8hpp_source.html">process/future.hpp</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="3rdparty_2stout_2include_2stout_2flags_8hpp_source.html">stout/flags.hpp</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="lambda_8hpp_source.html">stout/lambda.hpp</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="none_8hpp_source.html">stout/none.hpp</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="option_8hpp_source.html">stout/option.hpp</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="try_8hpp_source.html">stout/try.hpp</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="shell_8hpp_source.html">stout/os/shell.hpp</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="int__fd_8hpp_source.html">stout/os/int_fd.hpp</a>&gt;</code><br />
+</div>
+<p><a href="include_2process_2subprocess_8hpp_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classprocess_1_1Subprocess.html">process::Subprocess</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Represents a fork() exec()ed subprocess.  <a href="classprocess_1_1Subprocess.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classprocess_1_1Subprocess_1_1IO.html">process::Subprocess::IO</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Describes how the I/O is redirected for stdin/stdout/stderr.  <a href="classprocess_1_1Subprocess_1_1IO.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors.html">process::Subprocess::IO::InputFileDescriptors</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">For input file descriptors a child reads from the <code>read</code> file descriptor and a parent may write to the <code>write</code> file descriptor if one is present.  <a href="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html">process::Subprocess::IO::OutputFileDescriptors</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">For output file descriptors a child writes to the <code>write</code> file descriptor and a parent may read from the <code>read</code> file descriptor if one is present.  <a href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structprocess_1_1Subprocess_1_1ParentHook.html">process::Subprocess::ParentHook</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A hook can be passed to a <code>subprocess</code> call.  <a href="structprocess_1_1Subprocess_1_1ParentHook.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classprocess_1_1Subprocess_1_1ChildHook.html">process::Subprocess::ChildHook</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A <code><a class="el" href="classprocess_1_1Subprocess_1_1ChildHook.html" title="A ChildHook can be passed to a subprocess call. ">ChildHook</a></code> can be passed to a <code>subprocess</code> call.  <a href="classprocess_1_1Subprocess_1_1ChildHook.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
+Namespaces</h2></td></tr>
+<tr class="memitem:namespaceprocess"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceprocess.html">process</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
+Typedefs</h2></td></tr>
+<tr class="memitem:afc6611c4913642642277b44447a16e55"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceprocess.html#afc6611c4913642642277b44447a16e55">process::InputFileDescriptors</a> = Subprocess::IO::InputFileDescriptors</td></tr>
+<tr class="separator:afc6611c4913642642277b44447a16e55"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a882829822afa4f33b90aafc9c4ffa9af"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceprocess.html#a882829822afa4f33b90aafc9c4ffa9af">process::OutputFileDescriptors</a> = Subprocess::IO::OutputFileDescriptors</td></tr>
+<tr class="separator:a882829822afa4f33b90aafc9c4ffa9af"><td class="memSeparator" colspan="2">&#160;</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:a2d7e0a283bc0c9eca8a8b0532e026269"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classTry.html">Try</a>&lt; Subprocess &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceprocess.html#a2d7e0a283bc0c9eca8a8b0532e026269">process::subprocess</a> (const std::string &amp;path, std::vector&lt; std::string &gt; argv, const Subprocess::IO &amp;in=Subprocess::FD(<a class="el" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#afcf80a6d91178952d107ad00b165752b">STDIN_FILENO</a>), const Subprocess::IO &amp;out=Subprocess::FD(<a class="el" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#abd165ee6474b5b75bf075842fff13a04">STDOUT_FILENO</a>), const Subprocess::IO &amp;err=Subprocess::FD(<a class="el" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ae2fe1725bb5e9823d089c46b9ed5266e">STDERR_FILENO</a>), const <a class="el" href="classflags_1_1FlagsBase.html">flags::FlagsBase</a> *<a class="el" href=
 "decoder_8hpp.html#abb0829cce9dd20a40ae0d86890ae85c6">flags</a>=nullptr, const <a class="el" href="classOption.html">Option</a>&lt; std::map&lt; std::string, std::string &gt;&gt; &amp;environment=<a class="el" href="structNone.html">None</a>(), const <a class="el" href="classOption.html">Option</a>&lt; lambda::function&lt; <a class="el" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a>(const lambda::function&lt; int()&gt; &amp;)&gt;&gt; &amp;clone=<a class="el" href="structNone.html">None</a>(), const std::vector&lt; Subprocess::ParentHook &gt; &amp;parent_hooks={}, const std::vector&lt; Subprocess::ChildHook &gt; &amp;child_hooks={}, const std::vector&lt; <a class="el" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> &gt; &amp;whitelist_fds={})</td></tr>
+<tr class="memdesc:a2d7e0a283bc0c9eca8a8b0532e026269"><td class="mdescLeft">&#160;</td><td class="mdescRight">Forks a subprocess and execs the specified 'path' with the specified 'argv', redirecting stdin, stdout, and stderr as specified by 'in', 'out', and 'err' respectively.  <a href="namespaceprocess.html#a2d7e0a283bc0c9eca8a8b0532e026269">More...</a><br /></td></tr>
+<tr class="separator:a2d7e0a283bc0c9eca8a8b0532e026269"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0a748c548ad3a094196c98f00f9674cf"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classTry.html">Try</a>&lt; Subprocess &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceprocess.html#a0a748c548ad3a094196c98f00f9674cf">process::subprocess</a> (const std::string &amp;command, const Subprocess::IO &amp;in=Subprocess::FD(<a class="el" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#afcf80a6d91178952d107ad00b165752b">STDIN_FILENO</a>), const Subprocess::IO &amp;out=Subprocess::FD(<a class="el" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#abd165ee6474b5b75bf075842fff13a04">STDOUT_FILENO</a>), const Subprocess::IO &amp;err=Subprocess::FD(<a class="el" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ae2fe1725bb5e9823d089c46b9ed5266e">STDERR_FILENO</a>), const <a class="el" href="classOption.html">Option</a>&lt; std::map&lt; std::string, std::string &gt;&gt; &amp;environment=<a class="
 el" href="structNone.html">None</a>(), const <a class="el" href="classOption.html">Option</a>&lt; lambda::function&lt; <a class="el" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a>(const lambda::function&lt; int()&gt; &amp;)&gt;&gt; &amp;clone=<a class="el" href="structNone.html">None</a>(), const std::vector&lt; Subprocess::ParentHook &gt; &amp;parent_hooks={}, const std::vector&lt; Subprocess::ChildHook &gt; &amp;child_hooks={}, const std::vector&lt; <a class="el" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> &gt; &amp;whitelist_fds={})</td></tr>
+<tr class="memdesc:a0a748c548ad3a094196c98f00f9674cf"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="structOverload.html">Overload</a> of 'subprocess' for launching a shell command, i.e., 'sh -c command'.  <a href="namespaceprocess.html#a0a748c548ad3a094196c98f00f9674cf">More...</a><br /></td></tr>
+<tr class="separator:a0a748c548ad3a094196c98f00f9674cf"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.11
+</small></address>
+</body>
+</html>


[06/50] mesos-site git commit: Updated the website built from mesos SHA: 7c9c72d.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/v1_2scheduler_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/v1_2scheduler_8hpp_source.html b/content/api/latest/c++/v1_2scheduler_8hpp_source.html
index 9688015..cff2952 100644
--- a/content/api/latest/c++/v1_2scheduler_8hpp_source.html
+++ b/content/api/latest/c++/v1_2scheduler_8hpp_source.html
@@ -52,14 +52,13 @@
 <div class="title">scheduler.hpp</div>  </div>
 </div><!--header-->
 <div class="contents">
-<a href="v1_2scheduler_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>&#160;<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>&#160;<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>&#160;<span class="comment">// distributed with this work for additional information</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<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>&#160;<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>&#160;<span class="comment">// &quot;License&quot;); you may not use this file except in compliance</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<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>&#160;<span class="comment">// dis
 tributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<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>&#160;<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>&#160;<span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;</div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="preprocessor">#ifndef __MESOS_V1_SCHEDULER_HPP__</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="preprocessor">#define __MESOS_V1_SCHEDULER_HPP__</span></div><div cl
 ass="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="preprocessor">#include &lt;functional&gt;</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="preprocessor">#include &lt;memory&gt;</span></div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="preprocessor">#include &lt;queue&gt;</span></div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span></div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;</div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="include_2mesos_2http_8hpp.html">mesos/http.hpp</a>&gt;</span></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>&#160;<span class="preprocessor">#include &lt;<a class="code" href="include_2mesos_2v1_2mesos_8hpp.html">mesos/v1/mesos.hpp</a>&gt;</span></div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;</div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="v1_2scheduler_2scheduler_8hpp.html">mesos/v1/scheduler/scheduler.hpp</a>&gt;</span></div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;</div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="future_8hpp.html">process/future.hpp</a>&gt;</span></div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;<sp
 an class="preprocessor">#include &lt;<a class="code" href="option_8hpp.html">stout/option.hpp</a>&gt;</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>&#160;<span class="keyword">namespace </span><a class="code" href="namespacemesos.html">mesos</a> {</div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;</div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacemesos_1_1v1_1_1master.html">master</a> {</div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;<span class="keyword">namespace </span>detector {</div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;<span class="keyword">class </span>MasterDetector;</div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160
 ;} <span class="comment">// namespace detector {</span></div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;} <span class="comment">// namespace master {</span></div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;</div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;<span class="keyword">namespace </span>v1 {</div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;<span class="keyword">namespace </span>scheduler {</div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;</div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;<span class="keyword">class </span>MesosProcess; <span class="comment">// Forward declaration.</span></div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;</div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;<span class="comment">//
  Abstract interface for connecting a scheduler to Mesos.</span></div><div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="classmesos_1_1v1_1_1scheduler_1_1MesosBase.html">   49</a></span>&#160;<span class="keyword">class </span><a class="code" href="classmesos_1_1v1_1_1scheduler_1_1MesosBase.html">MesosBase</a></div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;{</div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;  <span class="comment">// Empty virtual destructor (necessary to instantiate subclasses).</span></div><div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="classmesos_1_1v1_1_1scheduler_1_1MesosBase.html#ae3ae5afeb5f3dbe81fb1f68107e2c361">   53</a></span>&#160;  <span class="keyword">virtual</span> <a class="code" href="classmesos_1_1v1
 _1_1scheduler_1_1MesosBase.html#ae3ae5afeb5f3dbe81fb1f68107e2c361">~MesosBase</a>() {}</div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="namespacenet.html#aa0a46766b4aca53ea50e1921567ddb40">send</a>(<span class="keyword">const</span> <a class="code" href="namespacemesos_1_1internal_1_1tests_1_1v1_1_1scheduler.html#acb18ceaa5f6f2338f2a9727af398eb79">Call</a>&amp; call) = 0;</div><div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;  <span class="keyword">virtual</span> <a class="code" href="classprocess_1_1Future.html">process::Future&lt;APIResult&gt;</a> call(<span class="keyword">const</span> <a class="code" href="namespacemesos_1_1internal_1_1tests_1_1v1_1_1scheduler.html#acb18ceaa5f6f2338f2a9727af398eb79">Call</a>&amp; callMessage) = 0;</div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;  <span
  class="keyword">virtual</span> <span class="keywordtype">void</span> reconnect() = 0;</div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;};</div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;</div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;</div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;<span class="comment">// Concrete implementation that connects a scheduler to a Mesos master.</span></div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;<span class="comment">// Abstracts master detection (connection and disconnection).</span></div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;<span class="comment">// Expects three callbacks, &#39;connected&#39;, &#39;disconnected&#39;, and</
 span></div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;<span class="comment">// &#39;received&#39; which will get invoked _serially_ when it&#39;s determined</span></div><div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;<span class="comment">// that we&#39;ve connected (i.e., detected master), disconnected</span></div><div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;<span class="comment">// (i.e, detected no master), or received events from the master.</span></div><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;<span class="comment">// The library reconnects with the master upon a disconnection.</span></div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;<span class="comment">// NOTE: All calls and events are dropped whil
 e disconnected.</span></div><div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="classmesos_1_1v1_1_1scheduler_1_1Mesos.html">   70</a></span>&#160;<span class="keyword">class </span><a class="code" href="classmesos_1_1v1_1_1scheduler_1_1Mesos.html">Mesos</a> : <span class="keyword">public</span> <a class="code" href="classmesos_1_1v1_1_1scheduler_1_1MesosBase.html">MesosBase</a></div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;{</div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;  <span class="comment">// The credential will be used for authenticating with the master. Currently,</span></div><div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;  <span class="comment">// only HTTP basic authentication is supported.</span></div><div class="line"><a 
 name="l00075"></a><span class="lineno">   75</span>&#160;  <a class="code" href="namespacemesos_1_1internal_1_1tests_1_1v1_1_1scheduler.html#ab87ee31e10bdc282bae31a2c973602df">Mesos</a>(<span class="keyword">const</span> std::string&amp; <a class="code" href="namespacemesos_1_1v1_1_1master.html">master</a>,</div><div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;        <a class="code" href="namespacemesos.html#a13035ce0cc66cca4a467787b4716039e">ContentType</a> contentType,</div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;        <span class="keyword">const</span> std::function&lt;<span class="keywordtype">void</span>()&gt;&amp; connected,</div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;        <span class="keyword">const</span> std::function&lt;<span class="keywordtype">void</span>()&gt;&amp; disconnected,</div><div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160
 ;        <span class="keyword">const</span> std::function&lt;<span class="keywordtype">void</span>(<span class="keyword">const</span> std::queue&lt;Event&gt;&amp;)&gt;&amp; received,</div><div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;        <span class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;Credential&gt;</a>&amp; credential);</div><div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;</div><div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;  <span class="comment">// Delete copy constructor.</span></div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;  <a class="code" href="namespacemesos_1_1internal_1_1tests_1_1v1_1_1scheduler.html#ab87ee31e10bdc282bae31a2c973602df">Mesos</a>(<span class="keyword">const</span> <a class="code" href="classmesos_1_1v1_1_1scheduler_1_1Mesos.html">Mesos</a>&amp; other) = <span class="keyword">delete</span>;<
 /div><div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;</div><div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;  <span class="comment">// Delete assignment operator.</span></div><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;  <a class="code" href="classmesos_1_1v1_1_1scheduler_1_1Mesos.html">Mesos</a>&amp; operator=(<span class="keyword">const</span> <a class="code" href="classmesos_1_1v1_1_1scheduler_1_1Mesos.html">Mesos</a>&amp; other) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;</div><div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;  <span class="keyword">virtual</span> ~<a class="code" href="classmesos_1_1v1_1_1scheduler_1_1Mesos.html">Mesos</a>();</div><div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;</div><div class="line"><a name="l00090"></a><span class="
 lineno">   90</span>&#160;  <span class="comment">// Attempts to send a call to the master.</span></div><div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;  <span class="comment">//</span></div><div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;  <span class="comment">// The scheduler should only invoke this method once it has received the</span></div><div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;  <span class="comment">// &#39;connected&#39; callback. Otherwise, all calls would be dropped while</span></div><div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;  <span class="comment">// disconnected.</span></div><div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;  <span class="comment">//</span></div><div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;  <span class="comment">// Some local validation of calls is performed w
 hich may generate</span></div><div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;  <span class="comment">// events without ever being sent to the master. This includes when</span></div><div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;  <span class="comment">// calls are sent but no master is currently detected (i.e., we&#39;re</span></div><div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;  <span class="comment">// disconnected).</span></div><div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="namespacenet.html#aa0a46766b4aca53ea50e1921567ddb40">send</a>(<span class="keyword">const</span> <a class="code" href="namespacemesos_1_1internal_1_1tests_1_1v1_1_1scheduler.html#acb18ceaa5f6f2338f2a9727af398eb79">Call</a>&amp; call) <span class="keyword">override</span>;</div><div class="l
 ine"><a name="l00101"></a><span class="lineno">  101</span>&#160;</div><div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;  <span class="comment">// Attempts to send a call to the master, returning the response.</span></div><div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;  <span class="comment">//</span></div><div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;  <span class="comment">// The scheduler should only invoke this method once it has received the</span></div><div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;  <span class="comment">// &#39;connected&#39; callback. Otherwise, a `Failure` will be returned.</span></div><div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;  <span class="comment">//</span></div><div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;  <span class="comment">// Some local validation of calls i
 s performed, and the request will not be</span></div><div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;  <span class="comment">// sent to the master if the validation fails.</span></div><div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;  <span class="comment">//</span></div><div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;  <span class="comment">// A `Failure` will be returned on validation failures or if an error happens</span></div><div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;  <span class="comment">// when sending the request to the master, e.g., a master disconnection, or a</span></div><div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;  <span class="comment">// deserialization error.</span></div><div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;  <span class="comment">//</span></div><div class="line"><a name
 ="l00114"></a><span class="lineno">  114</span>&#160;  <span class="comment">// If it was possible to receive a response from the server, the returned</span></div><div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;  <span class="comment">// object will contain the HTTP response status code.</span></div><div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;  <span class="comment">//</span></div><div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;  <span class="comment">// There are three cases to consider depending on the HTTP response status</span></div><div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;  <span class="comment">// code:</span></div><div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;  <span class="comment">//</span></div><div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;  <span class="comment">//  (1) &#39;202 A
 CCEPTED&#39;: Indicates the call was accepted for processing and</span></div><div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;  <span class="comment">//      neither `APIResult::response` nor `APIResult::error` will be set.</span></div><div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;  <span class="comment">//</span></div><div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;  <span class="comment">//  (2) &#39;200 OK&#39;: Indicates the call completed successfully.</span></div><div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;  <span class="comment">//      `APIResult::response` will be set if the `scheduler::Call::Type`</span></div><div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;  <span class="comment">//      has a corresponding `scheduler::Response::Type`, `APIResult::error`</span></div><div class="line"><a name="l00126"></a><span class="lin
 eno">  126</span>&#160;  <span class="comment">//      will not be set.</span></div><div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;  <span class="comment">//</span></div><div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;  <span class="comment">//  (3) For all other HTTP status codes, the `APIResult::response` field will</span></div><div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;  <span class="comment">//      not be set and the `APIResult::error` field may be set to provide more</span></div><div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;  <span class="comment">//      information.</span></div><div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;  <span class="comment">//</span></div><div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;  <span class="comment">// Note: This method cannot be used to send `SUBSCRIBE` c
 alls, use `send()`</span></div><div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;  <span class="comment">// instead.</span></div><div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;  <span class="keyword">virtual</span> <a class="code" href="classprocess_1_1Future.html">process::Future&lt;APIResult&gt;</a> call(<span class="keyword">const</span> <a class="code" href="namespacemesos_1_1internal_1_1tests_1_1v1_1_1scheduler.html#acb18ceaa5f6f2338f2a9727af398eb79">Call</a>&amp; callMessage) <span class="keyword">override</span>;</div><div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;</div><div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;  <span class="comment">// Force a reconnection with the master.</span></div><div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;  <span class="comment">//</span></div><div class="line"><a name="l00138"></a><span class=
 "lineno">  138</span>&#160;  <span class="comment">// In the case of a one-way network partition, the connection between the</span></div><div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;  <span class="comment">// scheduler and master might not necessarily break. If the scheduler detects</span></div><div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;  <span class="comment">// a partition, due to lack of `HEARTBEAT` events (e.g., 5) within a time</span></div><div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;  <span class="comment">// window, it can explicitly ask the library to force a reconnection with</span></div><div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;  <span class="comment">// the master.</span></div><div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;  <span class="comment">//</span></div><div class="line"><a name="l00144"></a><span c
 lass="lineno">  144</span>&#160;  <span class="comment">// This call would be ignored if the scheduler is already disconnected with</span></div><div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;  <span class="comment">// the master (e.g., no new master has been elected). Otherwise, the scheduler</span></div><div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;  <span class="comment">// would get a &#39;disconnected&#39; callback followed by a &#39;connected&#39; callback.</span></div><div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">void</span> reconnect() <span class="keyword">override</span>;</div><div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;</div><div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;<span class="keyword">protected</span>:</div><div class="line"><a name="l00150"></
 a><span class="lineno">  150</span>&#160;  <span class="comment">// NOTE: This constructor is used for testing.</span></div><div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;  <a class="code" href="namespacemesos_1_1internal_1_1tests_1_1v1_1_1scheduler.html#ab87ee31e10bdc282bae31a2c973602df">Mesos</a>(</div><div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;      <span class="keyword">const</span> std::string&amp; master,</div><div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;      <a class="code" href="namespacemesos.html#a13035ce0cc66cca4a467787b4716039e">ContentType</a> contentType,</div><div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;      <span class="keyword">const</span> std::function&lt;<span class="keywordtype">void</span>()&gt;&amp; connected,</div><div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;      <span class="keyword">const</sp
 an> std::function&lt;<span class="keywordtype">void</span>()&gt;&amp; disconnected,</div><div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;      <span class="keyword">const</span> std::function&lt;<span class="keywordtype">void</span>(<span class="keyword">const</span> std::queue&lt;Event&gt;&amp;)&gt;&amp; received,</div><div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;      <span class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;Credential&gt;</a>&amp; credential,</div><div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;      <span class="keyword">const</span> <a class="code" href="classOption.html">Option</a>&lt;std::shared_ptr&lt;mesos::master::detector::MasterDetector&gt;&gt;&amp;</div><div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;        detector);</div><div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;</div
 ><div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;  <span class="comment">// Stops the library so that:</span></div><div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;  <span class="comment">//   - No more calls can be sent to the master.</span></div><div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;  <span class="comment">//   - No more callbacks can be made to the scheduler. In some cases, there</span></div><div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;  <span class="comment">//     may be one additional callback if the library was in the middle of</span></div><div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;  <span class="comment">//     processing an event.</span></div><div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;  <span class="comment">//</span></div><div class="line"><a name="l00167"></a><span class="l
 ineno">  167</span>&#160;  <span class="comment">// NOTE: This is used for testing.</span></div><div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">void</span> stop();</div><div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;</div><div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;  MesosProcess* <a class="code" href="namespaceos.html#ae19e4161a51b86a1f330f3bf1dc75389">process</a>;</div><div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;};</div><div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;</div><div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;} <span class="comment">// namespace scheduler {</span></div><div class="line"><a name="l00175
 "></a><span class="lineno">  175</span>&#160;} <span class="comment">// namespace v1 {</span></div><div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;} <span class="comment">// namespace mesos {</span></div><div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;</div><div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;<span class="preprocessor">#endif // __MESOS_V1_SCHEDULER_HPP__</span></div><div class="ttc" id="include_2mesos_2http_8hpp_html"><div class="ttname"><a href="include_2mesos_2http_8hpp.html">http.hpp</a></div></div>
+<a href="v1_2scheduler_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>&#160;<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>&#160;<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>&#160;<span class="comment">// distributed with this work for additional information</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<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>&#160;<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>&#160;<span class="comment">// &quot;License&quot;); you may not use this file except in compliance</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<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>&#160;<span class="comment">// dis
 tributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<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>&#160;<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>&#160;<span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;</div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="preprocessor">#ifndef __MESOS_V1_SCHEDULER_HPP__</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="preprocessor">#define __MESOS_V1_SCHEDULER_HPP__</span></div><div cl
 ass="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="preprocessor">#include &lt;functional&gt;</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="preprocessor">#include &lt;memory&gt;</span></div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="preprocessor">#include &lt;queue&gt;</span></div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span></div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;</div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="include_2mesos_2http_8hpp.html">mesos/http.hpp</a>&gt;</span></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>&#160;<span class="preprocessor">#include &lt;<a class="code" href="include_2mesos_2v1_2mesos_8hpp.html">mesos/v1/mesos.hpp</a>&gt;</span></div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;</div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="v1_2scheduler_2scheduler_8hpp.html">mesos/v1/scheduler/scheduler.hpp</a>&gt;</span></div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;</div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="future_8hpp.html">process/future.hpp</a>&gt;</span></div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;<sp
 an class="preprocessor">#include &lt;<a class="code" href="option_8hpp.html">stout/option.hpp</a>&gt;</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>&#160;<span class="keyword">namespace </span><a class="code" href="namespacemesos.html">mesos</a> {</div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;</div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacemesos_1_1v1_1_1master.html">master</a> {</div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;<span class="keyword">namespace </span>detector {</div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;<span class="keyword">class </span>MasterDetector;</div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160
 ;} <span class="comment">// namespace detector {</span></div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;} <span class="comment">// namespace master {</span></div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;</div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;<span class="keyword">namespace </span>v1 {</div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;<span class="keyword">namespace </span>scheduler {</div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;</div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;<span class="keyword">class </span>MesosProcess; <span class="comment">// Forward declaration.</span></div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;</div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;<span class="comment">//
  Abstract interface for connecting a scheduler to Mesos.</span></div><div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="classmesos_1_1v1_1_1scheduler_1_1MesosBase.html">   49</a></span>&#160;<span class="keyword">class </span><a class="code" href="classmesos_1_1v1_1_1scheduler_1_1MesosBase.html">MesosBase</a></div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;{</div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;  <span class="comment">// Empty virtual destructor (necessary to instantiate subclasses).</span></div><div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="classmesos_1_1v1_1_1scheduler_1_1MesosBase.html#ae3ae5afeb5f3dbe81fb1f68107e2c361">   53</a></span>&#160;  <span class="keyword">virtual</span> <a class="code" href="classmesos_1_1v1
 _1_1scheduler_1_1MesosBase.html#ae3ae5afeb5f3dbe81fb1f68107e2c361">~MesosBase</a>() {}</div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="namespaceprocess_1_1windows.html#a04c64346155d34517acdf8b587162868">send</a>(<span class="keyword">const</span> <a class="code" href="namespacemesos_1_1internal_1_1tests_1_1v1_1_1scheduler.html#acb18ceaa5f6f2338f2a9727af398eb79">Call</a>&amp; call) = 0;</div><div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;  <span class="keyword">virtual</span> <a class="code" href="classprocess_1_1Future.html">process::Future&lt;APIResult&gt;</a> call(<span class="keyword">const</span> <a class="code" href="namespacemesos_1_1internal_1_1tests_1_1v1_1_1scheduler.html#acb18ceaa5f6f2338f2a9727af398eb79">Call</a>&amp; callMessage) = 0;</div><div class="line"><a name="l00056"></a><span class="lineno">   56</spa
 n>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">void</span> reconnect() = 0;</div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;};</div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;</div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;</div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;<span class="comment">// Concrete implementation that connects a scheduler to a Mesos master.</span></div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;<span class="comment">// Abstracts master detection (connection and disconnection).</span></div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;<span class="comment">// Expects three callbacks, &#39;connected&#39;, &#39;disconnec
 ted&#39;, and</span></div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;<span class="comment">// &#39;received&#39; which will get invoked _serially_ when it&#39;s determined</span></div><div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;<span class="comment">// that we&#39;ve connected (i.e., detected master), disconnected</span></div><div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;<span class="comment">// (i.e, detected no master), or received events from the master.</span></div><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;<span class="comment">// The library reconnects with the master upon a disconnection.</span></div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;<span class="comment">// NOTE: All calls and events a
 re dropped while disconnected.</span></div><div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="classmesos_1_1v1_1_1scheduler_1_1Mesos.html">   70</a></span>&#160;<span class="keyword">class </span><a class="code" href="classmesos_1_1v1_1_1scheduler_1_1Mesos.html">Mesos</a> : <span class="keyword">public</span> <a class="code" href="classmesos_1_1v1_1_1scheduler_1_1MesosBase.html">MesosBase</a></div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;{</div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;  <span class="comment">// The credential will be used for authenticating with the master. Currently,</span></div><div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;  <span class="comment">// only HTTP basic authentication is supported.</span></div><div c
 lass="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;  <a class="code" href="namespacemesos_1_1internal_1_1tests_1_1v1_1_1scheduler.html#ab87ee31e10bdc282bae31a2c973602df">Mesos</a>(<span class="keyword">const</span> std::string&amp; <a class="code" href="namespacemesos_1_1v1_1_1master.html">master</a>,</div><div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;        <a class="code" href="namespacemesos.html#a13035ce0cc66cca4a467787b4716039e">ContentType</a> contentType,</div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;        <span class="keyword">const</span> std::function&lt;<span class="keywordtype">void</span>()&gt;&amp; connected,</div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;        <span class="keyword">const</span> std::function&lt;<span class="keywordtype">void</span>()&gt;&amp; disconnected,</div><div class="line"><a name="l00079"></a><span class="lineno">  
  79</span>&#160;        <span class="keyword">const</span> std::function&lt;<span class="keywordtype">void</span>(<span class="keyword">const</span> std::queue&lt;Event&gt;&amp;)&gt;&amp; received,</div><div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;        <span class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;Credential&gt;</a>&amp; credential);</div><div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;</div><div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;  <span class="comment">// Delete copy constructor.</span></div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;  <a class="code" href="namespacemesos_1_1internal_1_1tests_1_1v1_1_1scheduler.html#ab87ee31e10bdc282bae31a2c973602df">Mesos</a>(<span class="keyword">const</span> <a class="code" href="classmesos_1_1v1_1_1scheduler_1_1Mesos.html">Mesos</a>&amp; other) = <span class="keyword">
 delete</span>;</div><div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;</div><div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;  <span class="comment">// Delete assignment operator.</span></div><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;  <a class="code" href="classmesos_1_1v1_1_1scheduler_1_1Mesos.html">Mesos</a>&amp; operator=(<span class="keyword">const</span> <a class="code" href="classmesos_1_1v1_1_1scheduler_1_1Mesos.html">Mesos</a>&amp; other) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;</div><div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;  <span class="keyword">virtual</span> ~<a class="code" href="classmesos_1_1v1_1_1scheduler_1_1Mesos.html">Mesos</a>();</div><div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;</div><div class="line"><a name="l00090"></
 a><span class="lineno">   90</span>&#160;  <span class="comment">// Attempts to send a call to the master.</span></div><div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;  <span class="comment">//</span></div><div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;  <span class="comment">// The scheduler should only invoke this method once it has received the</span></div><div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;  <span class="comment">// &#39;connected&#39; callback. Otherwise, all calls would be dropped while</span></div><div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;  <span class="comment">// disconnected.</span></div><div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;  <span class="comment">//</span></div><div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;  <span class="comment">// Some local validation of calls
  is performed which may generate</span></div><div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;  <span class="comment">// events without ever being sent to the master. This includes when</span></div><div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;  <span class="comment">// calls are sent but no master is currently detected (i.e., we&#39;re</span></div><div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;  <span class="comment">// disconnected).</span></div><div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="namespaceprocess_1_1windows.html#a04c64346155d34517acdf8b587162868">send</a>(<span class="keyword">const</span> <a class="code" href="namespacemesos_1_1internal_1_1tests_1_1v1_1_1scheduler.html#acb18ceaa5f6f2338f2a9727af398eb79">Call</a>&amp; call) <span class="keyword">overr
 ide</span>;</div><div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;</div><div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;  <span class="comment">// Attempts to send a call to the master, returning the response.</span></div><div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;  <span class="comment">//</span></div><div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;  <span class="comment">// The scheduler should only invoke this method once it has received the</span></div><div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;  <span class="comment">// &#39;connected&#39; callback. Otherwise, a `Failure` will be returned.</span></div><div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;  <span class="comment">//</span></div><div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;  <span class="comment">// So
 me local validation of calls is performed, and the request will not be</span></div><div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;  <span class="comment">// sent to the master if the validation fails.</span></div><div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;  <span class="comment">//</span></div><div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;  <span class="comment">// A `Failure` will be returned on validation failures or if an error happens</span></div><div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;  <span class="comment">// when sending the request to the master, e.g., a master disconnection, or a</span></div><div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;  <span class="comment">// deserialization error.</span></div><div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;  <span class="comment">//</span><
 /div><div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;  <span class="comment">// If it was possible to receive a response from the server, the returned</span></div><div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;  <span class="comment">// object will contain the HTTP response status code.</span></div><div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;  <span class="comment">//</span></div><div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;  <span class="comment">// There are three cases to consider depending on the HTTP response status</span></div><div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;  <span class="comment">// code:</span></div><div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;  <span class="comment">//</span></div><div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;  <span clas
 s="comment">//  (1) &#39;202 ACCEPTED&#39;: Indicates the call was accepted for processing and</span></div><div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;  <span class="comment">//      neither `APIResult::response` nor `APIResult::error` will be set.</span></div><div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;  <span class="comment">//</span></div><div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;  <span class="comment">//  (2) &#39;200 OK&#39;: Indicates the call completed successfully.</span></div><div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;  <span class="comment">//      `APIResult::response` will be set if the `scheduler::Call::Type`</span></div><div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;  <span class="comment">//      has a corresponding `scheduler::Response::Type`, `APIResult::error`</span></div><div class="line"><a name
 ="l00126"></a><span class="lineno">  126</span>&#160;  <span class="comment">//      will not be set.</span></div><div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;  <span class="comment">//</span></div><div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;  <span class="comment">//  (3) For all other HTTP status codes, the `APIResult::response` field will</span></div><div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;  <span class="comment">//      not be set and the `APIResult::error` field may be set to provide more</span></div><div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;  <span class="comment">//      information.</span></div><div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;  <span class="comment">//</span></div><div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;  <span class="comment">// Note: This method cannot
  be used to send `SUBSCRIBE` calls, use `send()`</span></div><div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;  <span class="comment">// instead.</span></div><div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;  <span class="keyword">virtual</span> <a class="code" href="classprocess_1_1Future.html">process::Future&lt;APIResult&gt;</a> call(<span class="keyword">const</span> <a class="code" href="namespacemesos_1_1internal_1_1tests_1_1v1_1_1scheduler.html#acb18ceaa5f6f2338f2a9727af398eb79">Call</a>&amp; callMessage) <span class="keyword">override</span>;</div><div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;</div><div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;  <span class="comment">// Force a reconnection with the master.</span></div><div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;  <span class="comment">//</span></div><div class="line"><a 
 name="l00138"></a><span class="lineno">  138</span>&#160;  <span class="comment">// In the case of a one-way network partition, the connection between the</span></div><div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;  <span class="comment">// scheduler and master might not necessarily break. If the scheduler detects</span></div><div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;  <span class="comment">// a partition, due to lack of `HEARTBEAT` events (e.g., 5) within a time</span></div><div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;  <span class="comment">// window, it can explicitly ask the library to force a reconnection with</span></div><div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;  <span class="comment">// the master.</span></div><div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;  <span class="comment">//</span></div><div class="line
 "><a name="l00144"></a><span class="lineno">  144</span>&#160;  <span class="comment">// This call would be ignored if the scheduler is already disconnected with</span></div><div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;  <span class="comment">// the master (e.g., no new master has been elected). Otherwise, the scheduler</span></div><div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;  <span class="comment">// would get a &#39;disconnected&#39; callback followed by a &#39;connected&#39; callback.</span></div><div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">void</span> reconnect() <span class="keyword">override</span>;</div><div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;</div><div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;<span class="keyword">protected</span>:</div><div cl
 ass="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;  <span class="comment">// NOTE: This constructor is used for testing.</span></div><div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;  <a class="code" href="namespacemesos_1_1internal_1_1tests_1_1v1_1_1scheduler.html#ab87ee31e10bdc282bae31a2c973602df">Mesos</a>(</div><div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;      <span class="keyword">const</span> std::string&amp; master,</div><div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;      <a class="code" href="namespacemesos.html#a13035ce0cc66cca4a467787b4716039e">ContentType</a> contentType,</div><div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;      <span class="keyword">const</span> std::function&lt;<span class="keywordtype">void</span>()&gt;&amp; connected,</div><div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;      <
 span class="keyword">const</span> std::function&lt;<span class="keywordtype">void</span>()&gt;&amp; disconnected,</div><div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;      <span class="keyword">const</span> std::function&lt;<span class="keywordtype">void</span>(<span class="keyword">const</span> std::queue&lt;Event&gt;&amp;)&gt;&amp; received,</div><div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;      <span class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;Credential&gt;</a>&amp; credential,</div><div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;      <span class="keyword">const</span> <a class="code" href="classOption.html">Option</a>&lt;std::shared_ptr&lt;mesos::master::detector::MasterDetector&gt;&gt;&amp;</div><div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;        detector);</div><div class="line"><a name="l00160"></a><span class="l
 ineno">  160</span>&#160;</div><div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;  <span class="comment">// Stops the library so that:</span></div><div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;  <span class="comment">//   - No more calls can be sent to the master.</span></div><div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;  <span class="comment">//   - No more callbacks can be made to the scheduler. In some cases, there</span></div><div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;  <span class="comment">//     may be one additional callback if the library was in the middle of</span></div><div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;  <span class="comment">//     processing an event.</span></div><div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;  <span class="comment">//</span></div><div class="line"><a na
 me="l00167"></a><span class="lineno">  167</span>&#160;  <span class="comment">// NOTE: This is used for testing.</span></div><div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">void</span> stop();</div><div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;</div><div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;  MesosProcess* <a class="code" href="namespaceos.html#ae19e4161a51b86a1f330f3bf1dc75389">process</a>;</div><div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;};</div><div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;</div><div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;} <span class="comment">// namespace scheduler {</span></div><di
 v class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;} <span class="comment">// namespace v1 {</span></div><div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;} <span class="comment">// namespace mesos {</span></div><div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;</div><div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;<span class="preprocessor">#endif // __MESOS_V1_SCHEDULER_HPP__</span></div><div class="ttc" id="include_2mesos_2http_8hpp_html"><div class="ttname"><a href="include_2mesos_2http_8hpp.html">http.hpp</a></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="classOption_html"><div class="ttname"><a href="classOption.html">Option&lt; Credential &gt;</a></div></div>
 <div class="ttc" id="namespacemesos_1_1v1_1_1master_html"><div class="ttname"><a href="namespacemesos_1_1v1_1_1master.html">mesos::v1::master</a></div><div class="ttdef"><b>Definition:</b> master.hpp:27</div></div>
 <div class="ttc" id="namespacemesos_1_1internal_1_1tests_1_1v1_1_1scheduler_html_acb18ceaa5f6f2338f2a9727af398eb79"><div class="ttname"><a href="namespacemesos_1_1internal_1_1tests_1_1v1_1_1scheduler.html#acb18ceaa5f6f2338f2a9727af398eb79">mesos::internal::tests::v1::scheduler::Call</a></div><div class="ttdeci">mesos::v1::scheduler::Call Call</div><div class="ttdef"><b>Definition:</b> mesos.hpp:2660</div></div>
 <div class="ttc" id="classmesos_1_1v1_1_1scheduler_1_1Mesos_html"><div class="ttname"><a href="classmesos_1_1v1_1_1scheduler_1_1Mesos.html">mesos::v1::scheduler::Mesos</a></div><div class="ttdef"><b>Definition:</b> scheduler.hpp:70</div></div>
 <div class="ttc" id="namespacemesos_1_1internal_1_1tests_1_1v1_1_1scheduler_html_ab87ee31e10bdc282bae31a2c973602df"><div class="ttname"><a href="namespacemesos_1_1internal_1_1tests_1_1v1_1_1scheduler.html#ab87ee31e10bdc282bae31a2c973602df">mesos::internal::tests::v1::scheduler::Mesos</a></div><div class="ttdeci">mesos::v1::scheduler::Mesos Mesos</div><div class="ttdef"><b>Definition:</b> mesos.hpp:2662</div></div>
-<div class="ttc" id="namespacenet_html_aa0a46766b4aca53ea50e1921567ddb40"><div class="ttname"><a href="namespacenet.html#aa0a46766b4aca53ea50e1921567ddb40">net::send</a></div><div class="ttdeci">ssize_t send(const int_fd &amp;fd, const void *buf, size_t len, int flags)</div><div class="ttdef"><b>Definition:</b> socket.hpp:159</div></div>
 <div class="ttc" id="v1_2scheduler_2scheduler_8hpp_html"><div class="ttname"><a href="v1_2scheduler_2scheduler_8hpp.html">scheduler.hpp</a></div></div>
 <div class="ttc" id="namespacemesos_html"><div class="ttname"><a href="namespacemesos.html">mesos</a></div><div class="ttdef"><b>Definition:</b> spec.hpp:30</div></div>
 <div class="ttc" id="option_8hpp_html"><div class="ttname"><a href="option_8hpp.html">option.hpp</a></div></div>
@@ -69,6 +68,7 @@
 <div class="ttc" id="classmesos_1_1v1_1_1scheduler_1_1MesosBase_html_ae3ae5afeb5f3dbe81fb1f68107e2c361"><div class="ttname"><a href="classmesos_1_1v1_1_1scheduler_1_1MesosBase.html#ae3ae5afeb5f3dbe81fb1f68107e2c361">mesos::v1::scheduler::MesosBase::~MesosBase</a></div><div class="ttdeci">virtual ~MesosBase()</div><div class="ttdef"><b>Definition:</b> scheduler.hpp:53</div></div>
 <div class="ttc" id="include_2mesos_2v1_2mesos_8hpp_html"><div class="ttname"><a href="include_2mesos_2v1_2mesos_8hpp.html">mesos.hpp</a></div></div>
 <div class="ttc" id="classprocess_1_1Future_html"><div class="ttname"><a href="classprocess_1_1Future.html">process::Future</a></div><div class="ttdef"><b>Definition:</b> future.hpp:58</div></div>
+<div class="ttc" id="namespaceprocess_1_1windows_html_a04c64346155d34517acdf8b587162868"><div class="ttname"><a href="namespaceprocess_1_1windows.html#a04c64346155d34517acdf8b587162868">process::windows::send</a></div><div class="ttdeci">Future&lt; size_t &gt; send(const int_fd &amp;fd, const void *buf, size_t size)</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/09fd0301/content/api/latest/c++/windows_2dup_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/windows_2dup_8hpp_source.html b/content/api/latest/c++/windows_2dup_8hpp_source.html
index b052c41..f0bb793 100644
--- a/content/api/latest/c++/windows_2dup_8hpp_source.html
+++ b/content/api/latest/c++/windows_2dup_8hpp_source.html
@@ -52,7 +52,10 @@
 <div class="title">dup.hpp</div>  </div>
 </div><!--header-->
 <div class="contents">
-<a href="windows_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>&#160;<span class="comment">// Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<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>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<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>&#160;<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>&#160;<span class="comment">// distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<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>&#160;<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>&#160;<span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;</div><div class
 ="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="preprocessor">#ifndef __STOUT_OS_WINDOWS_DUP_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="preprocessor">#define __STOUT_OS_WINDOWS_DUP_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;</div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="error_8hpp.html">stout/error.hpp</a>&gt;</span></div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="try_8hpp.html">stout/try.hpp</a>&gt;</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="unreachable_8hpp.html">stout/unreachable.hpp</a>&gt;</span></div><div class="line"><a name="l
 00019"></a><span class="lineno">   19</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html">stout/windows.hpp</a>&gt;</span> <span class="comment">// For `WinSock2.h`.</span></div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;</div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="int__fd_8hpp.html">stout/os/int_fd.hpp</a>&gt;</span></div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<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>&#160;</div><div class="line"><a name="l00025"></a><span class="lineno"><a class="line" href="namespaceos.html#ac6a52f61ab8f31856757007
 b4be7f5e6">   25</a></span>&#160;<span class="keyword">inline</span> <a class="code" href="classTry.html">Try&lt;int_fd&gt;</a> <a class="code" href="namespaceos.html#a622be738276833e635a7db06cff31a35">dup</a>(<span class="keyword">const</span> <a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a>&amp; fd)</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>&#160;  <span class="keywordflow">switch</span> (fd.type()) {</div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;    <span class="keywordflow">case</span> <a class="code" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5ad09c4cb1265f1772bb757a7af277b49f">WindowsFD::Type::HANDLE</a>: {</div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;      <a class="code" href="namespacerouting_1_1queueing_1_1ingress.html#a9342
 08b6017d0a9aed90b6594bb8292f">HANDLE</a> duplicate = INVALID_HANDLE_VALUE;</div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;      <span class="keyword">const</span> BOOL result = ::DuplicateHandle(</div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;          ::GetCurrentProcess(),  <span class="comment">// Source process == current.</span></div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;          fd,                     <span class="comment">// Handle to duplicate.</span></div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;          ::GetCurrentProcess(),  <span class="comment">// Target process == current.</span></div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;          &amp;duplicate,</div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;          0,                      <span class="comm
 ent">// Ignored (DUPLICATE_SAME_ACCESS).</span></div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;          FALSE,                  <span class="comment">// Non-inheritable handle.</span></div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;          DUPLICATE_SAME_ACCESS); <span class="comment">// Same access level as source.</span></div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;      <span class="keywordflow">if</span> (result == FALSE) {</div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="classWindowsError.html">WindowsError</a>();</div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;      }</div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#16
 0;</div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;      <span class="keywordflow">return</span> <a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a>(duplicate, fd.is_overlapped());</div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;    }</div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;    <span class="keywordflow">case</span> <a class="code" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5a75fbea08c09e684e6b3f3961761354fa">WindowsFD::Type::SOCKET</a>: {</div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;      WSAPROTOCOL_INFOW info;</div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;      <span class="keyword">const</span> <span class="keywordtype">int</span> result =</div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;        ::WSADuplica
 teSocketW(fd, ::GetCurrentProcessId(), &amp;info);</div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;      <span class="keywordflow">if</span> (result != 0) {</div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="error_8hpp.html#a176f6fc34ea37d40201853a52a475762">SocketError</a>();</div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;      }</div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;</div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;      return ::WSASocketW(0, 0, 0, &amp;info, 0, 0);</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>&#160;  }</div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;</div><div c
 lass="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;  <a class="code" href="unreachable_8hpp.html#a0bc63b24b654ca433be7b97a3edde132">UNREACHABLE</a>();</div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;}</div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;</div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;} <span class="comment">// namespace os {</span></div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;</div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;<span class="preprocessor">#endif // __STOUT_OS_WINDOWS_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>
+<a href="windows_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>&#160;<span class="comment">// Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<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>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<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>&#160;<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>&#160;<span class="comment">// distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<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>&#160;<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>&#160;<span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;</div><div class
 ="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="preprocessor">#ifndef __STOUT_OS_WINDOWS_DUP_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="preprocessor">#define __STOUT_OS_WINDOWS_DUP_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;</div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="error_8hpp.html">stout/error.hpp</a>&gt;</span></div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="try_8hpp.html">stout/try.hpp</a>&gt;</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="unreachable_8hpp.html">stout/unreachable.hpp</a>&gt;</span></div><div class="line"><a name="l
 00019"></a><span class="lineno">   19</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html">stout/windows.hpp</a>&gt;</span> <span class="comment">// For `WinSock2.h`.</span></div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;</div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="int__fd_8hpp.html">stout/os/int_fd.hpp</a>&gt;</span></div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<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>&#160;</div><div class="line"><a name="l00025"></a><span class="lineno"><a class="line" href="namespaceos.html#ac6a52f61ab8f31856757007
 b4be7f5e6">   25</a></span>&#160;<span class="keyword">inline</span> <a class="code" href="classTry.html">Try&lt;int_fd&gt;</a> <a class="code" href="namespaceos.html#a622be738276833e635a7db06cff31a35">dup</a>(<span class="keyword">const</span> <a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a>&amp; fd)</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>&#160;  <span class="keywordflow">switch</span> (fd.type()) {</div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;    <span class="keywordflow">case</span> <a class="code" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5ad09c4cb1265f1772bb757a7af277b49f">WindowsFD::Type::HANDLE</a>: {</div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;      <a class="code" href="namespacerouting_1_1queueing_1_1ingress.html#a9342
 08b6017d0a9aed90b6594bb8292f">HANDLE</a> duplicate = INVALID_HANDLE_VALUE;</div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;      <span class="keyword">const</span> BOOL result = ::DuplicateHandle(</div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;          ::GetCurrentProcess(),  <span class="comment">// Source process == current.</span></div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;          fd,                     <span class="comment">// Handle to duplicate.</span></div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;          ::GetCurrentProcess(),  <span class="comment">// Target process == current.</span></div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;          &amp;duplicate,</div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;          0,                      <span class="comm
 ent">// Ignored (DUPLICATE_SAME_ACCESS).</span></div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;          FALSE,                  <span class="comment">// Non-inheritable handle.</span></div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;          DUPLICATE_SAME_ACCESS); <span class="comment">// Same access level as source.</span></div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;      <span class="keywordflow">if</span> (result == FALSE) {</div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="classWindowsError.html">WindowsError</a>();</div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;      }</div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#16
 0;</div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;      <a class="code" href="classos_1_1WindowsFD.html">WindowsFD</a> dup_fd(fd);</div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;      dup_fd.<a class="code" href="classos_1_1WindowsFD.html#afcf316b6f5178ce1b9002c4202aebcf6">handle_</a> = duplicate;</div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;      <span class="keywordflow">return</span> dup_fd;</div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;    }</div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;    <span class="keywordflow">case</span> <a class="code" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5a75fbea08c09e684e6b3f3961761354fa">WindowsFD::Type::SOCKET</a>: {</div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;      WSAPROTOCOL_INFOW info;</div><div class
 ="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;      <span class="keyword">const</span> <span class="keywordtype">int</span> result =</div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;        ::WSADuplicateSocketW(fd, ::GetCurrentProcessId(), &amp;info);</div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;      <span class="keywordflow">if</span> (result != 0) {</div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="error_8hpp.html#a176f6fc34ea37d40201853a52a475762">SocketError</a>();</div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;      }</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>&#160;      SOCKET duplicate = ::WSASocketW(0, 0, 0, &amp;info, 0, 0);</
 div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;      <span class="keywordflow">if</span> (duplicate == INVALID_SOCKET) {</div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="classWindowsSocketError.html">WindowsSocketError</a>();</div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;      }</div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;</div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;      <a class="code" href="classos_1_1WindowsFD.html">WindowsFD</a> dup_fd(fd);</div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;      dup_fd.<a class="code" href="classos_1_1WindowsFD.html#a05016bee9531c79ce4576c9b8d9c9922">socket_</a> = duplicate;</div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;      
 <span class="keywordflow">return</span> dup_fd;</div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;    }</div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;  }</div><div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;</div><div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;  <a class="code" href="unreachable_8hpp.html#a0bc63b24b654ca433be7b97a3edde132">UNREACHABLE</a>();</div><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;}</div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;</div><div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;} <span class="comment">// namespace os {</span></div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;</div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;<span class="preprocessor">#endif // _
 _STOUT_OS_WINDOWS_DUP_HPP__</span></div><div class="ttc" id="classos_1_1WindowsFD_html_a05016bee9531c79ce4576c9b8d9c9922"><div class="ttname"><a href="classos_1_1WindowsFD.html#a05016bee9531c79ce4576c9b8d9c9922">os::WindowsFD::socket_</a></div><div class="ttdeci">SOCKET socket_</div><div class="ttdef"><b>Definition:</b> fd.hpp:242</div></div>
+<div class="ttc" id="classos_1_1WindowsFD_html"><div class="ttname"><a href="classos_1_1WindowsFD.html">os::WindowsFD</a></div><div class="ttdef"><b>Definition:</b> fd.hpp:52</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="classWindowsSocketError_html"><div class="ttname"><a href="classWindowsSocketError.html">WindowsSocketError</a></div><div class="ttdef"><b>Definition:</b> error.hpp:123</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:108</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="classos_1_1WindowsFD_html_ac0377db41e1c167339c97dbd69c79ae5a75fbea08c09e684e6b3f3961761354fa"><div class="ttname"><a href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5a75fbea08c09e684e6b3f3961761354fa">os::WindowsFD::Type::SOCKET</a></div></div>
@@ -67,6 +70,7 @@
 <div class="ttc" id="int__fd_8hpp_html_aea4dbda01c90455f158ffa9b924c2f07"><div class="ttname"><a href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a></div><div class="ttdeci">int int_fd</div><div class="ttdef"><b>Definition:</b> int_fd.hpp:35</div></div>
 <div class="ttc" id="unreachable_8hpp_html"><div class="ttname"><a href="unreachable_8hpp.html">unreachable.hpp</a></div></div>
 <div class="ttc" id="namespaceos_html_a622be738276833e635a7db06cff31a35"><div class="ttname"><a href="namespaceos.html#a622be738276833e635a7db06cff31a35">os::dup</a></div><div class="ttdeci">Try&lt; int &gt; dup(int fd)</div><div class="ttdef"><b>Definition:</b> dup.hpp:23</div></div>
+<div class="ttc" id="classos_1_1WindowsFD_html_afcf316b6f5178ce1b9002c4202aebcf6"><div class="ttname"><a href="classos_1_1WindowsFD.html#afcf316b6f5178ce1b9002c4202aebcf6">os::WindowsFD::handle_</a></div><div class="ttdeci">HANDLE handle_</div><div class="ttdef"><b>Definition:</b> fd.hpp:241</div></div>
 </div><!-- fragment --></div><!-- contents -->
 <!-- start footer part -->
 <hr class="footer"/><address class="footer"><small>


[33/50] mesos-site git commit: Updated the website built from mesos SHA: 7c9c72d.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/hierarchy.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/hierarchy.html b/content/api/latest/c++/hierarchy.html
index 7ca95af..e7eb5c3 100644
--- a/content/api/latest/c++/hierarchy.html
+++ b/content/api/latest/c++/hierarchy.html
@@ -381,1125 +381,1126 @@
 <tr id="row_128_0_40_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span id="arr_128_0_40_" class="arrow" onclick="toggleFolder('128_0_40_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1Process.html" target="_self">process::Process&lt; WhitelistWatcher &gt;</a></td><td class="desc"></td></tr>
 <tr id="row_128_0_40_0_" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmesos_1_1internal_1_1WhitelistWatcher.html" target="_self">mesos::internal::WhitelistWatcher</a></td><td class="desc"></td></tr>
 <tr id="row_129_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1EventLoop.html" target="_self">process::EventLoop</a></td><td class="desc"></td></tr>
-<tr id="row_130_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1EventQueue.html" target="_self">process::EventQueue</a></td><td class="desc"></td></tr>
-<tr id="row_131_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structprocess_1_1EventVisitor.html" target="_self">process::EventVisitor</a></td><td class="desc"></td></tr>
-<tr id="row_132_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structos_1_1Exec.html" target="_self">os::Exec</a></td><td class="desc"></td></tr>
-<tr id="row_133_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmesos_1_1internal_1_1slave_1_1Executor.html" target="_self">mesos::internal::slave::Executor</a></td><td class="desc"></td></tr>
-<tr id="row_134_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1Executor.html" target="_self">process::Executor</a></td><td class="desc"></td></tr>
-<tr id="row_135_"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_135_" class="arrow" onclick="toggleFolder('135_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmesos_1_1Executor.html" target="_self">mesos::Executor</a></td><td class="desc"></td></tr>
-<tr id="row_135_0_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmesos_1_1internal_1_1tests_1_1MockExecutor.html" target="_self">mesos::internal::tests::MockExecutor</a></td><td class="desc"></td></tr>
-<tr id="row_135_1_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmesos_1_1python_1_1ProxyExecutor.html" target="_self">mesos::python::ProxyExecutor</a></td><td class="desc">Proxy <a class="el" href="classmesos_1_1Executor.html">Executor</a> implementation that will call into Python </td></tr>
-<tr id="row_135_2_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmesos_1_1v1_1_1executor_1_1V0ToV1Adapter.html" target="_self">mesos::v1::executor::V0ToV1Adapter</a></td><td class="desc"></td></tr>
-<tr id="row_136_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_136_" class="arrow" onclick="toggleFolder('136_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmesos_1_1ExecutorDriver.html" target="_self">mesos::ExecutorDriver</a></td><td class="desc"></td></tr>
-<tr id="row_136_0_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmesos_1_1MesosExecutorDriver.html" target="_self">mesos::MesosExecutorDriver</a></td><td class="desc"></td></tr>
-<tr id="row_137_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structmesos_1_1internal_1_1slave_1_1paths_1_1ExecutorRunPath.html" target="_self">mesos::internal::slave::paths::ExecutorRunPath</a></td><td class="desc"></td></tr>
-<tr id="row_138_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structmesos_1_1internal_1_1slave_1_1state_1_1ExecutorState.html" target="_self">mesos::internal::slave::state::ExecutorState</a></td><td class="desc"></td></tr>
-<tr id="row_139_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structlambda_1_1internal_1_1Expand.html" target="_self">lambda::internal::Expand&lt; I &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_140_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structlambda_1_1internal_1_1Expand_3_010_01_4.html" target="_self">lambda::internal::Expand&lt; 0 &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_141_"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_141_" class="arrow" onclick="toggleFolder('141_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><b>F</b></td><td class="desc"></td></tr>
-<tr id="row_141_0_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structOverload.html" target="_self">Overload&lt; F, Fs &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_141_1_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structOverload_3_01F_01_4.html" target="_self">Overload&lt; F &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_142_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_142_" class="arrow" onclick="toggleFolder('142_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structprocess_1_1Failure.html" target="_self">process::Failure</a></td><td class="desc"></td></tr>
-<tr id="row_142_0_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structprocess_1_1ErrnoFailure.html" target="_self">process::ErrnoFailure</a></td><td class="desc"></td></tr>
-<tr id="row_143_"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_143_" class="arrow" onclick="toggleFolder('143_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><b>false_type</b></td><td class="desc"></td></tr>
-<tr id="row_143_0_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structis__specialization__of.html" target="_self">is_specialization_of&lt; T, C &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_144_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmesos_1_1uri_1_1Fetcher.html" target="_self">mesos::uri::Fetcher</a></td><td class="desc">Provides an abstraction for fetching URIs </td></tr>
-<tr id="row_145_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmesos_1_1internal_1_1slave_1_1Fetcher.html" target="_self">mesos::internal::slave::Fetcher</a></td><td class="desc"></td></tr>
-<tr id="row_146_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmesos_1_1internal_1_1slave_1_1appc_1_1Fetcher.html" target="_self">mesos::internal::slave::appc::Fetcher</a></td><td class="desc"></td></tr>
-<tr id="row_147_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classJvm_1_1Field.html" target="_self">Jvm::Field</a></td><td class="desc"></td></tr>
-<tr id="row_148_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="clasself_1_1File.html" target="_self">elf::File</a></td><td class="desc"></td></tr>
-<tr id="row_149_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmesos_1_1internal_1_1Files.html" target="_self">mesos::internal::Files</a></td><td class="desc"></td></tr>
-<tr id="row_150_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_150_" class="arrow" onclick="toggleFolder('150_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1Filter.html" target="_self">process::Filter</a></td><td class="desc"></td></tr>
-<tr id="row_150_0_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1MockFilter.html" target="_self">process::MockFilter</a></td><td class="desc"></td></tr>
-<tr id="row_150_1_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1TestsFilter.html" target="_self">process::TestsFilter</a></td><td class="desc"></td></tr>
-<tr id="row_151_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structrouting_1_1filter_1_1Filter.html" target="_self">routing::filter::Filter&lt; Classifier &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_152_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_152_" class="arrow" onclick="toggleFolder('152_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1firewall_1_1FirewallRule.html" target="_self">process::firewall::FirewallRule</a></td><td class="desc">A '<a class="el" href="classprocess_1_1firewall_1_1FirewallRule.html" title="A &#39;FirewallRule&#39; describes an interface which provides control over incoming HTTP requests while also...">FirewallRule</a>' describes an interface which provides control over incoming HTTP requests while also taking the underlying connection into account </td></tr>
-<tr id="row_152_0_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1firewall_1_1DisabledEndpointsFirewallRule.html" target="_self">process::firewall::DisabledEndpointsFirewallRule</a></td><td class="desc">Simple firewall rule to forbid any HTTP request to a path in the provided list of endpoints </td></tr>
-<tr id="row_153_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structflags_1_1Flag.html" target="_self">flags::Flag</a></td><td class="desc"></td></tr>
-<tr id="row_154_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_154_" class="arrow" onclick="toggleFolder('154_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classflags_1_1FlagsBase.html" target="_self">flags::FlagsBase</a></td><td class="desc"></td></tr>
-<tr id="row_154_0_" style="display:none;"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_154_0_" class="arrow" onclick="toggleFolder('154_0_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structmesos_1_1internal_1_1logger_1_1LoggerFlags.html" target="_self">mesos::internal::logger::LoggerFlags</a></td><td class="desc"></td></tr>
-<tr id="row_154_0_0_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structmesos_1_1internal_1_1logger_1_1Flags.html" target="_self">mesos::internal::logger::Flags</a></td><td class="desc"></td></tr>
-<tr id="row_154_1_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structmesos_1_1internal_1_1logger_1_1rotate_1_1Flags.html" target="_self">mesos::internal::logger::rotate::Flags</a></td><td class="desc"></td></tr>
-<tr id="row_154_2_" style="display:none;"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_154_2_" class="arrow" onclick="toggleFolder('154_2_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmesos_1_1internal_1_1logging_1_1Flags.html" target="_self">mesos::internal::logging::Flags</a></td><td class="desc"></td></tr>
-<tr id="row_154_2_0_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structmesos_1_1internal_1_1docker_1_1Flags.html" target="_self">mesos::internal::docker::Flags</a></td><td class="desc"></td></tr>
-<tr id="row_154_2_1_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmesos_1_1internal_1_1examples_1_1Flags.html" target="_self">mesos::internal::examples::Flags</a></td><td class="desc"></td></tr>
-<tr id="row_154_2_2_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span id="arr_154_2_2_" class="arrow" onclick="toggleFolder('154_2_2_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmesos_1_1internal_1_1local_1_1Flags.html" target="_self">mesos::internal::local::Flags</a></td><td class="desc"></td></tr>
-<tr id="row_154_2_2_0_" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmesos_1_1v1_1_1scheduler_1_1Flags.html" target="_self">mesos::v1::scheduler::Flags</a></td><td class="desc"></td></tr>
-<tr id="row_154_2_3_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmesos_1_1internal_1_1log_1_1tool_1_1Benchmark_1_1Flags.html" target="_self">mesos::internal::log::tool::Benchmark::Flags</a></td><td class="desc"></td></tr>
-<tr id="row_154_2_4_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmesos_1_1internal_1_1log_1_1tool_1_1Initialize_1_1Flags.html" target="_self">mesos::internal::log::tool::Initialize::Flags</a></td><td class="desc"></td></tr>
-<tr id="row_154_2_5_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmesos_1_1internal_1_1log_1_1tool_1_1Read_1_1Flags.html" target="_self">mesos::internal::log::tool::Read::Flags</a></td><td class="desc"></td></tr>
-<tr id="row_154_2_6_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmesos_1_1internal_1_1log_1_1tool_1_1Replica_1_1Flags.html" target="_self">mesos::internal::log::tool::Replica::Flags</a></td><td class="desc"></td></tr>
-<tr id="row_154_2_7_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmesos_1_1internal_1_1master_1_1Flags.html" target="_self">mesos::internal::master::Flags</a></td><td class="desc"></td></tr>
-<tr id="row_154_2_8_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmesos_1_1internal_1_1scheduler_1_1Flags.html" target="_self">mesos::internal::scheduler::Flags</a></td><td class="desc"></td></tr>
-<tr id="row_154_2_9_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmesos_1_1internal_1_1slave_1_1Flags.html" target="_self">mesos::internal::slave::Flags</a></td><td class="desc"></td></tr>
-<tr id="row_154_2_10_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmesos_1_1internal_1_1tests_1_1Flags.html" target="_self">mesos::internal::tests::Flags</a></td><td class="desc"></td></tr>
-<tr id="row_154_3_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structmesos_1_1internal_1_1slave_1_1IOSwitchboardServer_1_1Flags.html" target="_self">mesos::internal::slave::IOSwitchboardServer::Flags</a></td><td class="desc"></td></tr>
-<tr id="row_154_4_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structmesos_1_1internal_1_1slave_1_1MesosContainerizerLaunch_1_1Flags.html" target="_self">mesos::internal::slave::MesosContainerizerLaunch::Flags</a></td><td class="desc"></td></tr>
-<tr id="row_154_5_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structmesos_1_1internal_1_1slave_1_1MesosContainerizerMount_1_1Flags.html" target="_self">mesos::internal::slave::MesosContainerizerMount::Flags</a></td><td class="desc"></td></tr>
-<tr id="row_154_6_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structmesos_1_1internal_1_1slave_1_1NetworkCniIsolatorSetup_1_1Flags.html" target="_self">mesos::internal::slave::NetworkCniIsolatorSetup::Flags</a></td><td class="desc"></td></tr>
-<tr id="row_154_7_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structmesos_1_1internal_1_1slave_1_1PortMappingStatistics_1_1Flags.html" target="_self">mesos::internal::slave::PortMappingStatistics::Flags</a></td><td class="desc"></td></tr>
-<tr id="row_154_8_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structmesos_1_1internal_1_1slave_1_1PortMappingUpdate_1_1Flags.html" target="_self">mesos::internal::slave::PortMappingUpdate::Flags</a></td><td class="desc"></td></tr>
-<tr id="row_154_9_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structmesos_1_1internal_1_1storage_1_1UriDiskProfileAdaptor_1_1Flags.html" target="_self">mesos::internal::storage::UriDiskProfileAdaptor::Flags</a></td><td class="desc"></td></tr>
-<tr id="row_154_10_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structmesos_1_1internal_1_1tests_1_1ActiveUserTestHelper_1_1Flags.html" target="_self">mesos::internal::tests::ActiveUserTestHelper::Flags</a></td><td class="desc"></td></tr>
-<tr id="row_154_11_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structmesos_1_1internal_1_1tests_1_1CapabilitiesTestHelper_1_1Flags.html" target="_self">mesos::internal::tests::CapabilitiesTestHelper::Flags</a></td><td class="desc"></td></tr>
-<tr id="row_154_12_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structmesos_1_1internal_1_1tests_1_1HttpServerTestHelper_1_1Flags.html" target="_self">mesos::internal::tests::HttpServerTestHelper::Flags</a></td><td class="desc"></td></tr>
-<tr id="row_154_13_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structmesos_1_1internal_1_1tests_1_1KillPolicyTestHelper_1_1Flags.html" target="_self">mesos::internal::tests::KillPolicyTestHelper::Flags</a></td><td class="desc"></td></tr>
-<tr id="row_154_14_" style="display:none;"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_154_14_" class="arrow" onclick="toggleFolder('154_14_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmesos_1_1uri_1_1CopyFetcherPlugin_1_1Flags.html" target="_self">mesos::uri::CopyFetcherPlugin::Flags</a></td><td class="desc"></td></tr>
-<tr id="row_154_14_0_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmesos_1_1uri_1_1fetcher_1_1Flags.html" target="_self">mesos::uri::fetcher::Flags</a></td><td class="desc">The combined flags for all built-in plugins </td></tr>
-<tr id="row_154_15_" style="display:none;"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_154_15_" class="arrow" onclick="toggleFolder('154_15_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmesos_1_1uri_1_1CurlFetcherPlugin_1_1Flags.html" target="_self">mesos::uri::CurlFetcherPlugin::Flags</a></td><td class="desc"></td></tr>
-<tr id="row_154_15_0_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmesos_1_1uri_1_1fetcher_1_1Flags.html" target="_self">mesos::uri::fetcher::Flags</a></td><td class="desc">The combined flags for all built-in plugins </td></tr>
-<tr id="row_154_16_" style="display:none;"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_154_16_" class="arrow" onclick="toggleFolder('154_16_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmesos_1_1uri_1_1DockerFetcherPlugin_1_1Flags.html" target="_self">mesos::uri::DockerFetcherPlugin::Flags</a></td><td class="desc"></td></tr>
-<tr id="row_154_16_0_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmesos_1_1uri_1_1fetcher_1_1Flags.html" target="_self">mesos::uri::fetcher::Flags</a></td><td class="desc">The combined flags for all built-in plugins </td></tr>
-<tr id="row_154_17_" style="display:none;"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_154_17_" class="arrow" onclick="toggleFolder('154_17_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmesos_1_1uri_1_1HadoopFetcherPlugin_1_1Flags.html" target="_self">mesos::uri::HadoopFetcherPlugin::Flags</a></td><td class="desc"></td></tr>
-<tr id="row_154_17_0_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmesos_1_1uri_1_1fetcher_1_1Flags.html" target="_self">mesos::uri::fetcher::Flags</a></td><td class="desc">The combined flags for all built-in plugins </td></tr>
-<tr id="row_154_18_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classsystemd_1_1Flags.html" target="_self">systemd::Flags</a></td><td class="desc"><a class="el" href="classsystemd_1_1Flags.html" title="Flags to initialize systemd state. ">Flags</a> to initialize systemd state </td></tr>
-<tr id="row_155_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structos_1_1Fork.html" target="_self">os::Fork</a></td><td class="desc"></td></tr>
-<tr id="row_156_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmesos_1_1internal_1_1slave_1_1Framework.html" target="_self">mesos::internal::slave::Framework</a></td><td class="desc"></td></tr>
-<tr id="row_157_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess_1_1Framework.html" target="_self">mesos::internal::master::allocator::internal::HierarchicalAllocatorProcess::Framework</a></td><td class="desc"></td></tr>
-<tr id="row_158_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structmesos_1_1internal_1_1master_1_1Framework.html" target="_self">mesos::internal::master::Framework</a></td><td class="desc"></td></tr>
-<tr id="row_159_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structmesos_1_1internal_1_1master_1_1Metrics_1_1Frameworks.html" target="_self">mesos::internal::master::Metrics::Frameworks</a></td><td class="desc"></td></tr>
-<tr id="row_160_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structmesos_1_1internal_1_1slave_1_1state_1_1FrameworkState.html" target="_self">mesos::internal::slave::state::FrameworkState</a></td><td class="desc"></td></tr>
-<tr id="row_161_"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_161_" class="arrow" onclick="toggleFolder('161_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><b>function</b></td><td class="desc"></td></tr>
-<tr id="row_161_0_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structprocess_1_1Deferred.html" target="_self">process::Deferred&lt; F &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_162_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1Future.html" target="_self">process::Future&lt; T &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_163_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1Future.html" target="_self">process::Future&lt; bool &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_164_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1Future.html" target="_self">process::Future&lt; Bytes &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_165_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1Future.html" target="_self">process::Future&lt; Docker::Image &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_166_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1Future.html" target="_self">process::Future&lt; http::Response &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_167_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1Future.html" target="_self">process::Future&lt; mesos::internal::slave::Containerizer::LaunchResult &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_168_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1Future.html" target="_self">process::Future&lt; mesos::internal::slave::ProvisionInfo &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_169_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1Future.html" target="_self">process::Future&lt; mesos::slave::ContainerLimitation &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_170_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1Future.html" target="_self">process::Future&lt; mesos::slave::ContainerTermination &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_171_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1Future.html" target="_self">process::Future&lt; Nothing &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_172_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1Future.html" target="_self">process::Future&lt; Option&lt; int &gt; &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_173_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1Future.html" target="_self">process::Future&lt; Option&lt; MasterInfo &gt; &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_174_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1Future.html" target="_self">process::Future&lt; Option&lt; process::http::URL &gt; &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_175_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1Future.html" target="_self">process::Future&lt; Option&lt; std::string &gt; &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_176_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1Future.html" target="_self">process::Future&lt; process::Future&lt; Option&lt; int &gt; &gt; &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_177_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1Future.html" target="_self">process::Future&lt; process::Owned&lt; T &gt; &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_178_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1Future.html" target="_self">process::Future&lt; process::Shared&lt; mesos::internal::log::Replica &gt; &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_179_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1Future.html" target="_self">process::Future&lt; R &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_180_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1Future.html" target="_self">process::Future&lt; Res &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_181_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1Future.html" target="_self">process::Future&lt; size_t &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_182_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1Future.html" target="_self">process::Future&lt; std::set&lt; zookeeper::Group::Membership &gt; &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_183_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1Future.html" target="_self">process::Future&lt; std::shared_ptr&lt; process::network::internal::SocketImpl &gt; &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_184_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1Future.html" target="_self">process::Future&lt; std::vector&lt; Nothing &gt; &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_185_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1Future.html" target="_self">process::Future&lt; std::vector&lt; Option&lt; mesos::slave::ContainerLaunchInfo &gt; &gt; &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_186_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1Future.html" target="_self">process::Future&lt; std::vector&lt; process::Future&lt; T &gt; &gt; &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_187_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1Future.html" target="_self">process::Future&lt; std::vector&lt; T &gt; &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_188_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1Future.html" target="_self">process::Future&lt; zookeeper::Group::Membership &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_189_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classFutureResultAction.html" target="_self">FutureResultAction&lt; R, A &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_190_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_190_" class="arrow" onclick="toggleFolder('190_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmesos_1_1internal_1_1slave_1_1GarbageCollector.html" target="_self">mesos::internal::slave::GarbageCollector</a></td><td class="desc"></td></tr>
-<tr id="row_190_0_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmesos_1_1internal_1_1tests_1_1MockGarbageCollector.html" target="_self">mesos::internal::tests::MockGarbageCollector</a></td><td class="desc"></td></tr>
-<tr id="row_191_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1Gate.html" target="_self">process::Gate</a></td><td class="desc"></td></tr>
-<tr id="row_192_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structmesos_1_1internal_1_1slave_1_1Gpu.html" target="_self">mesos::internal::slave::Gpu</a></td><td class="desc"></td></tr>
-<tr id="row_193_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structgroup.html" target="_self">group</a></td><td class="desc"></td></tr>
-<tr id="row_194_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classzookeeper_1_1Group.html" target="_self">zookeeper::Group</a></td><td class="desc"></td></tr>
-<tr id="row_195_"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_195_" class="arrow" onclick="toggleFolder('195_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classrouting_1_1Handle.html" target="_self">routing::Handle</a></td><td class="desc"></td></tr>
-<tr id="row_195_0_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classrouting_1_1filter_1_1U32Handle.html" target="_self">routing::filter::U32Handle</a></td><td class="desc"></td></tr>
-<tr id="row_196_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structstd_1_1hash_3_01cgroups_1_1memory_1_1pressure_1_1Level_01_4.html" target="_self">std::hash&lt; cgroups::memory::pressure::Level &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_197_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structstd_1_1hash_3_01id_1_1UUID_01_4.html" target="_self">std::hash&lt; id::UUID &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_198_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structstd_1_1hash_3_01mesos_1_1authorization_1_1Action_01_4.html" target="_self">std::hash&lt; mesos::authorization::Action &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_199_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structstd_1_1hash_3_01mesos_1_1CommandInfo__URI_01_4.html" target="_self">std::hash&lt; mesos::CommandInfo_URI &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_200_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structstd_1_1hash_3_01mesos_1_1ContainerID_01_4.html" target="_self">std::hash&lt; mesos::ContainerID &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_201_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structstd_1_1hash_3_01mesos_1_1ExecutorID_01_4.html" target="_self">std::hash&lt; mesos::ExecutorID &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_202_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structstd_1_1hash_3_01mesos_1_1FrameworkID_01_4.html" target="_self">std::hash&lt; mesos::FrameworkID &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_203_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structstd_1_1hash_3_01mesos_1_1Image_1_1Type_01_4.html" target="_self">std::hash&lt; mesos::Image::Type &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_204_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structstd_1_1hash_3_01mesos_1_1internal_1_1log_1_1Metadata__Status_01_4.html" target="_self">std::hash&lt; mesos::internal::log::Metadata_Status &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_205_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structstd_1_1hash_3_01mesos_1_1internal_1_1slave_1_1DockerVolume_01_4.html" target="_self">std::hash&lt; mesos::internal::slave::DockerVolume &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_206_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structstd_1_1hash_3_01mesos_1_1internal_1_1tests_1_1ModuleID_01_4.html" target="_self">std::hash&lt; mesos::internal::tests::ModuleID &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_207_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structstd_1_1hash_3_01mesos_1_1MachineID_01_4.html" target="_self">std::hash&lt; mesos::MachineID &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_208_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structstd_1_1hash_3_01mesos_1_1OfferID_01_4.html" target="_self">std::hash&lt; mesos::OfferID &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_209_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structstd_1_1hash_3_01mesos_1_1OperationID_01_4.html" target="_self">std::hash&lt; mesos::OperationID &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_210_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structstd_1_1hash_3_01mesos_1_1ResourceProviderID_01_4.html" target="_self">std::hash&lt; mesos::ResourceProviderID &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_211_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structstd_1_1hash_3_01mesos_1_1SlaveID_01_4.html" target="_self">std::hash&lt; mesos::SlaveID &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_212_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structstd_1_1hash_3_01mesos_1_1TaskID_01_4.html" target="_self">std::hash&lt; mesos::TaskID &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_213_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structstd_1_1hash_3_01mesos_1_1TaskState_01_4.html" target="_self">std::hash&lt; mesos::TaskState &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_214_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structstd_1_1hash_3_01mesos_1_1TaskStatus__Reason_01_4.html" target="_self">std::hash&lt; mesos::TaskStatus_Reason &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_215_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structstd_1_1hash_3_01mesos_1_1TaskStatus__Source_01_4.html" target="_self">std::hash&lt; mesos::TaskStatus_Source &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_216_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structstd_1_1hash_3_01mesos_1_1UUID_01_4.html" target="_self">std::hash&lt; mesos::UUID &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_217_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structstd_1_1hash_3_01mesos_1_1v1_1_1AgentID_01_4.html" target="_self">std::hash&lt; mesos::v1::AgentID &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_218_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structstd_1_1hash_3_01mesos_1_1v1_1_1CommandInfo_1_1URI_01_4.html" target="_self">std::hash&lt; mesos::v1::CommandInfo::URI &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_219_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structstd_1_1hash_3_01mesos_1_1v1_1_1ContainerID_01_4.html" target="_self">std::hash&lt; mesos::v1::ContainerID &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_220_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structstd_1_1hash_3_01mesos_1_1v1_1_1ExecutorID_01_4.html" target="_self">std::hash&lt; mesos::v1::ExecutorID &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_221_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structstd_1_1hash_3_01mesos_1_1v1_1_1FrameworkID_01_4.html" target="_self">std::hash&lt; mesos::v1::FrameworkID &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_222_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structstd_1_1hash_3_01mesos_1_1v1_1_1Image_1_1Type_01_4.html" target="_self">std::hash&lt; mesos::v1::Image::Type &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_223_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structstd_1_1hash_3_01mesos_1_1v1_1_1MachineID_01_4.html" target="_self">std::hash&lt; mesos::v1::MachineID &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_224_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structstd_1_1hash_3_01mesos_1_1v1_1_1OfferID_01_4.html" target="_self">std::hash&lt; mesos::v1::OfferID &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_225_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structstd_1_1hash_3_01mesos_1_1v1_1_1OperationID_01_4.html" target="_self">std::hash&lt; mesos::v1::OperationID &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_226_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structstd_1_1hash_3_01mesos_1_1v1_1_1ResourceProviderID_01_4.html" target="_self">std::hash&lt; mesos::v1::ResourceProviderID &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_227_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structstd_1_1hash_3_01mesos_1_1v1_1_1TaskID_01_4.html" target="_self">std::hash&lt; mesos::v1::TaskID &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_228_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structstd_1_1hash_3_01mesos_1_1v1_1_1TaskState_01_4.html" target="_self">std::hash&lt; mesos::v1::TaskState &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_229_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structstd_1_1hash_3_01mesos_1_1v1_1_1TaskStatus__Reason_01_4.html" target="_self">std::hash&lt; mesos::v1::TaskStatus_Reason &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_230_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structstd_1_1hash_3_01mesos_1_1v1_1_1TaskStatus__Source_01_4.html" target="_self">std::hash&lt; mesos::v1::TaskStatus_Source &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_231_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structstd_1_1hash_3_01net_1_1IP_01_4.html" target="_self">std::hash&lt; net::IP &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_232_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structstd_1_1hash_3_01net_1_1IPv4_01_4.html" target="_self">std::hash&lt; net::IPv4 &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_233_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structstd_1_1hash_3_01net_1_1IPv6_01_4.html" target="_self">std::hash&lt; net::IPv6 &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_234_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structstd_1_1hash_3_01Option_3_01T_01_4_01_4.html" target="_self">std::hash&lt; Option&lt; T &gt; &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_235_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structstd_1_1hash_3_01os_1_1WindowsFD_01_4.html" target="_self">std::hash&lt; os::WindowsFD &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_236_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_236_" class="arrow" onclick="toggleFolder('236_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structstd_1_1hash_3_01process_1_1network_1_1inet_1_1Address_01_4.html" target="_self">std::hash&lt; process::network::inet::Address &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_236_0_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structstd_1_1hash_3_01process_1_1network_1_1inet4_1_1Address_01_4.html" target="_self">std::hash&lt; process::network::inet4::Address &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_236_1_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structstd_1_1hash_3_01process_1_1network_1_1inet6_1_1Address_01_4.html" target="_self">std::hash&lt; process::network::inet6::Address &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_237_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structstd_1_1hash_3_01process_1_1UPID_01_4.html" target="_self">std::hash&lt; process::UPID &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_238_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structstd_1_1hash_3_01routing_1_1filter_1_1ip_1_1PortRange_01_4.html" target="_self">std::hash&lt; routing::filter::ip::PortRange &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_239_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structstd_1_1hash_3_01std_1_1pair_3_01mesos_1_1FrameworkID_00_01mesos_1_1ExecutorID_01_4_01_4.html" target="_self">std::hash&lt; std::pair&lt; mesos::FrameworkID, mesos::ExecutorID &gt; &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_240_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structstd_1_1hash_3_01std_1_1pair_3_01mesos_1_1v1_1_1FrameworkID_00_01mesos_1_1v1_1_1ExecutorID_01_4_01_4.html" target="_self">std::hash&lt; std::pair&lt; mesos::v1::FrameworkID, mesos::v1::ExecutorID &gt; &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_241_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structJSON_1_1internal_1_1HasMappedType.html" target="_self">JSON::internal::HasMappedType&lt; T &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_242_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classHDFS.html" target="_self">HDFS</a></td><td class="desc"></td></tr>
-<tr id="row_243_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structprocess_1_1http_1_1authentication_1_1JWT_1_1Header.html" target="_self">process::http::authentication::JWT::Header</a></td><td class="desc"></td></tr>
-<tr id="row_244_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmesos_1_1internal_1_1checks_1_1HealthChecker.html" target="_self">mesos::internal::checks::HealthChecker</a></td><td class="desc"></td></tr>
-<tr id="row_245_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmesos_1_1Hook.html" target="_self">mesos::Hook</a></td><td class="desc"></td></tr>
-<tr id="row_246_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmesos_1_1internal_1_1HookManager.html" target="_self">mesos::internal::HookManager</a></td><td class="desc"></td></tr>
-<tr id="row_247_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structmesos_1_1internal_1_1checks_1_1check_1_1Http.html" target="_self">mesos::internal::checks::check::Http</a></td><td class="desc"></td></tr>
-<tr id="row_248_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmesos_1_1internal_1_1slave_1_1Http.html" target="_self">mesos::internal::slave::Http</a></td><td class="desc"></td></tr>
-<tr id="row_249_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structmesos_1_1internal_1_1slave_1_1HttpConnection.html" target="_self">mesos::internal::slave::HttpConnection</a></td><td class="desc"></td></tr>
-<tr id="row_250_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structmesos_1_1internal_1_1master_1_1HttpConnection.html" target="_self">mesos::internal::master::HttpConnection</a></td><td class="desc"></td></tr>
-<tr id="row_251_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structprocess_1_1UPID_1_1ID.html" target="_self">process::UPID::ID</a></td><td class="desc"></td></tr>
-<tr id="row_252_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmesos_1_1IDAcceptor.html" target="_self">mesos::IDAcceptor&lt; T &gt;</a></td><td class="desc">Used to filter results for API handlers </td></tr>
-<tr id="row_253_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classDocker_1_1Image.html" target="_self">Docker::Image</a></td><td class="desc"></td></tr>
-<tr id="row_254_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structmesos_1_1internal_1_1slave_1_1ImageInfo.html" target="_self">mesos::internal::slave::ImageInfo</a></td><td class="desc"></td></tr>
-<tr id="row_255_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structmesos_1_1internal_1_1slave_1_1PosixFilesystemIsolatorProcess_1_1Info.html" target="_self">mesos::internal::slave::PosixFilesystemIsolatorProcess::Info</a></td><td class="desc"></td></tr>
-<tr id="row_256_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structrouting_1_1diagnosis_1_1socket_1_1Info.html" target="_self">routing::diagnosis::socket::Info</a></td><td class="desc"></td></tr>
-<tr id="row_257_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmesos_1_1internal_1_1cram__md5_1_1InMemoryAuxiliaryPropertyPlugin.html" target="_self">mesos::internal::cram_md5::InMemoryAuxiliaryPropertyPlugin</a></td><td class="desc"></td></tr>
-<tr id="row_258_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors.html" target="_self">process::Subprocess::IO::InputFileDescriptors</a></td><td class="desc">For input file descriptors a child reads from the <code>read</code> file descriptor and a parent may write to the <code>write</code> file descriptor if one is present </td></tr>
-<tr id="row_259_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structcpp14_1_1integer__sequence.html" target="_self">cpp14::integer_sequence&lt; T, Is &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_260_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structcpp14_1_1internal_1_1IntegerSequenceGen.html" target="_self">cpp14::internal::IntegerSequenceGen&lt; T, N, Is &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_261_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structcpp14_1_1internal_1_1IntegerSequenceGen_3_01T_00_010_00_01Is_8_8_8_01_4.html" target="_self">cpp14::internal::IntegerSequenceGen&lt; T, 0, Is... &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_262_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmesos_1_1python_1_1InterpreterLock.html" target="_self">mesos::python::InterpreterLock</a></td><td class="desc">RAII utility class for acquiring the Python global interpreter lock </td></tr>
-<tr id="row_263_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classInterval.html" target="_self">Interval&lt; T &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_264_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classInterval.html" target="_self">Interval&lt; uint16_t &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_265_"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_265_" class="arrow" onclick="toggleFolder('265_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><b>interval_bound_type</b></td><td class="desc"></td></tr>
-<tr id="row_265_0_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structboost_1_1icl_1_1interval__bound__type_3_01Interval_3_01T_01_4_01_4.html" target="_self">boost::icl::interval_bound_type&lt; Interval&lt; T &gt; &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_266_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_266_" class="arrow" onclick="toggleFolder('266_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><b>interval_set</b></td><td class="desc"></td></tr>
-<tr id="row_266_0_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classIntervalSet.html" target="_self">IntervalSet&lt; T &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_266_1_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classIntervalSet.html" target="_self">IntervalSet&lt; prid_t &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_266_2_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classIntervalSet.html" target="_self">IntervalSet&lt; uint16_t &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_266_3_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classIntervalSet.html" target="_self">IntervalSet&lt; uint32_t &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_266_4_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classIntervalSet.html" target="_self">IntervalSet&lt; uint64_t &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_267_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structboost_1_1icl_1_1interval__traits_3_01Interval_3_01T_01_4_01_4.html" target="_self">boost::icl::interval_traits&lt; Interval&lt; T &gt; &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_268_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structlambda_1_1internal_1_1Invoke.html" target="_self">lambda::internal::Invoke&lt; R &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_269_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structlambda_1_1internal_1_1Invoke_3_01void_01_4.html" target="_self">lambda::internal::Invoke&lt; void &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_270_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1Subprocess_1_1IO.html" target="_self">process::Subprocess::IO</a></td><td class="desc">Describes how the I/O is redirected for stdin/stdout/stderr </td></tr>
-<tr id="row_271_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmesos_1_1slave_1_1ContainerIO_1_1IO.html" target="_self">mesos::slave::ContainerIO::IO</a></td><td class="desc">Describes how the containerizer redirects I/O for stdin/stdout/stderr of a container </td></tr>
-<tr id="row_272_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmesos_1_1internal_1_1slave_1_1IOSwitchboardServer.html" target="_self">mesos::internal::slave::IOSwitchboardServer</a></td><td class="desc"></td></tr>
-<tr id="row_273_"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_273_" class="arrow" onclick="toggleFolder('273_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classnet_1_1IP.html" target="_self">net::IP</a></td><td class="desc"></td></tr>
-<tr id="row_273_0_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classnet_1_1IPv4.html" target="_self">net::IPv4</a></td><td class="desc"></td></tr>
-<tr id="row_273_1_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classnet_1_1IPv6.html" target="_self">net::IPv6</a></td><td class="desc"></td></tr>
-<tr id="row_274_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_274_" class="arrow" onclick="toggleFolder('274_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmesos_1_1slave_1_1Isolator.html" target="_self">mesos::slave::Isolator</a></td><td class="desc"></td></tr>
-<tr id="row_274_0_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmesos_1_1internal_1_1slave_1_1MesosIsolator.html" target="_self">mesos::internal::slave::MesosIsolator</a></td><td class="desc"></td></tr>
-<tr id="row_274_1_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmesos_1_1internal_1_1tests_1_1MockIsolator.html" target="_self">mesos::internal::tests::MockIsolator</a></td><td class="desc"></td></tr>
-<tr id="row_275_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structJSON_1_1internal_1_1IsSequence.html" target="_self">JSON::internal::IsSequence&lt; T &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_276_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structJNI.html" target="_self">JNI</a></td><td class="desc"></td></tr>
-<tr id="row_277_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classJvm.html" target="_self">Jvm</a></td><td class="desc"></td></tr>
-<tr id="row_278_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1http_1_1authentication_1_1JWT.html" target="_self">process::http::authentication::JWT</a></td><td class="desc">A <a class="el" href="namespaceJSON.html">JSON</a> Web Token (<a class="el" href="classprocess_1_1http_1_1authentication_1_1JWT.html" title="A JSON Web Token (JWT) implementation. ">JWT</a>) implementation </td></tr>
-<tr id="row_279_"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_279_" class="arrow" onclick="toggleFolder('279_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classKernelSemaphore.html" target="_self">KernelSemaphore</a></td><td class="desc"></td></tr>
-<tr id="row_279_0_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classDecomissionableKernelSemaphore.html" target="_self">DecomissionableKernelSemaphore</a></td><td class="desc"></td></tr>
-<tr id="row_280_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structLambdaTraits.html" target="_self">LambdaTraits&lt; T &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_281_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structLambdaTraits_3_01Result_07Class_1_1_5_08_07Args_8_8_8_08_01const_01_01_4.html" target="_self">LambdaTraits&lt; Result(Class::*)(Args...) const  &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_282_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classprocess_1_1Latch.html" target="_self">process::Latch</a></td><td class="desc"></td></tr>
-<tr id="row_283_"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_283_" class="arrow" onclick="toggleFolder('283_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmesos_1_1internal_1_1slave_1_1Launcher.html" target="_self">mesos::internal::slave::Launcher</a></td><td class="desc"></td></tr>
-<tr id="row_283_0_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmesos_1_1internal_1_1slave_1_1LinuxLauncher.html" target="_self">mesos::internal::slave::LinuxLauncher</a></td><td class="desc"></td></tr>
-<tr id="row_283_1_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmesos_1_1internal_1_1slave_1_1SubprocessLauncher.html" target="_self">mesos::internal::slave::SubprocessLauncher</a></td><td class="desc"></td></tr>
-<tr id="row_283_2_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmesos_1_1internal_1_1tests_1_1TestLauncher.html" target="_self">mesos::internal::tests::TestLauncher</a></td><td class="desc"></td></tr>
-<tr id="row_284_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classzookeeper_1_1LeaderContender.html" target="_self">zookeeper::LeaderContender</a></td><td class="desc"></td></tr>
-<tr id="row_285_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classzookeeper_1_1LeaderDetector.html" target="_self">zookeeper::LeaderDetector</a></td><td class="desc"></td></tr>
-<tr id="row_286_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_286_" class="arrow" onclick="toggleFolder('286_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structJSON_1_1internal_1_1LessPrefer.html" target="_self">JSON::internal::LessPrefer</a></td><td class="desc"></td></tr>
-<tr id="row_286_0_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structJSON_1_1internal_1_1Prefer.html" target="_self">JSON::internal::Prefer</a></td><td class="desc"></td></tr>
-<tr id="row_287_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classLinkedHashMap.html" target="_self">LinkedHashMap&lt; Key, Value &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_288_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classLinkedHashMap.html" target="_self">LinkedHashMap&lt; SlaveID, TimeInfo &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_289_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classLinkedHashMap.html" target="_self">LinkedHashMap&lt; TaskID, Task * &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_290_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classLinkedHashMap.html" target="_self">LinkedHashMap&lt; TaskID, TaskInfo &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_291_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structos_1_1Load.html" target="_self">os::Load</a></td><td class="desc"></td></tr>
-<tr id="row_292_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_292_" class="arrow" onclick="toggleFolder('292_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmesos_1_1internal_1_1LocalResourceProvider.html" target="_self">mesos::internal::LocalResourceProvider</a></td><td class="desc"></td></tr>
-<tr id="row_292_0_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmesos_1_1internal_1_1StorageLocalResourceProvider.html" target="_self">mesos::internal::StorageLocalResourceProvider</a></td><td class="desc"></td></tr>
-<tr id="row_293_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmesos_1_1internal_1_1LocalResourceProviderDaemon.html" target="_self">mesos::internal::LocalResourceProviderDaemon</a></td><td class="desc"></td></tr>
-<tr id="row_294_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmesos_1_1log_1_1Log.html" target="_self">mesos::log::Log</a></td><td class="desc"></td></tr>
-<tr id="row_295_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classnet_1_1MAC.html" target="_self">net::MAC</a></td><td class="desc"></td></tr>
-<tr id="row_296_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structmesos_1_1internal_1_1master_1_1Machine.html" target="_self">mesos::internal::master::Machine</a></td><td class="desc"></td></tr>
-<tr id="row_297_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess_1_1Slave_1_1Maintenance.html" target="_self">mesos::internal::master::allocator::internal::HierarchicalAllocatorProcess::Slave::Maintenance</a></td><td class="desc"></td></tr>
-<tr id="row_298_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmesos_1_1internal_1_1tests_1_1cluster_1_1Master.html" target="_self">mesos::internal::tests::cluster::Master</a></td><td class="desc"></td></tr>
-<tr id="row_299_"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_299_" class="arrow" onclick="toggleFolder('299_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmesos_1_1master_1_1contender_1_1MasterContender.html" target="_self">mesos::master::contender::MasterContender</a></td><td class="desc">An abstraction for contending to be a leading master </td></tr>
-<tr id="row_299_0_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmesos_1_1master_1_1contender_1_1StandaloneMasterContender.html" target="_self">mesos::master::contender::StandaloneMasterContender</a></td><td class="desc"></td></tr>
-<tr id="row_299_1_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmesos_1_1master_1_1contender_1_1ZooKeeperMasterContender.html" target="_self">mesos::master::contender::ZooKeeperMasterContender</a></td><td class="desc"></td></tr>
-<tr id="row_300_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_300_" class="arrow" onclick="toggleFolder('300_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmesos_1_1master_1_1detector_1_1MasterDetector.html" target="_self">mesos::master::detector::MasterDetector</a></td><td class="desc">An abstraction of a Master detector which can be used to detect the leading master from a group </td></tr>
-<tr id="row_300_0_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmesos_1_1master_1_1detector_1_1StandaloneMasterDetector.html" target="_self">mesos::master::detector::StandaloneMasterDetector</a></td><td class="desc"></td></tr>
-<tr id="row_300_1_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmesos_1_1master_1_1detector_1_1ZooKeeperMasterDetector.html" target="_self">mesos::master::detector::ZooKeeperMasterDetector</a></td><td class="desc"></td></tr>
-<tr id="row_301_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structzookeeper_1_1Group_1_1Membership.html" target="_self">zookeeper::Group::Membership</a></td><td class="desc"></td></tr>
-<tr id="row_302_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structos_1_1Memory.html" target="_self">os::Memory</a></td><td class="desc"></td></tr>
-<tr id="row_303_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structos_1_1Fork_1_1Tree_1_1Memory.html" target="_self">os::Fork::Tree::Memory</a></td><td class="desc"></td></tr>
-<tr id="row_304_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_304_" class="arrow" onclick="toggleFolder('304_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><b>Mesos</b></td><td class="desc"></td></tr>
-<tr id="row_304_0_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmesos_1_1internal_1_1tests_1_1executor_1_1TestMesos.html" target="_self">mesos::internal::tests::executor::TestMesos&lt; Mesos, Event &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_304_1_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmesos_1_1internal_1_1tests_1_1scheduler_1_1TestMesos.html" target="_self">mesos::internal::tests::scheduler::TestMesos&lt; Mesos, Event &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_305_"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_305_" class="arrow" onclick="toggleFolder('305_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmesos_1_1v1_1_1executor_1_1MesosBase.html" target="_self">mesos::v1::executor::MesosBase</a></td><td class="desc"></td></tr>
-<tr id="row_305_0_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmesos_1_1v1_1_1executor_1_1Mesos.html" target="_self">mesos::v1::executor::Mesos</a></td><td class="desc"></td></tr>
-<tr id="row_305_1_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmesos_1_1v1_1_1executor_1_1V0ToV1Adapter.html" target="_self">mesos::v1::executor::V0ToV1Adapter</a></td><td class="desc"></td></tr>
-<tr id="row_306_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_306_" class="arrow" onclick="toggleFolder('306_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmesos_1_1v1_1_1scheduler_1_1MesosBase.html" target="_self">mesos::v1::scheduler::MesosBase</a></td><td class="desc"></td></tr>
-<tr id="row_306_0_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmesos_1_1v1_1_1scheduler_1_1Mesos.html" target="_self">mesos::v1::scheduler::Mesos</a></td><td class="desc"></td></tr>
-<tr id="row_307_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structmesos_1_1python_1_1MesosExecutorDriverImpl.html" target="_self">mesos::python::MesosExecutorDriverImpl</a></td><td class="desc">Python object structure for <a class="el" href="structmesos_1_1python_1_1MesosExecutorDriverImpl.html" title="Python object structure for MesosExecutorDriverImpl objects. ">MesosExecutorDriverImpl</a> objects </td></tr>
-<tr id="row_308_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structmesos_1_1python_1_1MesosSchedulerDriverImpl.html" target="_self">mesos::python::MesosSchedulerDriverImpl</a></td><td class="desc">Python object structure for <a class="el" href="structmesos_1_1python_1_1MesosSchedulerDriverImpl.html" title="Python object structure for MesosSchedulerDriverImpl objects. ">MesosSchedulerDriverImpl</a> objects </td></tr>
-<tr id="row_309_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structprocess_1_1Message.html" target="_self">process::Message</a></td><td class="desc"></td></tr>
-<tr id="row_310_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmesos_1_1internal_1_1slave_1_1docker_1_1MetadataManager.html" target="_self">mesos::internal::slave::docker::MetadataManager</a></td><td class="desc">The <a class="el" href="classmesos_1_1internal_1_1slave_1_1docker_1_1MetadataManager.html" title="The MetadataManager tracks the Docker images cached by the provisioner that are stored on disk...">MetadataManager</a> tracks the <a class="el" href="classDocker.html">Docker</a> images cached by the provisioner that are stored on disk </td></tr>
-<tr id="row_311_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classJvm_1_1Method.html" target="_self">Jvm::Method</a></td><td class="desc"></td></tr>
-<tr id="row_312_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classJvm_1_1MethodFinder.html" target="_self">Jvm::MethodFinder</a></td><td class="desc"></td></tr>
-<tr id="row_313_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classJvm_1_1MethodSignature.html" target="_self">Jvm::MethodSignature</a></td><td class="desc"></td></tr>
-<tr id="row_314_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structprocess_1_1grpc_1_1client_1_1internal_1_1MethodTraits.html" target="_self">process::grpc::client::internal::MethodTraits&lt; T &gt;</a></td><td class="desc"></td></tr>
-<tr id

<TRUNCATED>

[09/50] mesos-site git commit: Updated the website built from mesos SHA: 7c9c72d.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/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
deleted file mode 100644
index a28663c..0000000
--- a/content/api/latest/c++/subprocess__posix_8hpp_source.html
+++ /dev/null
@@ -1,137 +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: 3rdparty/libprocess/src/subprocess_posix.hpp Source File</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&#160;Page</span></a></li>
-      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><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="files.html"><span>File&#160;List</span></a></li>
-      <li><a href="globals.html"><span>File&#160;Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_8cab8f464681f7cc51cee77e79a434cd.html">3rdparty</a></li><li class="navelem"><a class="el" href="dir_043a76de98701f9bddf61b5e98f305ff.html">libprocess</a></li><li class="navelem"><a class="el" href="dir_01cbbd8dcbf9de3825992568658f467e.html">src</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">subprocess_posix.hpp</div>  </div>
-</div><!--header-->
-<div class="contents">
-<a href="subprocess__posix_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>&#160;<span class="comment">// Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<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>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<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="comm
 ent">//</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<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>&#160;<span class="comment">// distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<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>&#160;<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>&#160;<span class="comment">// limitations under the License</span></div><div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;</div><di
 v class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="preprocessor">#ifndef __PROCESS_POSIX_SUBPROCESS_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="preprocessor">#define __PROCESS_POSIX_SUBPROCESS_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;</div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="preprocessor">#ifdef __linux__</span></div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="preprocessor">#include &lt;sys/prctl.h&gt;</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="preprocessor">#endif // __linux__</span></div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;<span class="preprocessor">#include &lt;sys/types.h&gt;</span></div><div class="line"><a name="l00020"></
 a><span class="lineno">   20</span>&#160;</div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span></div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="preprocessor">#include &lt;glog/logging.h&gt;</span></div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;</div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="subprocess_8hpp.html">process/subprocess.hpp</a>&gt;</span></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>&#160;<span class="preprocessor">#include &lt;<a class="code" href="stout_2include_2stout_2check_8hpp.html">stout/check.hpp</a>&gt;
 </span></div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="error_8hpp.html">stout/error.hpp</a>&gt;</span></div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="exit_8hpp.html">stout/exit.hpp</a>&gt;</span></div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="foreach_8hpp.html">stout/foreach.hpp</a>&gt;</span></div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="hashset_8hpp.html">stout/hashset.hpp</a>&gt;</span></div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="nothing_8hpp.html">stout/nothing.hpp</a>&gt;</span></div><div clas
 s="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="lambda_8hpp.html">stout/lambda.hpp</a>&gt;</span></div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="none_8hpp.html">stout/none.hpp</a>&gt;</span></div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="option_8hpp.html">stout/option.hpp</a>&gt;</span></div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="os_8hpp.html">stout/os.hpp</a>&gt;</span></div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="try_8hpp.html">stout/try.hpp</a>&gt;</span></div><div class="line"><a name="l00038"></a><span clas
 s="lineno">   38</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="unreachable_8hpp.html">stout/unreachable.hpp</a>&gt;</span></div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;</div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="close_8hpp.html">stout/os/close.hpp</a>&gt;</span></div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="3rdparty_2stout_2include_2stout_2os_2environment_8hpp.html">stout/os/environment.hpp</a>&gt;</span></div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="fcntl_8hpp.html">stout/os/fcntl.hpp</a>&gt;</span></div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;<span class="preprocessor">#include &lt;<a
  class="code" href="signals_8hpp.html">stout/os/signals.hpp</a>&gt;</span></div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="strerror_8hpp.html">stout/os/strerror.hpp</a>&gt;</span></div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;</div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;<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>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceinternal.html">internal</a> {</div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;</div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> close(std::initializer_list&lt;
 int_fd&gt; fds);</div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;</div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;</div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> close(</div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;    <span class="keyword">const</span> <a class="code" href="namespaceprocess.html#afc6611c4913642642277b44447a16e55">Subprocess::IO::InputFileDescriptors</a>&amp; stdinfds,</div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;    <span class="keyword">const</span> <a class="code" href="namespaceprocess.html#a882829822afa4f33b90aafc9c4ffa9af">Subprocess::IO::OutputFileDescriptors</a>&amp; stdoutfds,</div><div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;    <span class="keyword">const</span> <a class="
 code" href="namespaceprocess.html#a882829822afa4f33b90aafc9c4ffa9af">Subprocess::IO::OutputFileDescriptors</a>&amp; stderrfds);</div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;</div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;</div><div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="namespaceprocess_1_1internal.html#af2f19b6f367cddc0c8283560a9cd9215">   58</a></span>&#160;<span class="keyword">inline</span> <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a> <a class="code" href="namespaceprocess_1_1internal.html#af2f19b6f367cddc0c8283560a9cd9215">defaultClone</a>(<span class="keyword">const</span> lambda::function&lt;<span class="keywordtype">int</span>()&gt;&amp; func)</div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;{</div><div class="line"><a name="l00060"></a><span class="lineno">  
  60</span>&#160;  <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a> pid = ::fork();</div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;  <span class="keywordflow">if</span> (pid == -1) {</div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;    <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (pid == 0) {</div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;    <span class="comment">// Child.</span></div><div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;    ::exit(func());</div><div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;    <a class="code" href="unreachable_8hpp.html#a0bc63b24b654ca433be7b97a3edde132">UNREACHABL
 E</a>();</div><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;    <span class="comment">// Parent.</span></div><div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;    <span class="keywordflow">return</span> pid;</div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;  }</div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;}</div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;</div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;</div><div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;<span class="comment">// This function will invoke `os::cloexec` on all specified file</span></div><div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;<s
 pan class="comment">// descriptors that are valid (i.e., not `None` and &gt;= 0).</span></div><div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="namespaceprocess_1_1internal.html#a345a534b82b79bf20333fb6faef43e93">   76</a></span>&#160;<span class="keyword">inline</span> <a class="code" href="classTry.html">Try&lt;Nothing&gt;</a> <a class="code" href="namespaceprocess_1_1internal.html#a345a534b82b79bf20333fb6faef43e93">cloexec</a>(</div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;    <span class="keyword">const</span> <a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors.html">InputFileDescriptors</a>&amp; stdinfds,</div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;    <span class="keyword">const</span> <a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html">OutputFileDescriptors</a>&amp; stdoutfds,</div><div class="line"><a name=
 "l00079"></a><span class="lineno">   79</span>&#160;    <span class="keyword">const</span> <a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html">OutputFileDescriptors</a>&amp; stderrfds)</div><div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;{</div><div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;  <a class="code" href="classhashset.html">hashset&lt;int&gt;</a> fds = {</div><div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;    stdinfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors.html#a0a3f315345ef7b7ee6f3f1d4d337854d">read</a>,</div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;    stdinfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors.html#ab812da47364d793d9ec0471d3dc8c1bc">write</a>.<a class="code" href="classOption.html#abbbed1bc42634fa9092160b16be6ca7e">getOrElse
 </a>(-1),</div><div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;    stdoutfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html#ac4af678c631a700d4be4410a250e3bce">read</a>.<a class="code" href="classOption.html#abbbed1bc42634fa9092160b16be6ca7e">getOrElse</a>(-1),</div><div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;    stdoutfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html#a5dabb8e3008efd61ce42478f260b54ac">write</a>,</div><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;    stderrfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html#ac4af678c631a700d4be4410a250e3bce">read</a>.<a class="code" href="classOption.html#abbbed1bc42634fa9092160b16be6ca7e">getOrElse</a>(-1),</div><div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;    stderrfds.<a class="code" href=
 "structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html#a5dabb8e3008efd61ce42478f260b54ac">write</a></div><div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;  };</div><div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;</div><div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;  <span class="keywordflow">foreach</span> (<span class="keywordtype">int</span> fd, fds) {</div><div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;    <span class="keywordflow">if</span> (fd &gt;= 0) {</div><div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;      <a class="code" href="classTry.html">Try&lt;Nothing&gt;</a> <a class="code" href="namespaceprocess_1_1internal.html#a345a534b82b79bf20333fb6faef43e93">cloexec</a> = <a class="code" href="namespaceos.html#a7d71bda07a41304403b0e13aa47f0764">os::cloexec</a>(fd);</div><div class="line"><a name="l00093"></a><span cla
 ss="lineno">   93</span>&#160;      <span class="keywordflow">if</span> (cloexec.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(cloexec.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;      }</div><div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;    }</div><div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;  }</div><div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;</div><div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;  <span class="keywordflow">return</span> <a class="code" href="structNothing.html">Nothing</a>();</div><div class="line"
 ><a name="l00100"></a><span class="lineno">  100</span>&#160;}</div><div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;</div><div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;</div><div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;<span class="comment">// The main entry of the child process.</span></div><div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;<span class="comment">// NOTE: This function has to be async signal safe.</span></div><div class="line"><a name="l00106"></a><span class="lineno"><a class="line" href="namespaceprocess_1_1internal.html#a902e2646d88c41ce674a3009cafe0aad">  106</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">int</span> <a class="code" href="namespaceprocess_1_1internal.html#a902e2646d88c41ce674a3009caf
 e0aad">childMain</a>(</div><div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;    <span class="keyword">const</span> std::string&amp; <a class="code" href="namespacepath.html">path</a>,</div><div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;    <span class="keywordtype">char</span>** argv,</div><div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;    <span class="keywordtype">char</span>** envp,</div><div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;    <span class="keyword">const</span> <a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors.html">InputFileDescriptors</a>&amp; stdinfds,</div><div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;    <span class="keyword">const</span> <a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html">OutputFileDescriptors</a>&amp; stdoutfds,</div><div class="li
 ne"><a name="l00112"></a><span class="lineno">  112</span>&#160;    <span class="keyword">const</span> <a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html">OutputFileDescriptors</a>&amp; stderrfds,</div><div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;    <span class="keywordtype">bool</span> blocking,</div><div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;    <span class="keywordtype">int</span> pipes[2],</div><div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;    <span class="keyword">const</span> std::vector&lt;Subprocess::ChildHook&gt;&amp; child_hooks)</div><div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;{</div><div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;  <span class="comment">// Close parent&#39;s end of the pipes.</span></div><div class="line"><a name="l00118"></a><span class="lineno">  118</span
 >&#160;  <span class="keywordflow">if</span> (stdinfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors.html#ab812da47364d793d9ec0471d3dc8c1bc">write</a>.<a class="code" href="classOption.html#a4e3bf8416d95246f43c91f1b5c309323">isSome</a>()) {</div><div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;    ::close(stdinfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors.html#ab812da47364d793d9ec0471d3dc8c1bc">write</a>.<a class="code" href="classOption.html#a21358442c0fac1cc978a67a9a9089a79">get</a>());</div><div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;  }</div><div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;  <span class="keywordflow">if</span> (stdoutfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html#ac4af678c631a700d4be4410a250e3bce">read</a>.<a class="code" href="classOption.html#a4e3bf8416d952
 46f43c91f1b5c309323">isSome</a>()) {</div><div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;    ::close(stdoutfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html#ac4af678c631a700d4be4410a250e3bce">read</a>.<a class="code" href="classOption.html#a21358442c0fac1cc978a67a9a9089a79">get</a>());</div><div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;  }</div><div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;  <span class="keywordflow">if</span> (stderrfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html#ac4af678c631a700d4be4410a250e3bce">read</a>.<a class="code" href="classOption.html#a4e3bf8416d95246f43c91f1b5c309323">isSome</a>()) {</div><div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;    ::close(stderrfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html#ac4af678c
 631a700d4be4410a250e3bce">read</a>.<a class="code" href="classOption.html#a21358442c0fac1cc978a67a9a9089a79">get</a>());</div><div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;  }</div><div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;</div><div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;  <span class="comment">// Currently we will block the child&#39;s execution of the new process</span></div><div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;  <span class="comment">// until all the parent hooks (if any) have executed.</span></div><div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;  <span class="keywordflow">if</span> (blocking) {</div><div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;    ::close(pipes[1]);</div><div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;  }</div><div class="line"><
 a name="l00133"></a><span class="lineno">  133</span>&#160;</div><div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;  <span class="comment">// Redirect I/O for stdin/stdout/stderr.</span></div><div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;  <span class="keywordflow">while</span> (::<a class="code" href="namespaceos.html#a54f3320a4d6f88c14f80f5247aa879b9">dup2</a>(stdinfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors.html#a0a3f315345ef7b7ee6f3f1d4d337854d">read</a>, <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#afcf80a6d91178952d107ad00b165752b">STDIN_FILENO</a>) == -1 &amp;&amp; errno == EINTR);</div><div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;  <span class="keywordflow">while</span> (::<a class="code" href="namespaceos.html#a54f3320a4d6f88c14f80f5247aa879b9">dup2</a>(stdoutfds.<a class="code" href="structprocess_1_1Subprocess_1_1
 IO_1_1OutputFileDescriptors.html#a5dabb8e3008efd61ce42478f260b54ac">write</a>, <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#abd165ee6474b5b75bf075842fff13a04">STDOUT_FILENO</a>) == -1 &amp;&amp; errno == EINTR);</div><div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;  <span class="keywordflow">while</span> (::<a class="code" href="namespaceos.html#a54f3320a4d6f88c14f80f5247aa879b9">dup2</a>(stderrfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html#a5dabb8e3008efd61ce42478f260b54ac">write</a>, <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ae2fe1725bb5e9823d089c46b9ed5266e">STDERR_FILENO</a>) == -1 &amp;&amp; errno == EINTR);</div><div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;</div><div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;  <span class="comment">// Close the copies. We need to make sure that we do 
 not close the</span></div><div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;  <span class="comment">// file descriptor assigned to stdin/stdout/stderr in case the</span></div><div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;  <span class="comment">// parent has closed stdin/stdout/stderr when calling this</span></div><div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;  <span class="comment">// function (in that case, a dup&#39;ed file descriptor may have the</span></div><div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;  <span class="comment">// same file descriptor number as stdin/stdout/stderr).</span></div><div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;  <span class="comment">//</span></div><div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;  <span class="comment">// We also need to ensure that we don&#39;t &quot
 ;double close&quot; any file</span></div><div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;  <span class="comment">// descriptors in the case where one of stdinfds.read,</span></div><div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;  <span class="comment">// stdoutfds.write, or stdoutfds.write are equal.</span></div><div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;  <span class="keywordflow">if</span> (stdinfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors.html#a0a3f315345ef7b7ee6f3f1d4d337854d">read</a> != <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#afcf80a6d91178952d107ad00b165752b">STDIN_FILENO</a> &amp;&amp;</div><div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;      stdinfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors.html#a0a3f315345ef7b7ee6f3f1d4d337854d">read</a> !=
  <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#abd165ee6474b5b75bf075842fff13a04">STDOUT_FILENO</a> &amp;&amp;</div><div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;      stdinfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors.html#a0a3f315345ef7b7ee6f3f1d4d337854d">read</a> != <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ae2fe1725bb5e9823d089c46b9ed5266e">STDERR_FILENO</a>) {</div><div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;    ::close(stdinfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors.html#a0a3f315345ef7b7ee6f3f1d4d337854d">read</a>);</div><div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;  }</div><div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;  <span class="keywordflow">if</span> (stdoutfds.<a class="code" href="structprocess_1_1Subproc
 ess_1_1IO_1_1OutputFileDescriptors.html#a5dabb8e3008efd61ce42478f260b54ac">write</a> != <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#afcf80a6d91178952d107ad00b165752b">STDIN_FILENO</a> &amp;&amp;</div><div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;      stdoutfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html#a5dabb8e3008efd61ce42478f260b54ac">write</a> != <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#abd165ee6474b5b75bf075842fff13a04">STDOUT_FILENO</a> &amp;&amp;</div><div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;      stdoutfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html#a5dabb8e3008efd61ce42478f260b54ac">write</a> != <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ae2fe1725bb5e9823d089c46b9ed5266e">STDERR_FILENO</a> &amp;&amp;</div><div class="line"><a name="l
 00156"></a><span class="lineno">  156</span>&#160;      stdoutfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html#a5dabb8e3008efd61ce42478f260b54ac">write</a> != stdinfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors.html#a0a3f315345ef7b7ee6f3f1d4d337854d">read</a>) {</div><div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;    ::close(stdoutfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html#a5dabb8e3008efd61ce42478f260b54ac">write</a>);</div><div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;  }</div><div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;  <span class="keywordflow">if</span> (stderrfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html#a5dabb8e3008efd61ce42478f260b54ac">write</a> != <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8h
 pp.html#afcf80a6d91178952d107ad00b165752b">STDIN_FILENO</a> &amp;&amp;</div><div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;      stderrfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html#a5dabb8e3008efd61ce42478f260b54ac">write</a> != <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#abd165ee6474b5b75bf075842fff13a04">STDOUT_FILENO</a> &amp;&amp;</div><div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;      stderrfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html#a5dabb8e3008efd61ce42478f260b54ac">write</a> != <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ae2fe1725bb5e9823d089c46b9ed5266e">STDERR_FILENO</a> &amp;&amp;</div><div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;      stderrfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html#a
 5dabb8e3008efd61ce42478f260b54ac">write</a> != stdinfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors.html#a0a3f315345ef7b7ee6f3f1d4d337854d">read</a> &amp;&amp;</div><div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;      stderrfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html#a5dabb8e3008efd61ce42478f260b54ac">write</a> != stdoutfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html#a5dabb8e3008efd61ce42478f260b54ac">write</a>) {</div><div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;    ::close(stderrfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html#a5dabb8e3008efd61ce42478f260b54ac">write</a>);</div><div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;  }</div><div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;</div><div class
 ="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;  <span class="keywordflow">if</span> (blocking) {</div><div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;    <span class="comment">// Do a blocking read on the pipe until the parent signals us to</span></div><div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;    <span class="comment">// continue.</span></div><div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;    <span class="keywordtype">char</span> dummy;</div><div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;    <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a894c4d58faeee7675b9e7e8244de1386">ssize_t</a> length;</div><div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;    <span class="keywordflow">while</span> ((length = ::<a class="code" href="namespacemesos_1_1internal_1_1credentials.html#a137c93d60149
 616181a10e9f39986f7f">read</a>(pipes[0], &amp;dummy, <span class="keyword">sizeof</span>(dummy))) == -1 &amp;&amp;</div><div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;          errno == EINTR);</div><div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;</div><div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;    <span class="keywordflow">if</span> (length != <span class="keyword">sizeof</span>(dummy)) {</div><div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;      <a class="code" href="abort_8hpp.html#a4d84a74fe6e4f84bc3d2f901b9e89f93">ABORT</a>(<span class="stringliteral">&quot;Failed to synchronize with parent&quot;</span>);</div><div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;    }</div><div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;</div><div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#1
 60;    <span class="comment">// Now close the pipe as we don&#39;t need it anymore.</span></div><div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;    ::close(pipes[0]);</div><div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;  }</div><div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160;</div><div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;  <span class="comment">// Run the child hooks.</span></div><div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;  <span class="keywordflow">foreach</span> (<span class="keyword">const</span> <a class="code" href="classprocess_1_1Subprocess_1_1ChildHook.html">Subprocess::ChildHook</a>&amp; hook, child_hooks) {</div><div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;    <a class="code" href="classTry.html">Try&lt;Nothing&gt;</a> callback = hook();</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>&#160;    <span class="comment">// If the callback failed, we should abort execution.</span></div><div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;    <span class="keywordflow">if</span> (callback.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160;      <a class="code" href="abort_8hpp.html#a4d84a74fe6e4f84bc3d2f901b9e89f93">ABORT</a>(<span class="stringliteral">&quot;Failed to execute Subprocess::ChildHook: &quot;</span> + callback.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00190"></a><span class="lineno">  190</span>&#160;    }</div><div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160;  }</div><div class="line"><a name="
 l00192"></a><span class="lineno">  192</span>&#160;</div><div class="line"><a name="l00193"></a><span class="lineno">  193</span>&#160;  <a class="code" href="namespaceos.html#aebc3586b2be0d2b9093ccfbf25dfcde8">os::execvpe</a>(path.c_str(), argv, envp);</div><div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#160;</div><div class="line"><a name="l00195"></a><span class="lineno">  195</span>&#160;  <a class="code" href="exit_8hpp.html#a637cd32ee4af0a5a1d1aea8a0d7f7564">SAFE_EXIT</a>(</div><div class="line"><a name="l00196"></a><span class="lineno">  196</span>&#160;      errno, <span class="stringliteral">&quot;Failed to os::execvpe on path &#39;%s&#39;: %d&quot;</span>, path.c_str(), errno);</div><div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;}</div><div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160;</div><div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160;</div><div class="line
 "><a name="l00200"></a><span class="lineno"><a class="line" href="namespaceprocess_1_1internal.html#afe2c3a3ffdd0ee6fda82e198ece80a37">  200</a></span>&#160;<span class="keyword">inline</span> <a class="code" href="classTry.html">Try&lt;pid_t&gt;</a> <a class="code" href="namespaceprocess_1_1internal.html#afe2c3a3ffdd0ee6fda82e198ece80a37">cloneChild</a>(</div><div class="line"><a name="l00201"></a><span class="lineno">  201</span>&#160;    <span class="keyword">const</span> std::string&amp; <a class="code" href="namespacepath.html">path</a>,</div><div class="line"><a name="l00202"></a><span class="lineno">  202</span>&#160;    std::vector&lt;std::string&gt; argv,</div><div class="line"><a name="l00203"></a><span class="lineno">  203</span>&#160;    <span class="keyword">const</span> <a class="code" href="classOption.html">Option</a>&lt;std::map&lt;std::string, std::string&gt;&gt;&amp; <a class="code" href="namespacemesos_1_1internal_1_1tests.html#a1396c5e3b0a179220de2792d74770ec2">
 environment</a>,</div><div class="line"><a name="l00204"></a><span class="lineno">  204</span>&#160;    <span class="keyword">const</span> <a class="code" href="classOption.html">Option</a>&lt;lambda::function&lt;</div><div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160;        <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a>(<span class="keyword">const</span> lambda::function&lt;<span class="keywordtype">int</span>()&gt;&amp;)&gt;&gt;&amp; _clone,</div><div class="line"><a name="l00206"></a><span class="lineno">  206</span>&#160;    <span class="keyword">const</span> std::vector&lt;Subprocess::ParentHook&gt;&amp; parent_hooks,</div><div class="line"><a name="l00207"></a><span class="lineno">  207</span>&#160;    <span class="keyword">const</span> std::vector&lt;Subprocess::ChildHook&gt;&amp; child_hooks,</div><div class="line"><a name="l00208"></a><span class="lineno">  208</span>&#160;  
   <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="l00209"></a><span class="lineno">  209</span>&#160;    <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="l00210"></a><span class="lineno">  210</span>&#160;    <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="l00211"></a><span class="lineno">  211</span>&#160;{</div><div class="line"><a name="l00212"></a><span class="lineno">  212</span>&#160;  <span class="comment">// The real arguments that will be passed to &#39;os::execvpe&#39;. We need</span></div><div class="line"><a name="l00213"></a><span class="lineno">  213</
 span>&#160;  <span class="comment">// to construct them here before doing the clone as it might not be</span></div><div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160;  <span class="comment">// async signal safe to perform the memory allocation.</span></div><div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160;  <span class="keywordtype">char</span>** _argv = <span class="keyword">new</span> <span class="keywordtype">char</span>*[argv.size() + 1];</div><div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#160;  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; argv.size(); i++) {</div><div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160;    _argv[i] = (<span class="keywordtype">char</span>*) argv[i].c_str();</div><div class="line"><a name="l00218"></a><span class="lineno">  218</span>&#160;  }</div><div class="line"><a name="l00219"></a><span class
 ="lineno">  219</span>&#160;  _argv[argv.size()] = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00220"></a><span class="lineno">  220</span>&#160;</div><div class="line"><a name="l00221"></a><span class="lineno">  221</span>&#160;  <span class="comment">// Like above, we need to construct the environment that we&#39;ll pass</span></div><div class="line"><a name="l00222"></a><span class="lineno">  222</span>&#160;  <span class="comment">// to &#39;os::execvpe&#39; as it might not be async-safe to perform the</span></div><div class="line"><a name="l00223"></a><span class="lineno">  223</span>&#160;  <span class="comment">// memory allocations.</span></div><div class="line"><a name="l00224"></a><span class="lineno">  224</span>&#160;  <span class="keywordtype">char</span>** envp = <a class="code" href="namespaceos_1_1raw.html#aad2bd3acb3ca09c75a1a1db58075f9f4">os::raw::environment</a>();</div><div class="line"><a name="l00225"></a><span class="lineno">  225</s
 pan>&#160;</div><div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;  <span class="keywordflow">if</span> (<a class="code" href="namespacemesos_1_1internal_1_1tests.html#a1396c5e3b0a179220de2792d74770ec2">environment</a>.isSome()) {</div><div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160;    <span class="comment">// NOTE: We add 1 to the size for a `nullptr` terminator.</span></div><div class="line"><a name="l00228"></a><span class="lineno">  228</span>&#160;    envp = <span class="keyword">new</span> <span class="keywordtype">char</span>*[<a class="code" href="namespacemesos_1_1internal_1_1tests.html#a1396c5e3b0a179220de2792d74770ec2">environment</a>-&gt;size() + 1];</div><div class="line"><a name="l00229"></a><span class="lineno">  229</span>&#160;</div><div class="line"><a name="l00230"></a><span class="lineno">  230</span>&#160;    <span class="keywordtype">size_t</span> <a class="code" href="namespacerouting_1_1link.html#a264
 86cdba01ef1c80706b1e07e8a6d3f">index</a> = 0;</div><div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160;    <a class="code" href="foreach_8hpp.html#a66900b166526abe66464d6597536b111">foreachpair</a> (</div><div class="line"><a name="l00232"></a><span class="lineno">  232</span>&#160;        <span class="keyword">const</span> std::string&amp; key,</div><div class="line"><a name="l00233"></a><span class="lineno">  233</span>&#160;        <span class="keyword">const</span> std::string&amp; value, <a class="code" href="namespacemesos_1_1internal_1_1tests.html#a1396c5e3b0a179220de2792d74770ec2">environment</a>.get()) {</div><div class="line"><a name="l00234"></a><span class="lineno">  234</span>&#160;      std::string entry = key + <span class="stringliteral">&quot;=&quot;</span> + value;</div><div class="line"><a name="l00235"></a><span class="lineno">  235</span>&#160;      envp[<a class="code" href="namespacerouting_1_1link.html#a26486cdba01ef1c80706b1e07e8a6d
 3f">index</a>] = <span class="keyword">new</span> <span class="keywordtype">char</span>[entry.size() + 1];</div><div class="line"><a name="l00236"></a><span class="lineno">  236</span>&#160;      strncpy(envp[index], entry.c_str(), entry.size() + 1);</div><div class="line"><a name="l00237"></a><span class="lineno">  237</span>&#160;      ++<a class="code" href="namespacerouting_1_1link.html#a26486cdba01ef1c80706b1e07e8a6d3f">index</a>;</div><div class="line"><a name="l00238"></a><span class="lineno">  238</span>&#160;    }</div><div class="line"><a name="l00239"></a><span class="lineno">  239</span>&#160;</div><div class="line"><a name="l00240"></a><span class="lineno">  240</span>&#160;    envp[<a class="code" href="namespacerouting_1_1link.html#a26486cdba01ef1c80706b1e07e8a6d3f">index</a>] = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00241"></a><span class="lineno">  241</span>&#160;  }</div><div class="line"><a name="l00242"></a><span class="lineno">  
 242</span>&#160;</div><div class="line"><a name="l00243"></a><span class="lineno">  243</span>&#160;  <span class="comment">// Determine the function to clone the child process. If the user</span></div><div class="line"><a name="l00244"></a><span class="lineno">  244</span>&#160;  <span class="comment">// does not specify the clone function, we will use the default.</span></div><div class="line"><a name="l00245"></a><span class="lineno">  245</span>&#160;  lambda::function&lt;pid_t(const lambda::function&lt;int()&gt;&amp;)&gt; <a class="code" href="namespacens.html#a98bf4d9e11d546326250997a6493f835">clone</a> =</div><div class="line"><a name="l00246"></a><span class="lineno">  246</span>&#160;    (_clone.isSome() ? _clone.get() : <a class="code" href="namespaceprocess_1_1internal.html#af2f19b6f367cddc0c8283560a9cd9215">defaultClone</a>);</div><div class="line"><a name="l00247"></a><span class="lineno">  247</span>&#160;</div><div class="line"><a name="l00248"></a><span class="lineno
 ">  248</span>&#160;  <span class="comment">// Currently we will block the child&#39;s execution of the new process</span></div><div class="line"><a name="l00249"></a><span class="lineno">  249</span>&#160;  <span class="comment">// until all the `parent_hooks` (if any) have executed.</span></div><div class="line"><a name="l00250"></a><span class="lineno">  250</span>&#160;  std::array&lt;int, 2&gt; pipes;</div><div class="line"><a name="l00251"></a><span class="lineno">  251</span>&#160;  <span class="keyword">const</span> <span class="keywordtype">bool</span> blocking = !parent_hooks.empty();</div><div class="line"><a name="l00252"></a><span class="lineno">  252</span>&#160;</div><div class="line"><a name="l00253"></a><span class="lineno">  253</span>&#160;  <span class="keywordflow">if</span> (blocking) {</div><div class="line"><a name="l00254"></a><span class="lineno">  254</span>&#160;    <span class="comment">// We assume this should not fail under reasonable conditions so we<
 /span></div><div class="line"><a name="l00255"></a><span class="lineno">  255</span>&#160;    <span class="comment">// use CHECK.</span></div><div class="line"><a name="l00256"></a><span class="lineno">  256</span>&#160;    <a class="code" href="classTry.html">Try&lt;std::array&lt;int, 2&gt;</a>&gt; <a class="code" href="namespaceos.html#afefbea8a88b84bed66580372accb18a9">pipe</a> = <a class="code" href="namespaceos.html#afefbea8a88b84bed66580372accb18a9">os::pipe</a>();</div><div class="line"><a name="l00257"></a><span class="lineno">  257</span>&#160;    <a class="code" href="stout_2include_2stout_2check_8hpp.html#aee320e7c6e107071f4b85d4cc135a265">CHECK_SOME</a>(pipe);</div><div class="line"><a name="l00258"></a><span class="lineno">  258</span>&#160;</div><div class="line"><a name="l00259"></a><span class="lineno">  259</span>&#160;    pipes = pipe.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>();</div><div class="line"><a name="l00260"></a><span 
 class="lineno">  260</span>&#160;  }</div><div class="line"><a name="l00261"></a><span class="lineno">  261</span>&#160;</div><div class="line"><a name="l00262"></a><span class="lineno">  262</span>&#160;  <span class="comment">// Now, clone the child process.</span></div><div class="line"><a name="l00263"></a><span class="lineno">  263</span>&#160;  <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a> pid = <a class="code" href="namespacens.html#a98bf4d9e11d546326250997a6493f835">clone</a>(<a class="code" href="namespaceprocess_1_1network.html#ad067110a4b38cc83785a43f49bf6c8e2">lambda::bind</a>(</div><div class="line"><a name="l00264"></a><span class="lineno">  264</span>&#160;      &amp;<a class="code" href="namespaceprocess_1_1internal.html#a902e2646d88c41ce674a3009cafe0aad">childMain</a>,</div><div class="line"><a name="l00265"></a><span class="lineno">  265</span>&#160;      path,</div><div class="line"><a name="l
 00266"></a><span class="lineno">  266</span>&#160;      _argv,</div><div class="line"><a name="l00267"></a><span class="lineno">  267</span>&#160;      envp,</div><div class="line"><a name="l00268"></a><span class="lineno">  268</span>&#160;      stdinfds,</div><div class="line"><a name="l00269"></a><span class="lineno">  269</span>&#160;      stdoutfds,</div><div class="line"><a name="l00270"></a><span class="lineno">  270</span>&#160;      stderrfds,</div><div class="line"><a name="l00271"></a><span class="lineno">  271</span>&#160;      blocking,</div><div class="line"><a name="l00272"></a><span class="lineno">  272</span>&#160;      pipes.data(),</div><div class="line"><a name="l00273"></a><span class="lineno">  273</span>&#160;      child_hooks));</div><div class="line"><a name="l00274"></a><span class="lineno">  274</span>&#160;</div><div class="line"><a name="l00275"></a><span class="lineno">  275</span>&#160;  <span class="keyword">delete</span>[] _argv;</div><div class="lin
 e"><a name="l00276"></a><span class="lineno">  276</span>&#160;</div><div class="line"><a name="l00277"></a><span class="lineno">  277</span>&#160;  <span class="comment">// Need to delete &#39;envp&#39; if we had environment variables passed to</span></div><div class="line"><a name="l00278"></a><span class="lineno">  278</span>&#160;  <span class="comment">// us and we needed to allocate the space.</span></div><div class="line"><a name="l00279"></a><span class="lineno">  279</span>&#160;  <span class="keywordflow">if</span> (<a class="code" href="namespacemesos_1_1internal_1_1tests.html#a1396c5e3b0a179220de2792d74770ec2">environment</a>.isSome()) {</div><div class="line"><a name="l00280"></a><span class="lineno">  280</span>&#160;    CHECK_NE(<a class="code" href="namespaceos_1_1raw.html#aad2bd3acb3ca09c75a1a1db58075f9f4">os::raw::environment</a>(), envp);</div><div class="line"><a name="l00281"></a><span class="lineno">  281</span>&#160;</div><div class="line"><a name="l00282"></a
 ><span class="lineno">  282</span>&#160;    <span class="comment">// We ignore the last &#39;envp&#39; entry since it is nullptr.</span></div><div class="line"><a name="l00283"></a><span class="lineno">  283</span>&#160;    <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> <a class="code" href="namespacerouting_1_1link.html#a26486cdba01ef1c80706b1e07e8a6d3f">index</a> = 0; <a class="code" href="namespacerouting_1_1link.html#a26486cdba01ef1c80706b1e07e8a6d3f">index</a> &lt; <a class="code" href="namespacemesos_1_1internal_1_1tests.html#a1396c5e3b0a179220de2792d74770ec2">environment</a>-&gt;size(); <a class="code" href="namespacerouting_1_1link.html#a26486cdba01ef1c80706b1e07e8a6d3f">index</a>++) {</div><div class="line"><a name="l00284"></a><span class="lineno">  284</span>&#160;      <span class="keyword">delete</span>[] envp[<a class="code" href="namespacerouting_1_1link.html#a26486cdba01ef1c80706b1e07e8a6d3f">index</a>];</div><div class="line"><a name="
 l00285"></a><span class="lineno">  285</span>&#160;    }</div><div class="line"><a name="l00286"></a><span class="lineno">  286</span>&#160;</div><div class="line"><a name="l00287"></a><span class="lineno">  287</span>&#160;    <span class="keyword">delete</span>[] envp;</div><div class="line"><a name="l00288"></a><span class="lineno">  288</span>&#160;  }</div><div class="line"><a name="l00289"></a><span class="lineno">  289</span>&#160;</div><div class="line"><a name="l00290"></a><span class="lineno">  290</span>&#160;  <span class="keywordflow">if</span> (pid == -1) {</div><div class="line"><a name="l00291"></a><span class="lineno">  291</span>&#160;    <span class="comment">// Save the errno as &#39;close&#39; below might overwrite it.</span></div><div class="line"><a name="l00292"></a><span class="lineno">  292</span>&#160;    <a class="code" href="classErrnoError.html">ErrnoError</a> <a class="code" href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#ae58e703656ab4a1
 bd5d9870441236727">error</a>(<span class="stringliteral">&quot;Failed to clone&quot;</span>);</div><div class="line"><a name="l00293"></a><span class="lineno">  293</span>&#160;    internal::close(stdinfds, stdoutfds, stderrfds);</div><div class="line"><a name="l00294"></a><span class="lineno">  294</span>&#160;</div><div class="line"><a name="l00295"></a><span class="lineno">  295</span>&#160;    <span class="keywordflow">if</span> (blocking) {</div><div class="line"><a name="l00296"></a><span class="lineno">  296</span>&#160;      <a class="code" href="namespaceos.html#a8df77ec6d6b8d32d9b287a41bc74cfdc">os::close</a>(pipes[0]);</div><div class="line"><a name="l00297"></a><span class="lineno">  297</span>&#160;      <a class="code" href="namespaceos.html#a8df77ec6d6b8d32d9b287a41bc74cfdc">os::close</a>(pipes[1]);</div><div class="line"><a name="l00298"></a><span class="lineno">  298</span>&#160;    }</div><div class="line"><a name="l00299"></a><span class="lineno">  299</span>&#160
 ;</div><div class="line"><a name="l00300"></a><span class="lineno">  300</span>&#160;    <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="l00301"></a><span class="lineno">  301</span>&#160;  }</div><div class="line"><a name="l00302"></a><span class="lineno">  302</span>&#160;</div><div class="line"><a name="l00303"></a><span class="lineno">  303</span>&#160;  <span class="comment">// Close the child-ends of the file descriptors that are created by</span></div><div class="line"><a name="l00304"></a><span class="lineno">  304</span>&#160;  <span class="comment">// this function.</span></div><div class="line"><a name="l00305"></a><span class="lineno">  305</span>&#160;  internal::close({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>, stderrfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html#a5dabb8e3008efd61ce42478f260b54ac">write</a>});</div><div class="line"><a name="l00306"></a><span class="lineno">  306</span>&#160;</div><div class="line"><a name="l00307"></a><span class="lineno">  307</span>&#160;  <span class="keywordflow">if</span> (blocking) {</div><div class="line"><a name="l00308"></a><span class="lineno">  308</span>&#160;    <a class="code" href="namespaceos.html#a8df77ec6d6b8d32d9b287a41bc74cfdc">os::close</a>(pipes[0]);</div><div class="line"><a name="l00309"></a><span class="lineno">  309</span>&#160;</div><div class="line"><a name="l00310"></a><span class="lineno">  310</span>&#160;    <span class="comment">// Run the parent hooks.</span></div><div class="line"><a name="l00311"></a><span class="lineno">  311</span>&#160;    <span class="
 keywordflow">foreach</span> (<span class="keyword">const</span> <a class="code" href="structprocess_1_1Subprocess_1_1ParentHook.html">Subprocess::ParentHook</a>&amp; hook, parent_hooks) {</div><div class="line"><a name="l00312"></a><span class="lineno">  312</span>&#160;      <a class="code" href="classTry.html">Try&lt;Nothing&gt;</a> parentSetup = hook.<a class="code" href="structprocess_1_1Subprocess_1_1ParentHook.html#aaf9ff141314d619cd65cd8ec9320fb7d">parent_setup</a>(pid);</div><div class="line"><a name="l00313"></a><span class="lineno">  313</span>&#160;</div><div class="line"><a name="l00314"></a><span class="lineno">  314</span>&#160;      <span class="comment">// If the hook callback fails, we shouldn&#39;t proceed with the</span></div><div class="line"><a name="l00315"></a><span class="lineno">  315</span>&#160;      <span class="comment">// execution and hence the child process should be killed.</span></div><div class="line"><a name="l00316"></a><span class="lineno">  316
 </span>&#160;      <span class="keywordflow">if</span> (parentSetup.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00317"></a><span class="lineno">  317</span>&#160;        LOG(WARNING)</div><div class="line"><a name="l00318"></a><span class="lineno">  318</span>&#160;          &lt;&lt; <span class="stringliteral">&quot;Failed to execute Subprocess::ParentHook in parent for child &#39;&quot;</span></div><div class="line"><a name="l00319"></a><span class="lineno">  319</span>&#160;          &lt;&lt; pid &lt;&lt; <span class="stringliteral">&quot;&#39;: &quot;</span> &lt;&lt; parentSetup.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>();</div><div class="line"><a name="l00320"></a><span class="lineno">  320</span>&#160;</div><div class="line"><a name="l00321"></a><span class="lineno">  321</span>&#160;        <a class="code" href="namespaceos.html#a8df77ec6d6b8d32d9b287a41bc74cfd
 c">os::close</a>(pipes[1]);</div><div class="line"><a name="l00322"></a><span class="lineno">  322</span>&#160;</div><div class="line"><a name="l00323"></a><span class="lineno">  323</span>&#160;        <span class="comment">// Ensure the child is killed.</span></div><div class="line"><a name="l00324"></a><span class="lineno">  324</span>&#160;        <a class="code" href="namespacecgroups.html#ab75e1e2d1be63eec907bf12306a7c8a7">::kill</a>(pid, <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a1c2b5693161bbc9d516ef5d16c7b54f5">SIGKILL</a>);</div><div class="line"><a name="l00325"></a><span class="lineno">  325</span>&#160;</div><div class="line"><a name="l00326"></a><span class="lineno">  326</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(</div><div class="line"><a name="l00327"></a><span class="lineno">  327</span>&#160;            <span class="stringliteral">&quot;Failed to execute Subprocess::Pa
 rentHook in parent for child &#39;&quot;</span> +</div><div class="line"><a name="l00328"></a><span class="lineno">  328</span>&#160;            <a class="code" href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(pid) + <span class="stringliteral">&quot;&#39;: &quot;</span> + parentSetup.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00329"></a><span class="lineno">  329</span>&#160;      }</div><div class="line"><a name="l00330"></a><span class="lineno">  330</span>&#160;    }</div><div class="line"><a name="l00331"></a><span class="lineno">  331</span>&#160;</div><div class="line"><a name="l00332"></a><span class="lineno">  332</span>&#160;    <span class="comment">// Now that we&#39;ve executed the parent hooks, we can signal the child to</span></div><div class="line"><a name="l00333"></a><span class="lineno">  333</span>&#160;    <span class="comment">// continue by writing to the pipe.</s
 pan></div><div class="line"><a name="l00334"></a><span class="lineno">  334</span>&#160;    <span class="keywordtype">char</span> dummy;</div><div class="line"><a name="l00335"></a><span class="lineno">  335</span>&#160;    <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a894c4d58faeee7675b9e7e8244de1386">ssize_t</a> length;</div><div class="line"><a name="l00336"></a><span class="lineno">  336</span>&#160;    <span class="keywordflow">while</span> ((length = ::<a class="code" href="namespacemesos_1_1internal_1_1log_1_1protocol.html#a66ff2d5af4db53227f787281c0765d8d">write</a>(pipes[1], &amp;dummy, <span class="keyword">sizeof</span>(dummy))) == -1 &amp;&amp;</div><div class="line"><a name="l00337"></a><span class="lineno">  337</span>&#160;           errno == EINTR);</div><div class="line"><a name="l00338"></a><span class="lineno">  338</span>&#160;</div><div class="line"><a name="l00339"></a><span class="lineno">  339</span>&#160;    <a class="code" href="
 namespaceos.html#a8df77ec6d6b8d32d9b287a41bc74cfdc">os::close</a>(pipes[1]);</div><div class="line"><a name="l00340"></a><span class="lineno">  340</span>&#160;</div><div class="line"><a name="l00341"></a><span class="lineno">  341</span>&#160;    <span class="keywordflow">if</span> (length != <span class="keyword">sizeof</span>(dummy)) {</div><div class="line"><a name="l00342"></a><span class="lineno">  342</span>&#160;      <span class="comment">// Ensure the child is killed.</span></div><div class="line"><a name="l00343"></a><span class="lineno">  343</span>&#160;      <a class="code" href="namespacecgroups.html#ab75e1e2d1be63eec907bf12306a7c8a7">::kill</a>(pid, <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a1c2b5693161bbc9d516ef5d16c7b54f5">SIGKILL</a>);</div><div class="line"><a name="l00344"></a><span class="lineno">  344</span>&#160;</div><div class="line"><a name="l00345"></a><span class="lineno">  345</span>&#160;      <span class="keywordflow">re
 turn</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">&quot;Failed to synchronize child process&quot;</span>);</div><div class="line"><a name="l00346"></a><span class="lineno">  346</span>&#160;    }</div><div class="line"><a name="l00347"></a><span class="lineno">  347</span>&#160;  }</div><div class="line"><a name="l00348"></a><span class="lineno">  348</span>&#160;</div><div class="line"><a name="l00349"></a><span class="lineno">  349</span>&#160;  <span class="keywordflow">return</span> pid;</div><div class="line"><a name="l00350"></a><span class="lineno">  350</span>&#160;}</div><div class="line"><a name="l00351"></a><span class="lineno">  351</span>&#160;</div><div class="line"><a name="l00352"></a><span class="lineno">  352</span>&#160;}  <span class="comment">// namespace internal {</span></div><div class="line"><a name="l00353"></a><span class="lineno">  353</span>&#160;}  <span class="comment">// namespace process {</span></div><div class
 ="line"><a name="l00354"></a><span class="lineno">  354</span>&#160;</div><div class="line"><a name="l00355"></a><span class="lineno">  355</span>&#160;<span class="preprocessor">#endif // __PROCESS_POSIX_SUBPROCESS_HPP__</span></div><div class="ttc" id="namespaceos_html_a54f3320a4d6f88c14f80f5247aa879b9"><div class="ttname"><a href="namespaceos.html#a54f3320a4d6f88c14f80f5247aa879b9">os::dup2</a></div><div class="ttdeci">Try&lt; Nothing &gt; dup2(int oldFd, int newFd)</div><div class="ttdef"><b>Definition:</b> os.hpp:434</div></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="namespaceos_html_afefbea8a88b84bed66580372accb18a9"><div class="ttname"><a href="namespaceos.html#afefbea8a88b84bed66580372accb18a9">os::pipe</a></div><div class="ttdeci">Try&lt; std::array&lt; int, 2 &gt; &gt; pipe()</div><div class="ttdef"><b>Definition:</b> pipe.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: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&lt; pid_t &gt; clone(pid_t target, int nstypes, const lambda::function&lt; int()&gt; &amp;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>
-<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 &amp;&amp;u) const &amp;</div><div class="ttdef"><b>Definition:</b> option.hpp:127</div></div>
-<div class="ttc" id="namespaceprocess_html_a882829822afa4f33b90aafc9c4ffa9af"><div class="ttname"><a href="namespaceprocess.html#a882829822afa4f33b90aafc9c4ffa9af">process::OutputFileDescriptors</a></div><div class="ttdeci">Subprocess::IO::OutputFileDescriptors OutputFileDescriptors</div><div class="ttdef"><b>Definition:</b> subprocess.hpp:344</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 &amp; get()&amp;</div><div class="ttdef"><b>Definition:</b> try.hpp:73</div></div>
-<div class="ttc" id="3rdparty_2stout_2include_2stout_2windows_8hpp_html_a1c2b5693161bbc9d516ef5d16c7b54f5"><div class="ttname"><a href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a1c2b5693161bbc9d516ef5d16c7b54f5">SIGKILL</a></div><div class="ttdeci">const mode_t SIGKILL</div><div class="ttdef"><b>Definition:</b> windows.hpp:335</div></div>
-<div class="ttc" id="classprocess_1_1Subprocess_1_1ChildHook_html"><div class="ttname"><a href="classprocess_1_1Subprocess_1_1ChildHook.html">process::Subprocess::ChildHook</a></div><div class="ttdoc">A ChildHook can be passed to a subprocess call. </div><div class="ttdef"><b>Definition:</b> subprocess.hpp:190</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="classhashset_html"><div class="ttname"><a href="classhashset.html">hashset</a></div><div class="ttdef"><b>Definition:</b> hashset.hpp:53</div></div>
-<div class="ttc" id="subprocess_8hpp_html"><div class="ttname"><a href="subprocess_8hpp.html">subprocess.hpp</a></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="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="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors_html_a0a3f315345ef7b7ee6f3f1d4d337854d"><div class="ttname"><a href="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors.html#a0a3f315345ef7b7ee6f3f1d4d337854d">process::Subprocess::IO::InputFileDescriptors::read</a></div><div class="ttdeci">int_fd read</div><div class="ttdef"><b>Definition:</b> subprocess.hpp:75</div></div>
-<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&lt; int()&gt; &amp;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: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&lt; Nothing &gt; cloexec(const InputFileDescriptors &amp;stdinfds, const OutputFileDescriptors &amp;stdoutfds, const OutputFileDescriptors &amp;stderrfds)</div><div class="ttdef"><b>Definition:</b> subprocess_posix.hpp:76</div></div>
-<div class="ttc" id="lambda_8hpp_html"><div class="ttname"><a href="lambda_8hpp.html">lambda.hpp</a></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="classOption_html_a4e3bf8416d95246f43c91f1b5c309323"><div class="ttname"><a href="classOption.html#a4e3bf8416d95246f43c91f1b5c309323">Option::isSome</a></div><div class="ttdeci">bool isSome() const </div><div class="ttdef"><b>Definition:</b> option.hpp:115</div></div>
-<div class="ttc" id="namespaceprocess_html_afc6611c4913642642277b44447a16e55"><div class="ttname"><a href="namespaceprocess.html#afc6611c4913642642277b44447a16e55">process::InputFileDescriptors</a></div><div class="ttdeci">Subprocess::IO::InputFileDescriptors InputFileDescriptors</div><div class="ttdef"><b>Definition:</b> subprocess.hpp:343</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="namespacemesos_1_1internal_1_1tests_html_a1396c5e3b0a179220de2792d74770ec2"><div class="ttname"><a href="namespacemesos_1_1internal_1_1tests.html#a1396c5e3b0a179220de2792d74770ec2">mesos::internal::tests::environment</a></div><div class="ttdeci">Environment * environment</div></div>
-<div class="ttc" id="3rdparty_2stout_2include_2stout_2windows_8hpp_html_ab03ced250ed239bc3b50b669493997f9"><div class="ttname"><a href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a></div><div class="ttdeci">DWORD pid_t</div><div class="ttdef"><b>Definition:</b> windows.hpp:181</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&lt; int &gt; index(const std::string &amp;link)</div></div>
-<div class="ttc" id="stout_2include_2stout_2check_8hpp_html_aee320e7c6e107071f4b85d4cc135a265"><div class="ttname"><a href="stout_2include_2stout_2check_8hpp.html#aee320e7c6e107071f4b85d4cc135a265">CHECK_SOME</a></div><div class="ttdeci">#define CHECK_SOME(expression)</div><div class="ttdef"><b>Definition:</b> check.hpp:50</div></div>
-<div class="ttc" id="3rdparty_2stout_2include_2stout_2windows_8hpp_html_abd165ee6474b5b75bf075842fff13a04"><div class="ttname"><a href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#abd165ee6474b5b75bf075842fff13a04">STDOUT_FILENO</a></div><div class="ttdeci">#define STDOUT_FILENO</div><div class="ttdef"><b>Definition:</b> windows.hpp:154</div></div>
-<div class="ttc" id="fcntl_8hpp_html"><div class="ttname"><a href="fcntl_8hpp.html">fcntl.hpp</a></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="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors_html_a5dabb8e3008efd61ce42478f260b54ac"><div class="ttname"><a href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html#a5dabb8e3008efd61ce42478f260b54ac">process::Subprocess::IO::OutputFileDescriptors::write</a></div><div class="ttdeci">int_fd write</div><div class="ttdef"><b>Definition:</b> subprocess.hpp:91</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&lt; Nothing &gt; close(int fd)</div><div class="ttdef"><b>Definition:</b> close.hpp:24</div></div>
-<div class="ttc" id="namespaceos_html_a7d71bda07a41304403b0e13aa47f0764"><div class="ttname"><a href="namespaceos.html#a7d71bda07a41304403b0e13aa47f0764">os::cloexec</a></div><div class="ttdeci">Try&lt; Nothing &gt; cloexec(int fd)</div><div class="ttdef"><b>Definition:</b> fcntl.hpp:27</div></div>
-<div class="ttc" id="classOption_html_a21358442c0fac1cc978a67a9a9089a79"><div class="ttname"><a href="classOption.html#a21358442c0fac1cc978a67a9a9089a79">Option::get</a></div><div class="ttdeci">const T &amp; get() const &amp;</div><div class="ttdef"><b>Definition:</b> option.hpp:118</div></div>
-<div class="ttc" id="foreach_8hpp_html_a66900b166526abe66464d6597536b111"><div class="ttname"><a href="foreach_8hpp.html#a66900b166526abe66464d6597536b111">foreachpair</a></div><div class="ttdeci">#define foreachpair(KEY, VALUE, ELEMS)</div><div class="ttdef"><b>Definition:</b> foreach.hpp:51</div></div>
-<div class="ttc" id="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors_html"><div class="ttname"><a href="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors.html">process::Subprocess::IO::InputFileDescriptors</a></div><div class="ttdoc">For input file descriptors a child reads from the read file descriptor and a parent may write to the ...</div><div class="ttdef"><b>Definition:</b> subprocess.hpp:73</div></div>
-<div class="ttc" id="namespaceprocess_1_1internal_html_afe2c3a3ffdd0ee6fda82e198ece80a37"><div class="ttname"><a href="namespaceprocess_1_1internal.html#afe2c3a3ffdd0ee6fda82e198ece80a37">process::internal::cloneChild</a></div><div class="ttdeci">Try&lt; pid_t &gt; cloneChild(const std::string &amp;path, std::vector&lt; std::string &gt; argv, const Option&lt; std::map&lt; std::string, std::string &gt;&gt; &amp;environment, const Option&lt; lambda::function&lt; pid_t(const lambda::function&lt; int()&gt; &amp;)&gt;&gt; &amp;_clone, const std::vector&lt; Subprocess::ParentHook &gt; &amp;parent_hooks, const std::vector&lt; Subprocess::ChildHook &gt; &amp;child_hooks, const InputFileDescriptors stdinfds, const OutputFileDescriptors stdoutfds, const OutputFileDescriptors stderrfds)</div><div class="ttdef"><b>Definition:</b> subprocess_posix.hpp:200</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="3rdparty_2stout_2include_2stout_2windows_8hpp_html_afcf80a6d91178952d107ad00b165752b"><div class="ttname"><a href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#afcf80a6d91178952d107ad00b165752b">STDIN_FILENO</a></div><div class="ttdeci">#define STDIN_FILENO</div><div class="ttdef"><b>Definition:</b> windows.hpp:153</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 &amp;e)</div><div class="ttdef"><b>Definition:</b> try.hpp:42</div></div>
-<div class="ttc" id="unreachable_8hpp_html_a0bc63b24b654ca433be7b97a3edde132"><div class="ttname"><a href="unreachable_8hpp.html#a0bc63b24b654ca433be7b97a3edde132">UNREACHABLE</a></div><div class="ttdeci">#define UNREACHABLE()</div><div class="ttdef"><b>Definition:</b> unreachable.hpp:22</div></div>
-<div class="ttc" id="structprocess_1_1Subprocess_1_1ParentHook_html_aaf9ff141314d619cd65cd8ec9320fb7d"><div class="ttname"><a href="structprocess_1_1Subprocess_1_1ParentHook.html#aaf9ff141314d619cd65cd8ec9320fb7d">process::Subprocess::ParentHook::parent_setup</a></div><div class="ttdeci">const lambda::function&lt; Try&lt; Nothing &gt;pid_t)&gt; parent_setup</div><div class="ttdoc">The callback that must be specified for execution after the child has been cloned, but before it starts executing the new process. </div><div class="ttdef"><b>Definition:</b> subprocess.hpp:163</div></div>
-<div class="ttc" id="foreach_8hpp_html"><div class="ttname"><a href="foreach_8hpp.html">foreach.hpp</a></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="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>
-<div class="ttc" id="namespacemesos_1_1internal_1_1credentials_html_a137c93d60149616181a10e9f39986f7f"><div class="ttname"><a href="namespacemesos_1_1internal_1_1credentials.html#a137c93d60149616181a10e9f39986f7f">mesos::internal::credentials::read</a></div><div class="ttdeci">Result&lt; Credentials &gt; read(const Path &amp;path)</div><div class="ttdef"><b>Definition:</b> credentials.hpp:35</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 &amp;msg, uint32_t code)</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:48</div></div>
-<div class="ttc" id="exit_8hpp_html"><div class="ttname"><a href="exit_8hpp.html">exit.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="namespaceos_html_aebc3586b2be0d2b9093ccfbf25dfcde8"><div class="ttname"><a href="namespaceos.html#aebc3586b2be0d2b9093ccfbf25dfcde8">os::execvpe</a></div><div class="ttdeci">int execvpe(const std::string &amp;command, const std::vector&lt; std::string &gt; &amp;argv, const std::map&lt; std::string, std::string &gt; &amp;envp)</div><div class="ttdef"><b>Definition:</b> shell.hpp:592</div></div>
-<div class="ttc" id="signals_8hpp_html"><div class="ttname"><a href="signals_8hpp.html">signals.hpp</a></div></div>
-<div class="ttc" id="hashset_8hpp_html"><div class="ttname"><a href="hashset_8hpp.html">hashset.hpp</a></div></div>
-<div class="ttc" id="namespacemesos_1_1internal_1_1log_1_1protocol_html_a66ff2d5af4db53227f787281c0765d8d"><div class="ttname"><a href="namespacemesos_1_1internal_1_1log_1_1protocol.html#a66ff2d5af4db53227f787281c0765d8d">mesos::internal::log::protocol::write</a></div><div class="ttdeci">Protocol&lt; WriteRequest, WriteResponse &gt; write</div></div>
-<div class="ttc" id="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors_html_ac4af678c631a700d4be4410a250e3bce"><div class="ttname"><a href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html#ac4af678c631a700d4be4410a250e3bce">process::Subprocess::IO::OutputFileDescriptors::read</a></div><div class="ttdeci">Option&lt; int_fd &gt; read</div><div class="ttdef"><b>Definition:</b> subprocess.hpp:90</div></div>
-<div class="ttc" id="namespacecgroups_html_ab75e1e2d1be63eec907bf12306a7c8a7"><div class="ttname"><a href="namespacecgroups.html#ab75e1e2d1be63eec907bf12306a7c8a7">cgroups::kill</a></div><div class="ttdeci">Try&lt; Nothing &gt; kill(const std::string &amp;hierarchy, const std::string &amp;cgroup, int signal)</div></div>
-<div class="ttc" id="namespaceprocess_1_1network_html_ad067110a4b38cc83785a43f49bf6c8e2"><div class="ttname"><a href="namespaceprocess_1_1network.html#ad067110a4b38cc83785a43f49bf6c8e2">process::network::bind</a></div><div class="ttdeci">Try&lt; Nothing &gt; bind(int_fd s, const Address &amp;address)</div><div class="ttdef"><b>Definition:</b> network.hpp:46</div></div>
-<div class="ttc" id="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors_html_ab812da47364d793d9ec0471d3dc8c1bc"><div class="ttname"><a href="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors.html#ab812da47364d793d9ec0471d3dc8c1bc">process::Subprocess::IO::InputFileDescriptors::write</a></div><div class="ttdeci">Option&lt; int_fd &gt; write</div><div class="ttdef"><b>Definition:</b> subprocess.hpp:76</div></div>
-<div class="ttc" id="structprocess_1_1Subprocess_1_1ParentHook_html"><div class="ttname"><a href="structprocess_1_1Subprocess_1_1ParentHook.html">process::Subprocess::ParentHook</a></div><div class="ttdoc">A hook can be passed to a subprocess call. </div><div class="ttdef"><b>Definition:</b> subprocess.hpp:152</div></div>
-<div class="ttc" id="namespacens_html_a28116b46e6543597a11733424cd1aa20"><div class="ttname"><a href="namespacens.html#a28116b46e6543597a11733424cd1aa20">ns::stringify</a></div><div class="ttdeci">std::string stringify(int flags)</div></div>
-<div class="ttc" id="exit_8hpp_html_a637cd32ee4af0a5a1d1aea8a0d7f7564"><div class="ttname"><a href="exit_8hpp.html#a637cd32ee4af0a5a1d1aea8a0d7f7564">SAFE_EXIT</a></div><div class="ttdeci">#define SAFE_EXIT(status, fmt,...)</div><div class="ttdef"><b>Definition:</b> exit.hpp:42</div></div>
-<div class="ttc" id="unreachable_8hpp_html"><div class="ttname"><a href="unreachable_8hpp.html">unreachable.hpp</a></div></div>
-<div class="ttc" id="namespaceprocess_1_1internal_html_a902e2646d88c41ce674a3009cafe0aad"><div class="ttname"><a href="namespaceprocess_1_1internal.html#a902e2646d88c41ce674a3009cafe0aad">process::internal::childMain</a></div><div class="ttdeci">int childMain(const std::string &amp;path, char **argv, char **envp, const InputFileDescriptors &amp;stdinfds, const OutputFileDescriptors &amp;stdoutfds, const OutputFileDescriptors &amp;stderrfds, bool blocking, int pipes[2], const std::vector&lt; Subprocess::ChildHook &gt; &amp;child_hooks)</div><div class="ttdef"><b>Definition:</b> subprocess_posix.hpp:106</div></div>
-<div class="ttc" id="namespaceos_1_1raw_html_aad2bd3acb3ca09c75a1a1db58075f9f4"><div class="ttname"><a href="namespaceos_1_1raw.html#aad2bd3acb3ca09c75a1a1db58075f9f4">os::raw::environment</a></div><div class="ttdeci">char ** environment()</div><div class="ttdef"><b>Definition:</b> environment.hpp:66</div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated by &#160;<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.11
-</small></address>
-</body>
-</html>


[13/50] mesos-site git commit: Updated the website built from mesos SHA: 7c9c72d.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/src_2posix_2subprocess_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/src_2posix_2subprocess_8hpp_source.html b/content/api/latest/c++/src_2posix_2subprocess_8hpp_source.html
new file mode 100644
index 0000000..b847497
--- /dev/null
+++ b/content/api/latest/c++/src_2posix_2subprocess_8hpp_source.html
@@ -0,0 +1,137 @@
+<!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: 3rdparty/libprocess/src/posix/subprocess.hpp Source File</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&#160;Page</span></a></li>
+      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li class="current"><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="files.html"><span>File&#160;List</span></a></li>
+      <li><a href="globals.html"><span>File&#160;Members</span></a></li>
+    </ul>
+  </div>
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_8cab8f464681f7cc51cee77e79a434cd.html">3rdparty</a></li><li class="navelem"><a class="el" href="dir_043a76de98701f9bddf61b5e98f305ff.html">libprocess</a></li><li class="navelem"><a class="el" href="dir_01cbbd8dcbf9de3825992568658f467e.html">src</a></li><li class="navelem"><a class="el" href="dir_0ac73505685689cb4a842e520ca4cca6.html">posix</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">subprocess.hpp</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="src_2posix_2subprocess_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>&#160;<span class="comment">// Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<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>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<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>&#160;<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>&#160;<span class="comment">// distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<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>&#160;<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>&#160;<span class="comment">// limitations under the License</span></div><div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;</di
 v><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="preprocessor">#ifndef __PROCESS_POSIX_SUBPROCESS_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="preprocessor">#define __PROCESS_POSIX_SUBPROCESS_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;</div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="preprocessor">#ifdef __linux__</span></div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="preprocessor">#include &lt;sys/prctl.h&gt;</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="preprocessor">#endif // __linux__</span></div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;<span class="preprocessor">#include &lt;sys/types.h&gt;</span></div><div class="line"><a name="l0002
 0"></a><span class="lineno">   20</span>&#160;</div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span></div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="preprocessor">#include &lt;glog/logging.h&gt;</span></div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;</div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="include_2process_2subprocess_8hpp.html">process/subprocess.hpp</a>&gt;</span></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>&#160;<span class="preprocessor">#include &lt;<a class="code" href="stout_2include_2stout_2check_8hpp.html">
 stout/check.hpp</a>&gt;</span></div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="error_8hpp.html">stout/error.hpp</a>&gt;</span></div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="exit_8hpp.html">stout/exit.hpp</a>&gt;</span></div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="foreach_8hpp.html">stout/foreach.hpp</a>&gt;</span></div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="hashset_8hpp.html">stout/hashset.hpp</a>&gt;</span></div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="nothing_8hpp.html">stout/nothing.hpp</a>&gt
 ;</span></div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="lambda_8hpp.html">stout/lambda.hpp</a>&gt;</span></div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="none_8hpp.html">stout/none.hpp</a>&gt;</span></div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="option_8hpp.html">stout/option.hpp</a>&gt;</span></div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="os_8hpp.html">stout/os.hpp</a>&gt;</span></div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="try_8hpp.html">stout/try.hpp</a>&gt;</span></div><div class="line"><a name=
 "l00038"></a><span class="lineno">   38</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="unreachable_8hpp.html">stout/unreachable.hpp</a>&gt;</span></div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;</div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="close_8hpp.html">stout/os/close.hpp</a>&gt;</span></div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="3rdparty_2stout_2include_2stout_2os_2environment_8hpp.html">stout/os/environment.hpp</a>&gt;</span></div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="fcntl_8hpp.html">stout/os/fcntl.hpp</a>&gt;</span></div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;<span class="prepro
 cessor">#include &lt;<a class="code" href="signals_8hpp.html">stout/os/signals.hpp</a>&gt;</span></div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="strerror_8hpp.html">stout/os/strerror.hpp</a>&gt;</span></div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;</div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;<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>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceinternal.html">internal</a> {</div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;</div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> close(st
 d::initializer_list&lt;int_fd&gt; fds);</div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;</div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;</div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> close(</div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;    <span class="keyword">const</span> <a class="code" href="namespaceprocess.html#afc6611c4913642642277b44447a16e55">Subprocess::IO::InputFileDescriptors</a>&amp; stdinfds,</div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;    <span class="keyword">const</span> <a class="code" href="namespaceprocess.html#a882829822afa4f33b90aafc9c4ffa9af">Subprocess::IO::OutputFileDescriptors</a>&amp; stdoutfds,</div><div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;    <span class="keyword">
 const</span> <a class="code" href="namespaceprocess.html#a882829822afa4f33b90aafc9c4ffa9af">Subprocess::IO::OutputFileDescriptors</a>&amp; stderrfds);</div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;</div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;</div><div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="namespaceprocess_1_1internal.html#af2f19b6f367cddc0c8283560a9cd9215">   58</a></span>&#160;<span class="keyword">inline</span> <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a> <a class="code" href="namespaceprocess_1_1internal.html#af2f19b6f367cddc0c8283560a9cd9215">defaultClone</a>(<span class="keyword">const</span> lambda::function&lt;<span class="keywordtype">int</span>()&gt;&amp; func)</div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;{</div><div class="line"><a name="l00060"></a>
 <span class="lineno">   60</span>&#160;  <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a> pid = ::fork();</div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;  <span class="keywordflow">if</span> (pid == -1) {</div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;    <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (pid == 0) {</div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;    <span class="comment">// Child.</span></div><div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;    ::exit(func());</div><div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;    <a class="code" href="unreachable_8hpp.html#a0bc63b24b654ca433be7b
 97a3edde132">UNREACHABLE</a>();</div><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;    <span class="comment">// Parent.</span></div><div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;    <span class="keywordflow">return</span> pid;</div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;  }</div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;}</div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;</div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;</div><div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;<span class="comment">// This function will invoke `os::cloexec` on all specified file</span></div><div class="line"><a name="l00075"></a><span class="linen
 o">   75</span>&#160;<span class="comment">// descriptors that are valid (i.e., not `None` and &gt;= 0).</span></div><div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="namespaceprocess_1_1internal.html#a345a534b82b79bf20333fb6faef43e93">   76</a></span>&#160;<span class="keyword">inline</span> <a class="code" href="classTry.html">Try&lt;Nothing&gt;</a> <a class="code" href="namespaceprocess_1_1internal.html#a345a534b82b79bf20333fb6faef43e93">cloexec</a>(</div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;    <span class="keyword">const</span> <a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors.html">InputFileDescriptors</a>&amp; stdinfds,</div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;    <span class="keyword">const</span> <a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html">OutputFileDescriptors</a>&amp; stdoutfds,</div><di
 v class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;    <span class="keyword">const</span> <a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html">OutputFileDescriptors</a>&amp; stderrfds)</div><div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;{</div><div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;  <a class="code" href="classhashset.html">hashset&lt;int&gt;</a> fds = {</div><div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;    stdinfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors.html#a0a3f315345ef7b7ee6f3f1d4d337854d">read</a>,</div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;    stdinfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors.html#ab812da47364d793d9ec0471d3dc8c1bc">write</a>.<a class="code" href="classOption.html#abbbed1bc42634fa90921
 60b16be6ca7e">getOrElse</a>(-1),</div><div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;    stdoutfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html#ac4af678c631a700d4be4410a250e3bce">read</a>.<a class="code" href="classOption.html#abbbed1bc42634fa9092160b16be6ca7e">getOrElse</a>(-1),</div><div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;    stdoutfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html#a5dabb8e3008efd61ce42478f260b54ac">write</a>,</div><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;    stderrfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html#ac4af678c631a700d4be4410a250e3bce">read</a>.<a class="code" href="classOption.html#abbbed1bc42634fa9092160b16be6ca7e">getOrElse</a>(-1),</div><div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;    stderrfd
 s.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html#a5dabb8e3008efd61ce42478f260b54ac">write</a></div><div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;  };</div><div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;</div><div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;  <span class="keywordflow">foreach</span> (<span class="keywordtype">int</span> fd, fds) {</div><div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;    <span class="keywordflow">if</span> (fd &gt;= 0) {</div><div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;      <a class="code" href="classTry.html">Try&lt;Nothing&gt;</a> <a class="code" href="namespaceprocess_1_1internal.html#a345a534b82b79bf20333fb6faef43e93">cloexec</a> = <a class="code" href="namespaceos.html#a7d71bda07a41304403b0e13aa47f0764">os::cloexec</a>(fd);</div><div class="line"><a name
 ="l00093"></a><span class="lineno">   93</span>&#160;      <span class="keywordflow">if</span> (cloexec.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(cloexec.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;      }</div><div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;    }</div><div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;  }</div><div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;</div><div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;  <span class="keywordflow">return</span> <a class="code" href="structNothing.html">Nothing</a>();
 </div><div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;}</div><div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;</div><div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;</div><div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;<span class="comment">// The main entry of the child process.</span></div><div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;<span class="comment">// NOTE: This function has to be async signal safe.</span></div><div class="line"><a name="l00106"></a><span class="lineno"><a class="line" href="namespaceprocess_1_1internal.html#a902e2646d88c41ce674a3009cafe0aad">  106</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">int</span> <a class="code" href="namespaceprocess_1_1internal.html#a902e
 2646d88c41ce674a3009cafe0aad">childMain</a>(</div><div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;    <span class="keyword">const</span> std::string&amp; <a class="code" href="namespacepath.html">path</a>,</div><div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;    <span class="keywordtype">char</span>** argv,</div><div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;    <span class="keywordtype">char</span>** envp,</div><div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;    <span class="keyword">const</span> <a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors.html">InputFileDescriptors</a>&amp; stdinfds,</div><div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;    <span class="keyword">const</span> <a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html">OutputFileDescriptors</a>&amp; stdoutf
 ds,</div><div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;    <span class="keyword">const</span> <a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html">OutputFileDescriptors</a>&amp; stderrfds,</div><div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;    <span class="keywordtype">bool</span> blocking,</div><div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;    <span class="keywordtype">int</span> pipes[2],</div><div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;    <span class="keyword">const</span> std::vector&lt;Subprocess::ChildHook&gt;&amp; child_hooks)</div><div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;{</div><div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;  <span class="comment">// Close parent&#39;s end of the pipes.</span></div><div class="line"><a name="l00118"></a><span cla
 ss="lineno">  118</span>&#160;  <span class="keywordflow">if</span> (stdinfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors.html#ab812da47364d793d9ec0471d3dc8c1bc">write</a>.<a class="code" href="classOption.html#a4e3bf8416d95246f43c91f1b5c309323">isSome</a>()) {</div><div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;    ::close(stdinfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors.html#ab812da47364d793d9ec0471d3dc8c1bc">write</a>.<a class="code" href="classOption.html#a21358442c0fac1cc978a67a9a9089a79">get</a>());</div><div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;  }</div><div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;  <span class="keywordflow">if</span> (stdoutfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html#ac4af678c631a700d4be4410a250e3bce">read</a>.<a class="code" href="classOpt
 ion.html#a4e3bf8416d95246f43c91f1b5c309323">isSome</a>()) {</div><div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;    ::close(stdoutfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html#ac4af678c631a700d4be4410a250e3bce">read</a>.<a class="code" href="classOption.html#a21358442c0fac1cc978a67a9a9089a79">get</a>());</div><div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;  }</div><div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;  <span class="keywordflow">if</span> (stderrfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html#ac4af678c631a700d4be4410a250e3bce">read</a>.<a class="code" href="classOption.html#a4e3bf8416d95246f43c91f1b5c309323">isSome</a>()) {</div><div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;    ::close(stderrfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDes
 criptors.html#ac4af678c631a700d4be4410a250e3bce">read</a>.<a class="code" href="classOption.html#a21358442c0fac1cc978a67a9a9089a79">get</a>());</div><div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;  }</div><div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;</div><div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;  <span class="comment">// Currently we will block the child&#39;s execution of the new process</span></div><div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;  <span class="comment">// until all the parent hooks (if any) have executed.</span></div><div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;  <span class="keywordflow">if</span> (blocking) {</div><div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;    ::close(pipes[1]);</div><div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;  }</
 div><div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;</div><div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;  <span class="comment">// Redirect I/O for stdin/stdout/stderr.</span></div><div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;  <span class="keywordflow">while</span> (::<a class="code" href="namespaceos.html#a54f3320a4d6f88c14f80f5247aa879b9">dup2</a>(stdinfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors.html#a0a3f315345ef7b7ee6f3f1d4d337854d">read</a>, <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#afcf80a6d91178952d107ad00b165752b">STDIN_FILENO</a>) == -1 &amp;&amp; errno == EINTR);</div><div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;  <span class="keywordflow">while</span> (::<a class="code" href="namespaceos.html#a54f3320a4d6f88c14f80f5247aa879b9">dup2</a>(stdoutfds.<a class="code" href="structpr
 ocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html#a5dabb8e3008efd61ce42478f260b54ac">write</a>, <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#abd165ee6474b5b75bf075842fff13a04">STDOUT_FILENO</a>) == -1 &amp;&amp; errno == EINTR);</div><div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;  <span class="keywordflow">while</span> (::<a class="code" href="namespaceos.html#a54f3320a4d6f88c14f80f5247aa879b9">dup2</a>(stderrfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html#a5dabb8e3008efd61ce42478f260b54ac">write</a>, <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ae2fe1725bb5e9823d089c46b9ed5266e">STDERR_FILENO</a>) == -1 &amp;&amp; errno == EINTR);</div><div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;</div><div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;  <span class="comment">// Close the copies. We need t
 o make sure that we do not close the</span></div><div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;  <span class="comment">// file descriptor assigned to stdin/stdout/stderr in case the</span></div><div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;  <span class="comment">// parent has closed stdin/stdout/stderr when calling this</span></div><div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;  <span class="comment">// function (in that case, a dup&#39;ed file descriptor may have the</span></div><div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;  <span class="comment">// same file descriptor number as stdin/stdout/stderr).</span></div><div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;  <span class="comment">//</span></div><div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;  <span class="comment">// We also need to ensure 
 that we don&#39;t &quot;double close&quot; any file</span></div><div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;  <span class="comment">// descriptors in the case where one of stdinfds.read,</span></div><div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;  <span class="comment">// stdoutfds.write, or stdoutfds.write are equal.</span></div><div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;  <span class="keywordflow">if</span> (stdinfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors.html#a0a3f315345ef7b7ee6f3f1d4d337854d">read</a> != <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#afcf80a6d91178952d107ad00b165752b">STDIN_FILENO</a> &amp;&amp;</div><div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;      stdinfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors.html#a0a3f315345ef7b7ee6f3f1
 d4d337854d">read</a> != <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#abd165ee6474b5b75bf075842fff13a04">STDOUT_FILENO</a> &amp;&amp;</div><div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;      stdinfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors.html#a0a3f315345ef7b7ee6f3f1d4d337854d">read</a> != <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ae2fe1725bb5e9823d089c46b9ed5266e">STDERR_FILENO</a>) {</div><div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;    ::close(stdinfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors.html#a0a3f315345ef7b7ee6f3f1d4d337854d">read</a>);</div><div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;  }</div><div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;  <span class="keywordflow">if</span> (stdoutfds.<a class="code" href="s
 tructprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html#a5dabb8e3008efd61ce42478f260b54ac">write</a> != <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#afcf80a6d91178952d107ad00b165752b">STDIN_FILENO</a> &amp;&amp;</div><div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;      stdoutfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html#a5dabb8e3008efd61ce42478f260b54ac">write</a> != <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#abd165ee6474b5b75bf075842fff13a04">STDOUT_FILENO</a> &amp;&amp;</div><div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;      stdoutfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html#a5dabb8e3008efd61ce42478f260b54ac">write</a> != <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ae2fe1725bb5e9823d089c46b9ed5266e">STDERR_FILENO</a> &amp;&amp;</div><div 
 class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;      stdoutfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html#a5dabb8e3008efd61ce42478f260b54ac">write</a> != stdinfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors.html#a0a3f315345ef7b7ee6f3f1d4d337854d">read</a>) {</div><div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;    ::close(stdoutfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html#a5dabb8e3008efd61ce42478f260b54ac">write</a>);</div><div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;  }</div><div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;  <span class="keywordflow">if</span> (stderrfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html#a5dabb8e3008efd61ce42478f260b54ac">write</a> != <a class="code" href="3rdparty_2stout_2inc
 lude_2stout_2windows_8hpp.html#afcf80a6d91178952d107ad00b165752b">STDIN_FILENO</a> &amp;&amp;</div><div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;      stderrfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html#a5dabb8e3008efd61ce42478f260b54ac">write</a> != <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#abd165ee6474b5b75bf075842fff13a04">STDOUT_FILENO</a> &amp;&amp;</div><div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;      stderrfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html#a5dabb8e3008efd61ce42478f260b54ac">write</a> != <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ae2fe1725bb5e9823d089c46b9ed5266e">STDERR_FILENO</a> &amp;&amp;</div><div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;      stderrfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1Outpu
 tFileDescriptors.html#a5dabb8e3008efd61ce42478f260b54ac">write</a> != stdinfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors.html#a0a3f315345ef7b7ee6f3f1d4d337854d">read</a> &amp;&amp;</div><div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;      stderrfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html#a5dabb8e3008efd61ce42478f260b54ac">write</a> != stdoutfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html#a5dabb8e3008efd61ce42478f260b54ac">write</a>) {</div><div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;    ::close(stderrfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html#a5dabb8e3008efd61ce42478f260b54ac">write</a>);</div><div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;  }</div><div class="line"><a name="l00166"></a><span class="lineno">  166</span
 >&#160;</div><div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;  <span class="keywordflow">if</span> (blocking) {</div><div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;    <span class="comment">// Do a blocking read on the pipe until the parent signals us to</span></div><div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;    <span class="comment">// continue.</span></div><div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;    <span class="keywordtype">char</span> dummy;</div><div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;    <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a894c4d58faeee7675b9e7e8244de1386">ssize_t</a> length;</div><div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;    <span class="keywordflow">while</span> ((length = ::<a class="code" href="namespacemesos_1_1internal_1_1credent
 ials.html#a137c93d60149616181a10e9f39986f7f">read</a>(pipes[0], &amp;dummy, <span class="keyword">sizeof</span>(dummy))) == -1 &amp;&amp;</div><div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;          errno == EINTR);</div><div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;</div><div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;    <span class="keywordflow">if</span> (length != <span class="keyword">sizeof</span>(dummy)) {</div><div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;      <a class="code" href="abort_8hpp.html#a4d84a74fe6e4f84bc3d2f901b9e89f93">ABORT</a>(<span class="stringliteral">&quot;Failed to synchronize with parent&quot;</span>);</div><div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;    }</div><div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;</div><div class="line"><a name="l00179"></a><span class="
 lineno">  179</span>&#160;    <span class="comment">// Now close the pipe as we don&#39;t need it anymore.</span></div><div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;    ::close(pipes[0]);</div><div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;  }</div><div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160;</div><div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;  <span class="comment">// Run the child hooks.</span></div><div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;  <span class="keywordflow">foreach</span> (<span class="keyword">const</span> <a class="code" href="classprocess_1_1Subprocess_1_1ChildHook.html">Subprocess::ChildHook</a>&amp; hook, child_hooks) {</div><div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;    <a class="code" href="classTry.html">Try&lt;Nothing&gt;</a> callback = hook();</div><div class="lin
 e"><a name="l00186"></a><span class="lineno">  186</span>&#160;</div><div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;    <span class="comment">// If the callback failed, we should abort execution.</span></div><div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;    <span class="keywordflow">if</span> (callback.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160;      <a class="code" href="abort_8hpp.html#a4d84a74fe6e4f84bc3d2f901b9e89f93">ABORT</a>(<span class="stringliteral">&quot;Failed to execute Subprocess::ChildHook: &quot;</span> + callback.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00190"></a><span class="lineno">  190</span>&#160;    }</div><div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160;  }</div><div
  class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;</div><div class="line"><a name="l00193"></a><span class="lineno">  193</span>&#160;  <a class="code" href="namespaceos.html#aebc3586b2be0d2b9093ccfbf25dfcde8">os::execvpe</a>(path.c_str(), argv, envp);</div><div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#160;</div><div class="line"><a name="l00195"></a><span class="lineno">  195</span>&#160;  <a class="code" href="exit_8hpp.html#a637cd32ee4af0a5a1d1aea8a0d7f7564">SAFE_EXIT</a>(</div><div class="line"><a name="l00196"></a><span class="lineno">  196</span>&#160;      errno, <span class="stringliteral">&quot;Failed to os::execvpe on path &#39;%s&#39;: %d&quot;</span>, path.c_str(), errno);</div><div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;}</div><div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160;</div><div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160
 ;</div><div class="line"><a name="l00200"></a><span class="lineno"><a class="line" href="namespaceprocess_1_1internal.html#afe2c3a3ffdd0ee6fda82e198ece80a37">  200</a></span>&#160;<span class="keyword">inline</span> <a class="code" href="classTry.html">Try&lt;pid_t&gt;</a> <a class="code" href="namespaceprocess_1_1internal.html#afe2c3a3ffdd0ee6fda82e198ece80a37">cloneChild</a>(</div><div class="line"><a name="l00201"></a><span class="lineno">  201</span>&#160;    <span class="keyword">const</span> std::string&amp; <a class="code" href="namespacepath.html">path</a>,</div><div class="line"><a name="l00202"></a><span class="lineno">  202</span>&#160;    std::vector&lt;std::string&gt; argv,</div><div class="line"><a name="l00203"></a><span class="lineno">  203</span>&#160;    <span class="keyword">const</span> <a class="code" href="classOption.html">Option</a>&lt;std::map&lt;std::string, std::string&gt;&gt;&amp; <a class="code" href="namespacemesos_1_1internal_1_1tests.html#a1396c5e3b0a
 179220de2792d74770ec2">environment</a>,</div><div class="line"><a name="l00204"></a><span class="lineno">  204</span>&#160;    <span class="keyword">const</span> <a class="code" href="classOption.html">Option</a>&lt;lambda::function&lt;</div><div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160;        <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a>(<span class="keyword">const</span> lambda::function&lt;<span class="keywordtype">int</span>()&gt;&amp;)&gt;&gt;&amp; _clone,</div><div class="line"><a name="l00206"></a><span class="lineno">  206</span>&#160;    <span class="keyword">const</span> std::vector&lt;Subprocess::ParentHook&gt;&amp; parent_hooks,</div><div class="line"><a name="l00207"></a><span class="lineno">  207</span>&#160;    <span class="keyword">const</span> std::vector&lt;Subprocess::ChildHook&gt;&amp; child_hooks,</div><div class="line"><a name="l00208"></a><span class="linen
 o">  208</span>&#160;    <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="l00209"></a><span class="lineno">  209</span>&#160;    <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="l00210"></a><span class="lineno">  210</span>&#160;    <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="l00211"></a><span class="lineno">  211</span>&#160;{</div><div class="line"><a name="l00212"></a><span class="lineno">  212</span>&#160;  <span class="comment">// The real arguments that will be passed to &#39;os::execvpe&#39;. We need</span></div><div class="line"><a name="l00213"></a><span
  class="lineno">  213</span>&#160;  <span class="comment">// to construct them here before doing the clone as it might not be</span></div><div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160;  <span class="comment">// async signal safe to perform the memory allocation.</span></div><div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160;  <span class="keywordtype">char</span>** _argv = <span class="keyword">new</span> <span class="keywordtype">char</span>*[argv.size() + 1];</div><div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#160;  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; argv.size(); i++) {</div><div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160;    _argv[i] = (<span class="keywordtype">char</span>*) argv[i].c_str();</div><div class="line"><a name="l00218"></a><span class="lineno">  218</span>&#160;  }</div><div class="line"><a name="
 l00219"></a><span class="lineno">  219</span>&#160;  _argv[argv.size()] = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00220"></a><span class="lineno">  220</span>&#160;</div><div class="line"><a name="l00221"></a><span class="lineno">  221</span>&#160;  <span class="comment">// Like above, we need to construct the environment that we&#39;ll pass</span></div><div class="line"><a name="l00222"></a><span class="lineno">  222</span>&#160;  <span class="comment">// to &#39;os::execvpe&#39; as it might not be async-safe to perform the</span></div><div class="line"><a name="l00223"></a><span class="lineno">  223</span>&#160;  <span class="comment">// memory allocations.</span></div><div class="line"><a name="l00224"></a><span class="lineno">  224</span>&#160;  <span class="keywordtype">char</span>** envp = <a class="code" href="namespaceos_1_1raw.html#aad2bd3acb3ca09c75a1a1db58075f9f4">os::raw::environment</a>();</div><div class="line"><a name="l00225"></a><span 
 class="lineno">  225</span>&#160;</div><div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;  <span class="keywordflow">if</span> (<a class="code" href="namespacemesos_1_1internal_1_1tests.html#a1396c5e3b0a179220de2792d74770ec2">environment</a>.isSome()) {</div><div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160;    <span class="comment">// NOTE: We add 1 to the size for a `nullptr` terminator.</span></div><div class="line"><a name="l00228"></a><span class="lineno">  228</span>&#160;    envp = <span class="keyword">new</span> <span class="keywordtype">char</span>*[<a class="code" href="namespacemesos_1_1internal_1_1tests.html#a1396c5e3b0a179220de2792d74770ec2">environment</a>-&gt;size() + 1];</div><div class="line"><a name="l00229"></a><span class="lineno">  229</span>&#160;</div><div class="line"><a name="l00230"></a><span class="lineno">  230</span>&#160;    <span class="keywordtype">size_t</span> <a class="code" href="namespacero
 uting_1_1link.html#a26486cdba01ef1c80706b1e07e8a6d3f">index</a> = 0;</div><div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160;    <a class="code" href="foreach_8hpp.html#a66900b166526abe66464d6597536b111">foreachpair</a> (</div><div class="line"><a name="l00232"></a><span class="lineno">  232</span>&#160;        <span class="keyword">const</span> std::string&amp; key,</div><div class="line"><a name="l00233"></a><span class="lineno">  233</span>&#160;        <span class="keyword">const</span> std::string&amp; value, <a class="code" href="namespacemesos_1_1internal_1_1tests.html#a1396c5e3b0a179220de2792d74770ec2">environment</a>.get()) {</div><div class="line"><a name="l00234"></a><span class="lineno">  234</span>&#160;      std::string entry = key + <span class="stringliteral">&quot;=&quot;</span> + value;</div><div class="line"><a name="l00235"></a><span class="lineno">  235</span>&#160;      envp[<a class="code" href="namespacerouting_1_1link.html#a26486cd
 ba01ef1c80706b1e07e8a6d3f">index</a>] = <span class="keyword">new</span> <span class="keywordtype">char</span>[entry.size() + 1];</div><div class="line"><a name="l00236"></a><span class="lineno">  236</span>&#160;      strncpy(envp[index], entry.c_str(), entry.size() + 1);</div><div class="line"><a name="l00237"></a><span class="lineno">  237</span>&#160;      ++<a class="code" href="namespacerouting_1_1link.html#a26486cdba01ef1c80706b1e07e8a6d3f">index</a>;</div><div class="line"><a name="l00238"></a><span class="lineno">  238</span>&#160;    }</div><div class="line"><a name="l00239"></a><span class="lineno">  239</span>&#160;</div><div class="line"><a name="l00240"></a><span class="lineno">  240</span>&#160;    envp[<a class="code" href="namespacerouting_1_1link.html#a26486cdba01ef1c80706b1e07e8a6d3f">index</a>] = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00241"></a><span class="lineno">  241</span>&#160;  }</div><div class="line"><a name="l00242"></a>
 <span class="lineno">  242</span>&#160;</div><div class="line"><a name="l00243"></a><span class="lineno">  243</span>&#160;  <span class="comment">// Determine the function to clone the child process. If the user</span></div><div class="line"><a name="l00244"></a><span class="lineno">  244</span>&#160;  <span class="comment">// does not specify the clone function, we will use the default.</span></div><div class="line"><a name="l00245"></a><span class="lineno">  245</span>&#160;  lambda::function&lt;pid_t(const lambda::function&lt;int()&gt;&amp;)&gt; <a class="code" href="namespacens.html#a98bf4d9e11d546326250997a6493f835">clone</a> =</div><div class="line"><a name="l00246"></a><span class="lineno">  246</span>&#160;    (_clone.isSome() ? _clone.get() : <a class="code" href="namespaceprocess_1_1internal.html#af2f19b6f367cddc0c8283560a9cd9215">defaultClone</a>);</div><div class="line"><a name="l00247"></a><span class="lineno">  247</span>&#160;</div><div class="line"><a name="l00248">
 </a><span class="lineno">  248</span>&#160;  <span class="comment">// Currently we will block the child&#39;s execution of the new process</span></div><div class="line"><a name="l00249"></a><span class="lineno">  249</span>&#160;  <span class="comment">// until all the `parent_hooks` (if any) have executed.</span></div><div class="line"><a name="l00250"></a><span class="lineno">  250</span>&#160;  std::array&lt;int, 2&gt; pipes;</div><div class="line"><a name="l00251"></a><span class="lineno">  251</span>&#160;  <span class="keyword">const</span> <span class="keywordtype">bool</span> blocking = !parent_hooks.empty();</div><div class="line"><a name="l00252"></a><span class="lineno">  252</span>&#160;</div><div class="line"><a name="l00253"></a><span class="lineno">  253</span>&#160;  <span class="keywordflow">if</span> (blocking) {</div><div class="line"><a name="l00254"></a><span class="lineno">  254</span>&#160;    <span class="comment">// We assume this should not fail under reaso
 nable conditions so we</span></div><div class="line"><a name="l00255"></a><span class="lineno">  255</span>&#160;    <span class="comment">// use CHECK.</span></div><div class="line"><a name="l00256"></a><span class="lineno">  256</span>&#160;    <a class="code" href="classTry.html">Try&lt;std::array&lt;int, 2&gt;</a>&gt; <a class="code" href="namespaceos.html#afefbea8a88b84bed66580372accb18a9">pipe</a> = <a class="code" href="namespaceos.html#afefbea8a88b84bed66580372accb18a9">os::pipe</a>();</div><div class="line"><a name="l00257"></a><span class="lineno">  257</span>&#160;    <a class="code" href="stout_2include_2stout_2check_8hpp.html#aee320e7c6e107071f4b85d4cc135a265">CHECK_SOME</a>(pipe);</div><div class="line"><a name="l00258"></a><span class="lineno">  258</span>&#160;</div><div class="line"><a name="l00259"></a><span class="lineno">  259</span>&#160;    pipes = pipe.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>();</div><div class="line"><a n
 ame="l00260"></a><span class="lineno">  260</span>&#160;  }</div><div class="line"><a name="l00261"></a><span class="lineno">  261</span>&#160;</div><div class="line"><a name="l00262"></a><span class="lineno">  262</span>&#160;  <span class="comment">// Now, clone the child process.</span></div><div class="line"><a name="l00263"></a><span class="lineno">  263</span>&#160;  <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a> pid = <a class="code" href="namespacens.html#a98bf4d9e11d546326250997a6493f835">clone</a>(<a class="code" href="namespaceprocess_1_1network.html#ad067110a4b38cc83785a43f49bf6c8e2">lambda::bind</a>(</div><div class="line"><a name="l00264"></a><span class="lineno">  264</span>&#160;      &amp;<a class="code" href="namespaceprocess_1_1internal.html#a902e2646d88c41ce674a3009cafe0aad">childMain</a>,</div><div class="line"><a name="l00265"></a><span class="lineno">  265</span>&#160;      path,</div><div 
 class="line"><a name="l00266"></a><span class="lineno">  266</span>&#160;      _argv,</div><div class="line"><a name="l00267"></a><span class="lineno">  267</span>&#160;      envp,</div><div class="line"><a name="l00268"></a><span class="lineno">  268</span>&#160;      stdinfds,</div><div class="line"><a name="l00269"></a><span class="lineno">  269</span>&#160;      stdoutfds,</div><div class="line"><a name="l00270"></a><span class="lineno">  270</span>&#160;      stderrfds,</div><div class="line"><a name="l00271"></a><span class="lineno">  271</span>&#160;      blocking,</div><div class="line"><a name="l00272"></a><span class="lineno">  272</span>&#160;      pipes.data(),</div><div class="line"><a name="l00273"></a><span class="lineno">  273</span>&#160;      child_hooks));</div><div class="line"><a name="l00274"></a><span class="lineno">  274</span>&#160;</div><div class="line"><a name="l00275"></a><span class="lineno">  275</span>&#160;  <span class="keyword">delete</span>[] _arg
 v;</div><div class="line"><a name="l00276"></a><span class="lineno">  276</span>&#160;</div><div class="line"><a name="l00277"></a><span class="lineno">  277</span>&#160;  <span class="comment">// Need to delete &#39;envp&#39; if we had environment variables passed to</span></div><div class="line"><a name="l00278"></a><span class="lineno">  278</span>&#160;  <span class="comment">// us and we needed to allocate the space.</span></div><div class="line"><a name="l00279"></a><span class="lineno">  279</span>&#160;  <span class="keywordflow">if</span> (<a class="code" href="namespacemesos_1_1internal_1_1tests.html#a1396c5e3b0a179220de2792d74770ec2">environment</a>.isSome()) {</div><div class="line"><a name="l00280"></a><span class="lineno">  280</span>&#160;    CHECK_NE(<a class="code" href="namespaceos_1_1raw.html#aad2bd3acb3ca09c75a1a1db58075f9f4">os::raw::environment</a>(), envp);</div><div class="line"><a name="l00281"></a><span class="lineno">  281</span>&#160;</div><div class="lin
 e"><a name="l00282"></a><span class="lineno">  282</span>&#160;    <span class="comment">// We ignore the last &#39;envp&#39; entry since it is nullptr.</span></div><div class="line"><a name="l00283"></a><span class="lineno">  283</span>&#160;    <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> <a class="code" href="namespacerouting_1_1link.html#a26486cdba01ef1c80706b1e07e8a6d3f">index</a> = 0; <a class="code" href="namespacerouting_1_1link.html#a26486cdba01ef1c80706b1e07e8a6d3f">index</a> &lt; <a class="code" href="namespacemesos_1_1internal_1_1tests.html#a1396c5e3b0a179220de2792d74770ec2">environment</a>-&gt;size(); <a class="code" href="namespacerouting_1_1link.html#a26486cdba01ef1c80706b1e07e8a6d3f">index</a>++) {</div><div class="line"><a name="l00284"></a><span class="lineno">  284</span>&#160;      <span class="keyword">delete</span>[] envp[<a class="code" href="namespacerouting_1_1link.html#a26486cdba01ef1c80706b1e07e8a6d3f">index</a>];</div><div
  class="line"><a name="l00285"></a><span class="lineno">  285</span>&#160;    }</div><div class="line"><a name="l00286"></a><span class="lineno">  286</span>&#160;</div><div class="line"><a name="l00287"></a><span class="lineno">  287</span>&#160;    <span class="keyword">delete</span>[] envp;</div><div class="line"><a name="l00288"></a><span class="lineno">  288</span>&#160;  }</div><div class="line"><a name="l00289"></a><span class="lineno">  289</span>&#160;</div><div class="line"><a name="l00290"></a><span class="lineno">  290</span>&#160;  <span class="keywordflow">if</span> (pid == -1) {</div><div class="line"><a name="l00291"></a><span class="lineno">  291</span>&#160;    <span class="comment">// Save the errno as &#39;close&#39; below might overwrite it.</span></div><div class="line"><a name="l00292"></a><span class="lineno">  292</span>&#160;    <a class="code" href="classErrnoError.html">ErrnoError</a> <a class="code" href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spe
 c.html#ae58e703656ab4a1bd5d9870441236727">error</a>(<span class="stringliteral">&quot;Failed to clone&quot;</span>);</div><div class="line"><a name="l00293"></a><span class="lineno">  293</span>&#160;    internal::close(stdinfds, stdoutfds, stderrfds);</div><div class="line"><a name="l00294"></a><span class="lineno">  294</span>&#160;</div><div class="line"><a name="l00295"></a><span class="lineno">  295</span>&#160;    <span class="keywordflow">if</span> (blocking) {</div><div class="line"><a name="l00296"></a><span class="lineno">  296</span>&#160;      <a class="code" href="namespaceos.html#a8df77ec6d6b8d32d9b287a41bc74cfdc">os::close</a>(pipes[0]);</div><div class="line"><a name="l00297"></a><span class="lineno">  297</span>&#160;      <a class="code" href="namespaceos.html#a8df77ec6d6b8d32d9b287a41bc74cfdc">os::close</a>(pipes[1]);</div><div class="line"><a name="l00298"></a><span class="lineno">  298</span>&#160;    }</div><div class="line"><a name="l00299"></a><span class="li
 neno">  299</span>&#160;</div><div class="line"><a name="l00300"></a><span class="lineno">  300</span>&#160;    <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="l00301"></a><span class="lineno">  301</span>&#160;  }</div><div class="line"><a name="l00302"></a><span class="lineno">  302</span>&#160;</div><div class="line"><a name="l00303"></a><span class="lineno">  303</span>&#160;  <span class="comment">// Close the child-ends of the file descriptors that are created by</span></div><div class="line"><a name="l00304"></a><span class="lineno">  304</span>&#160;  <span class="comment">// this function.</span></div><div class="line"><a name="l00305"></a><span class="lineno">  305</span>&#160;  internal::close({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>, stderrfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html#a5dabb8e3008efd61ce42478f260b54ac">write</a>});</div><div class="line"><a name="l00306"></a><span class="lineno">  306</span>&#160;</div><div class="line"><a name="l00307"></a><span class="lineno">  307</span>&#160;  <span class="keywordflow">if</span> (blocking) {</div><div class="line"><a name="l00308"></a><span class="lineno">  308</span>&#160;    <a class="code" href="namespaceos.html#a8df77ec6d6b8d32d9b287a41bc74cfdc">os::close</a>(pipes[0]);</div><div class="line"><a name="l00309"></a><span class="lineno">  309</span>&#160;</div><div class="line"><a name="l00310"></a><span class="lineno">  310</span>&#160;    <span class="comment">// Run the parent hooks.</span></div><div class="line"><a name="l00311"></a><span class="lineno">  311</span>
 &#160;    <span class="keywordflow">foreach</span> (<span class="keyword">const</span> <a class="code" href="structprocess_1_1Subprocess_1_1ParentHook.html">Subprocess::ParentHook</a>&amp; hook, parent_hooks) {</div><div class="line"><a name="l00312"></a><span class="lineno">  312</span>&#160;      <a class="code" href="classTry.html">Try&lt;Nothing&gt;</a> parentSetup = hook.<a class="code" href="structprocess_1_1Subprocess_1_1ParentHook.html#aaf9ff141314d619cd65cd8ec9320fb7d">parent_setup</a>(pid);</div><div class="line"><a name="l00313"></a><span class="lineno">  313</span>&#160;</div><div class="line"><a name="l00314"></a><span class="lineno">  314</span>&#160;      <span class="comment">// If the hook callback fails, we shouldn&#39;t proceed with the</span></div><div class="line"><a name="l00315"></a><span class="lineno">  315</span>&#160;      <span class="comment">// execution and hence the child process should be killed.</span></div><div class="line"><a name="l00316"></a><sp
 an class="lineno">  316</span>&#160;      <span class="keywordflow">if</span> (parentSetup.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00317"></a><span class="lineno">  317</span>&#160;        LOG(WARNING)</div><div class="line"><a name="l00318"></a><span class="lineno">  318</span>&#160;          &lt;&lt; <span class="stringliteral">&quot;Failed to execute Subprocess::ParentHook in parent for child &#39;&quot;</span></div><div class="line"><a name="l00319"></a><span class="lineno">  319</span>&#160;          &lt;&lt; pid &lt;&lt; <span class="stringliteral">&quot;&#39;: &quot;</span> &lt;&lt; parentSetup.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>();</div><div class="line"><a name="l00320"></a><span class="lineno">  320</span>&#160;</div><div class="line"><a name="l00321"></a><span class="lineno">  321</span>&#160;        <a class="code" href="namespaceos.html#a8df77ec6
 d6b8d32d9b287a41bc74cfdc">os::close</a>(pipes[1]);</div><div class="line"><a name="l00322"></a><span class="lineno">  322</span>&#160;</div><div class="line"><a name="l00323"></a><span class="lineno">  323</span>&#160;        <span class="comment">// Ensure the child is killed.</span></div><div class="line"><a name="l00324"></a><span class="lineno">  324</span>&#160;        <a class="code" href="namespacecgroups.html#ab75e1e2d1be63eec907bf12306a7c8a7">::kill</a>(pid, <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a1c2b5693161bbc9d516ef5d16c7b54f5">SIGKILL</a>);</div><div class="line"><a name="l00325"></a><span class="lineno">  325</span>&#160;</div><div class="line"><a name="l00326"></a><span class="lineno">  326</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(</div><div class="line"><a name="l00327"></a><span class="lineno">  327</span>&#160;            <span class="stringliteral">&quot;Failed to
  execute Subprocess::ParentHook in parent for child &#39;&quot;</span> +</div><div class="line"><a name="l00328"></a><span class="lineno">  328</span>&#160;            <a class="code" href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(pid) + <span class="stringliteral">&quot;&#39;: &quot;</span> + parentSetup.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00329"></a><span class="lineno">  329</span>&#160;      }</div><div class="line"><a name="l00330"></a><span class="lineno">  330</span>&#160;    }</div><div class="line"><a name="l00331"></a><span class="lineno">  331</span>&#160;</div><div class="line"><a name="l00332"></a><span class="lineno">  332</span>&#160;    <span class="comment">// Now that we&#39;ve executed the parent hooks, we can signal the child to</span></div><div class="line"><a name="l00333"></a><span class="lineno">  333</span>&#160;    <span class="comment">// continue by 
 writing to the pipe.</span></div><div class="line"><a name="l00334"></a><span class="lineno">  334</span>&#160;    <span class="keywordtype">char</span> dummy;</div><div class="line"><a name="l00335"></a><span class="lineno">  335</span>&#160;    <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a894c4d58faeee7675b9e7e8244de1386">ssize_t</a> length;</div><div class="line"><a name="l00336"></a><span class="lineno">  336</span>&#160;    <span class="keywordflow">while</span> ((length = ::<a class="code" href="namespacemesos_1_1internal_1_1log_1_1protocol.html#a66ff2d5af4db53227f787281c0765d8d">write</a>(pipes[1], &amp;dummy, <span class="keyword">sizeof</span>(dummy))) == -1 &amp;&amp;</div><div class="line"><a name="l00337"></a><span class="lineno">  337</span>&#160;           errno == EINTR);</div><div class="line"><a name="l00338"></a><span class="lineno">  338</span>&#160;</div><div class="line"><a name="l00339"></a><span class="lineno">  339</span>&#160;   
  <a class="code" href="namespaceos.html#a8df77ec6d6b8d32d9b287a41bc74cfdc">os::close</a>(pipes[1]);</div><div class="line"><a name="l00340"></a><span class="lineno">  340</span>&#160;</div><div class="line"><a name="l00341"></a><span class="lineno">  341</span>&#160;    <span class="keywordflow">if</span> (length != <span class="keyword">sizeof</span>(dummy)) {</div><div class="line"><a name="l00342"></a><span class="lineno">  342</span>&#160;      <span class="comment">// Ensure the child is killed.</span></div><div class="line"><a name="l00343"></a><span class="lineno">  343</span>&#160;      <a class="code" href="namespacecgroups.html#ab75e1e2d1be63eec907bf12306a7c8a7">::kill</a>(pid, <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a1c2b5693161bbc9d516ef5d16c7b54f5">SIGKILL</a>);</div><div class="line"><a name="l00344"></a><span class="lineno">  344</span>&#160;</div><div class="line"><a name="l00345"></a><span class="lineno">  345</span>&#160;      <span
  class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">&quot;Failed to synchronize child process&quot;</span>);</div><div class="line"><a name="l00346"></a><span class="lineno">  346</span>&#160;    }</div><div class="line"><a name="l00347"></a><span class="lineno">  347</span>&#160;  }</div><div class="line"><a name="l00348"></a><span class="lineno">  348</span>&#160;</div><div class="line"><a name="l00349"></a><span class="lineno">  349</span>&#160;  <span class="keywordflow">return</span> pid;</div><div class="line"><a name="l00350"></a><span class="lineno">  350</span>&#160;}</div><div class="line"><a name="l00351"></a><span class="lineno">  351</span>&#160;</div><div class="line"><a name="l00352"></a><span class="lineno">  352</span>&#160;}  <span class="comment">// namespace internal {</span></div><div class="line"><a name="l00353"></a><span class="lineno">  353</span>&#160;}  <span class="comment">// namespace process {
 </span></div><div class="line"><a name="l00354"></a><span class="lineno">  354</span>&#160;</div><div class="line"><a name="l00355"></a><span class="lineno">  355</span>&#160;<span class="preprocessor">#endif // __PROCESS_POSIX_SUBPROCESS_HPP__</span></div><div class="ttc" id="namespaceos_html_a54f3320a4d6f88c14f80f5247aa879b9"><div class="ttname"><a href="namespaceos.html#a54f3320a4d6f88c14f80f5247aa879b9">os::dup2</a></div><div class="ttdeci">Try&lt; Nothing &gt; dup2(int oldFd, int newFd)</div><div class="ttdef"><b>Definition:</b> os.hpp:434</div></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="namespaceos_html_afefbea8a88b84bed66580372accb18a9"><div class="ttname"><a href="namespaceos.html#afefbea8a88b84bed66580372accb18a9">os::pipe</a></div><div class="ttdeci">Try&lt; std::array&lt; int, 2 &gt; &gt; pipe()</div><div class="ttdef"><b>Definition:</b> pipe.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: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&lt; pid_t &gt; clone(pid_t target, int nstypes, const lambda::function&lt; int()&gt; &amp;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>
+<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 &amp;&amp;u) const &amp;</div><div class="ttdef"><b>Definition:</b> option.hpp:127</div></div>
+<div class="ttc" id="namespaceprocess_html_a882829822afa4f33b90aafc9c4ffa9af"><div class="ttname"><a href="namespaceprocess.html#a882829822afa4f33b90aafc9c4ffa9af">process::OutputFileDescriptors</a></div><div class="ttdeci">Subprocess::IO::OutputFileDescriptors OutputFileDescriptors</div><div class="ttdef"><b>Definition:</b> subprocess.hpp:344</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 &amp; get()&amp;</div><div class="ttdef"><b>Definition:</b> try.hpp:73</div></div>
+<div class="ttc" id="3rdparty_2stout_2include_2stout_2windows_8hpp_html_a1c2b5693161bbc9d516ef5d16c7b54f5"><div class="ttname"><a href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a1c2b5693161bbc9d516ef5d16c7b54f5">SIGKILL</a></div><div class="ttdeci">const mode_t SIGKILL</div><div class="ttdef"><b>Definition:</b> windows.hpp:335</div></div>
+<div class="ttc" id="classprocess_1_1Subprocess_1_1ChildHook_html"><div class="ttname"><a href="classprocess_1_1Subprocess_1_1ChildHook.html">process::Subprocess::ChildHook</a></div><div class="ttdoc">A ChildHook can be passed to a subprocess call. </div><div class="ttdef"><b>Definition:</b> subprocess.hpp:190</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="classhashset_html"><div class="ttname"><a href="classhashset.html">hashset</a></div><div class="ttdef"><b>Definition:</b> hashset.hpp:53</div></div>
+<div class="ttc" id="include_2process_2subprocess_8hpp_html"><div class="ttname"><a href="include_2process_2subprocess_8hpp.html">subprocess.hpp</a></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="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="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors_html_a0a3f315345ef7b7ee6f3f1d4d337854d"><div class="ttname"><a href="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors.html#a0a3f315345ef7b7ee6f3f1d4d337854d">process::Subprocess::IO::InputFileDescriptors::read</a></div><div class="ttdeci">int_fd read</div><div class="ttdef"><b>Definition:</b> subprocess.hpp:75</div></div>
+<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&lt; int()&gt; &amp;func)</div><div class="ttdef"><b>Definition:</b> subprocess.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: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&lt; Nothing &gt; cloexec(const InputFileDescriptors &amp;stdinfds, const OutputFileDescriptors &amp;stdoutfds, const OutputFileDescriptors &amp;stderrfds)</div><div class="ttdef"><b>Definition:</b> subprocess.hpp:76</div></div>
+<div class="ttc" id="lambda_8hpp_html"><div class="ttname"><a href="lambda_8hpp.html">lambda.hpp</a></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="classOption_html_a4e3bf8416d95246f43c91f1b5c309323"><div class="ttname"><a href="classOption.html#a4e3bf8416d95246f43c91f1b5c309323">Option::isSome</a></div><div class="ttdeci">bool isSome() const </div><div class="ttdef"><b>Definition:</b> option.hpp:115</div></div>
+<div class="ttc" id="namespaceprocess_html_afc6611c4913642642277b44447a16e55"><div class="ttname"><a href="namespaceprocess.html#afc6611c4913642642277b44447a16e55">process::InputFileDescriptors</a></div><div class="ttdeci">Subprocess::IO::InputFileDescriptors InputFileDescriptors</div><div class="ttdef"><b>Definition:</b> subprocess.hpp:343</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="namespacemesos_1_1internal_1_1tests_html_a1396c5e3b0a179220de2792d74770ec2"><div class="ttname"><a href="namespacemesos_1_1internal_1_1tests.html#a1396c5e3b0a179220de2792d74770ec2">mesos::internal::tests::environment</a></div><div class="ttdeci">Environment * environment</div></div>
+<div class="ttc" id="3rdparty_2stout_2include_2stout_2windows_8hpp_html_ab03ced250ed239bc3b50b669493997f9"><div class="ttname"><a href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a></div><div class="ttdeci">DWORD pid_t</div><div class="ttdef"><b>Definition:</b> windows.hpp:181</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&lt; int &gt; index(const std::string &amp;link)</div></div>
+<div class="ttc" id="stout_2include_2stout_2check_8hpp_html_aee320e7c6e107071f4b85d4cc135a265"><div class="ttname"><a href="stout_2include_2stout_2check_8hpp.html#aee320e7c6e107071f4b85d4cc135a265">CHECK_SOME</a></div><div class="ttdeci">#define CHECK_SOME(expression)</div><div class="ttdef"><b>Definition:</b> check.hpp:50</div></div>
+<div class="ttc" id="3rdparty_2stout_2include_2stout_2windows_8hpp_html_abd165ee6474b5b75bf075842fff13a04"><div class="ttname"><a href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#abd165ee6474b5b75bf075842fff13a04">STDOUT_FILENO</a></div><div class="ttdeci">#define STDOUT_FILENO</div><div class="ttdef"><b>Definition:</b> windows.hpp:154</div></div>
+<div class="ttc" id="fcntl_8hpp_html"><div class="ttname"><a href="fcntl_8hpp.html">fcntl.hpp</a></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="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors_html_a5dabb8e3008efd61ce42478f260b54ac"><div class="ttname"><a href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html#a5dabb8e3008efd61ce42478f260b54ac">process::Subprocess::IO::OutputFileDescriptors::write</a></div><div class="ttdeci">int_fd write</div><div class="ttdef"><b>Definition:</b> subprocess.hpp:91</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&lt; Nothing &gt; close(int fd)</div><div class="ttdef"><b>Definition:</b> close.hpp:24</div></div>
+<div class="ttc" id="namespaceos_html_a7d71bda07a41304403b0e13aa47f0764"><div class="ttname"><a href="namespaceos.html#a7d71bda07a41304403b0e13aa47f0764">os::cloexec</a></div><div class="ttdeci">Try&lt; Nothing &gt; cloexec(int fd)</div><div class="ttdef"><b>Definition:</b> fcntl.hpp:27</div></div>
+<div class="ttc" id="classOption_html_a21358442c0fac1cc978a67a9a9089a79"><div class="ttname"><a href="classOption.html#a21358442c0fac1cc978a67a9a9089a79">Option::get</a></div><div class="ttdeci">const T &amp; get() const &amp;</div><div class="ttdef"><b>Definition:</b> option.hpp:118</div></div>
+<div class="ttc" id="foreach_8hpp_html_a66900b166526abe66464d6597536b111"><div class="ttname"><a href="foreach_8hpp.html#a66900b166526abe66464d6597536b111">foreachpair</a></div><div class="ttdeci">#define foreachpair(KEY, VALUE, ELEMS)</div><div class="ttdef"><b>Definition:</b> foreach.hpp:51</div></div>
+<div class="ttc" id="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors_html"><div class="ttname"><a href="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors.html">process::Subprocess::IO::InputFileDescriptors</a></div><div class="ttdoc">For input file descriptors a child reads from the read file descriptor and a parent may write to the ...</div><div class="ttdef"><b>Definition:</b> subprocess.hpp:73</div></div>
+<div class="ttc" id="namespaceprocess_1_1internal_html_afe2c3a3ffdd0ee6fda82e198ece80a37"><div class="ttname"><a href="namespaceprocess_1_1internal.html#afe2c3a3ffdd0ee6fda82e198ece80a37">process::internal::cloneChild</a></div><div class="ttdeci">Try&lt; pid_t &gt; cloneChild(const std::string &amp;path, std::vector&lt; std::string &gt; argv, const Option&lt; std::map&lt; std::string, std::string &gt;&gt; &amp;environment, const Option&lt; lambda::function&lt; pid_t(const lambda::function&lt; int()&gt; &amp;)&gt;&gt; &amp;_clone, const std::vector&lt; Subprocess::ParentHook &gt; &amp;parent_hooks, const std::vector&lt; Subprocess::ChildHook &gt; &amp;child_hooks, const InputFileDescriptors stdinfds, const OutputFileDescriptors stdoutfds, const OutputFileDescriptors stderrfds)</div><div class="ttdef"><b>Definition:</b> subprocess.hpp:200</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="3rdparty_2stout_2include_2stout_2windows_8hpp_html_afcf80a6d91178952d107ad00b165752b"><div class="ttname"><a href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#afcf80a6d91178952d107ad00b165752b">STDIN_FILENO</a></div><div class="ttdeci">#define STDIN_FILENO</div><div class="ttdef"><b>Definition:</b> windows.hpp:153</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 &amp;e)</div><div class="ttdef"><b>Definition:</b> try.hpp:42</div></div>
+<div class="ttc" id="unreachable_8hpp_html_a0bc63b24b654ca433be7b97a3edde132"><div class="ttname"><a href="unreachable_8hpp.html#a0bc63b24b654ca433be7b97a3edde132">UNREACHABLE</a></div><div class="ttdeci">#define UNREACHABLE()</div><div class="ttdef"><b>Definition:</b> unreachable.hpp:22</div></div>
+<div class="ttc" id="structprocess_1_1Subprocess_1_1ParentHook_html_aaf9ff141314d619cd65cd8ec9320fb7d"><div class="ttname"><a href="structprocess_1_1Subprocess_1_1ParentHook.html#aaf9ff141314d619cd65cd8ec9320fb7d">process::Subprocess::ParentHook::parent_setup</a></div><div class="ttdeci">const lambda::function&lt; Try&lt; Nothing &gt;pid_t)&gt; parent_setup</div><div class="ttdoc">The callback that must be specified for execution after the child has been cloned, but before it starts executing the new process. </div><div class="ttdef"><b>Definition:</b> subprocess.hpp:163</div></div>
+<div class="ttc" id="foreach_8hpp_html"><div class="ttname"><a href="foreach_8hpp.html">foreach.hpp</a></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="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>
+<div class="ttc" id="namespacemesos_1_1internal_1_1credentials_html_a137c93d60149616181a10e9f39986f7f"><div class="ttname"><a href="namespacemesos_1_1internal_1_1credentials.html#a137c93d60149616181a10e9f39986f7f">mesos::internal::credentials::read</a></div><div class="ttdeci">Result&lt; Credentials &gt; read(const Path &amp;path)</div><div class="ttdef"><b>Definition:</b> credentials.hpp:35</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 &amp;msg, uint32_t code)</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:48</div></div>
+<div class="ttc" id="exit_8hpp_html"><div class="ttname"><a href="exit_8hpp.html">exit.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="namespaceos_html_aebc3586b2be0d2b9093ccfbf25dfcde8"><div class="ttname"><a href="namespaceos.html#aebc3586b2be0d2b9093ccfbf25dfcde8">os::execvpe</a></div><div class="ttdeci">int execvpe(const std::string &amp;command, const std::vector&lt; std::string &gt; &amp;argv, const std::map&lt; std::string, std::string &gt; &amp;envp)</div><div class="ttdef"><b>Definition:</b> shell.hpp:592</div></div>
+<div class="ttc" id="signals_8hpp_html"><div class="ttname"><a href="signals_8hpp.html">signals.hpp</a></div></div>
+<div class="ttc" id="hashset_8hpp_html"><div class="ttname"><a href="hashset_8hpp.html">hashset.hpp</a></div></div>
+<div class="ttc" id="namespacemesos_1_1internal_1_1log_1_1protocol_html_a66ff2d5af4db53227f787281c0765d8d"><div class="ttname"><a href="namespacemesos_1_1internal_1_1log_1_1protocol.html#a66ff2d5af4db53227f787281c0765d8d">mesos::internal::log::protocol::write</a></div><div class="ttdeci">Protocol&lt; WriteRequest, WriteResponse &gt; write</div></div>
+<div class="ttc" id="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors_html_ac4af678c631a700d4be4410a250e3bce"><div class="ttname"><a href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html#ac4af678c631a700d4be4410a250e3bce">process::Subprocess::IO::OutputFileDescriptors::read</a></div><div class="ttdeci">Option&lt; int_fd &gt; read</div><div class="ttdef"><b>Definition:</b> subprocess.hpp:90</div></div>
+<div class="ttc" id="namespacecgroups_html_ab75e1e2d1be63eec907bf12306a7c8a7"><div class="ttname"><a href="namespacecgroups.html#ab75e1e2d1be63eec907bf12306a7c8a7">cgroups::kill</a></div><div class="ttdeci">Try&lt; Nothing &gt; kill(const std::string &amp;hierarchy, const std::string &amp;cgroup, int signal)</div></div>
+<div class="ttc" id="namespaceprocess_1_1network_html_ad067110a4b38cc83785a43f49bf6c8e2"><div class="ttname"><a href="namespaceprocess_1_1network.html#ad067110a4b38cc83785a43f49bf6c8e2">process::network::bind</a></div><div class="ttdeci">Try&lt; Nothing &gt; bind(int_fd s, const Address &amp;address)</div><div class="ttdef"><b>Definition:</b> network.hpp:46</div></div>
+<div class="ttc" id="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors_html_ab812da47364d793d9ec0471d3dc8c1bc"><div class="ttname"><a href="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors.html#ab812da47364d793d9ec0471d3dc8c1bc">process::Subprocess::IO::InputFileDescriptors::write</a></div><div class="ttdeci">Option&lt; int_fd &gt; write</div><div class="ttdef"><b>Definition:</b> subprocess.hpp:76</div></div>
+<div class="ttc" id="structprocess_1_1Subprocess_1_1ParentHook_html"><div class="ttname"><a href="structprocess_1_1Subprocess_1_1ParentHook.html">process::Subprocess::ParentHook</a></div><div class="ttdoc">A hook can be passed to a subprocess call. </div><div class="ttdef"><b>Definition:</b> subprocess.hpp:152</div></div>
+<div class="ttc" id="namespacens_html_a28116b46e6543597a11733424cd1aa20"><div class="ttname"><a href="namespacens.html#a28116b46e6543597a11733424cd1aa20">ns::stringify</a></div><div class="ttdeci">std::string stringify(int flags)</div></div>
+<div class="ttc" id="exit_8hpp_html_a637cd32ee4af0a5a1d1aea8a0d7f7564"><div class="ttname"><a href="exit_8hpp.html#a637cd32ee4af0a5a1d1aea8a0d7f7564">SAFE_EXIT</a></div><div class="ttdeci">#define SAFE_EXIT(status, fmt,...)</div><div class="ttdef"><b>Definition:</b> exit.hpp:42</div></div>
+<div class="ttc" id="unreachable_8hpp_html"><div class="ttname"><a href="unreachable_8hpp.html">unreachable.hpp</a></div></div>
+<div class="ttc" id="namespaceprocess_1_1internal_html_a902e2646d88c41ce674a3009cafe0aad"><div class="ttname"><a href="namespaceprocess_1_1internal.html#a902e2646d88c41ce674a3009cafe0aad">process::internal::childMain</a></div><div class="ttdeci">int childMain(const std::string &amp;path, char **argv, char **envp, const InputFileDescriptors &amp;stdinfds, const OutputFileDescriptors &amp;stdoutfds, const OutputFileDescriptors &amp;stderrfds, bool blocking, int pipes[2], const std::vector&lt; Subprocess::ChildHook &gt; &amp;child_hooks)</div><div class="ttdef"><b>Definition:</b> subprocess.hpp:106</div></div>
+<div class="ttc" id="namespaceos_1_1raw_html_aad2bd3acb3ca09c75a1a1db58075f9f4"><div class="ttname"><a href="namespaceos_1_1raw.html#aad2bd3acb3ca09c75a1a1db58075f9f4">os::raw::environment</a></div><div class="ttdeci">char ** environment()</div><div class="ttdef"><b>Definition:</b> environment.hpp:66</div></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.11
+</small></address>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/src_2tests_2mesos_8hpp.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/src_2tests_2mesos_8hpp.html b/content/api/latest/c++/src_2tests_2mesos_8hpp.html
index 870341e..f4659aa 100644
--- a/content/api/latest/c++/src_2tests_2mesos_8hpp.html
+++ b/content/api/latest/c++/src_2tests_2mesos_8hpp.html
@@ -84,7 +84,7 @@
 <code>#include &lt;<a class="el" href="3rdparty_2libprocess_2include_2process_2pid_8hpp_source.html">process/pid.hpp</a>&gt;</code><br />
 <code>#include &lt;<a class="el" href="libprocess_2include_2process_2process_8hpp_source.html">process/process.hpp</a>&gt;</code><br />
 <code>#include &lt;<a class="el" href="queue_8hpp_source.html">process/queue.hpp</a>&gt;</code><br />
-<code>#include &lt;<a class="el" href="subprocess_8hpp_source.html">process/subprocess.hpp</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="include_2process_2subprocess_8hpp_source.html">process/subprocess.hpp</a>&gt;</code><br />
 <code>#include &lt;<a class="el" href="3rdparty_2libprocess_2include_2process_2ssl_2flags_8hpp_source.html">process/ssl/flags.hpp</a>&gt;</code><br />
 <code>#include &lt;<a class="el" href="libprocess_2include_2process_2ssl_2gtest_8hpp_source.html">process/ssl/gtest.hpp</a>&gt;</code><br />
 <code>#include &lt;<a class="el" href="bytes_8hpp_source.html">stout/bytes.hpp</a>&gt;</code><br />


[49/50] mesos-site git commit: Updated the website built from mesos SHA: 7c9c72d.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/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 0d78bc5..4ff519e 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
@@ -52,7 +52,7 @@
 <div class="title">http.hpp</div>  </div>
 </div><!--header-->
 <div class="contents">
-<a href="3rdparty_2libprocess_2include_2process_2http_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>&#160;<span class="comment">// Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<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>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="comment">//     http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno">    6</s
 pan>&#160;<span class="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<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>&#160;<span class="comment">// distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<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>&#160;<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>&#160;<span class="comment">// limitations under the License</span></div><div class="line"><a name="l00012"></a><span class="lineno">
    12</span>&#160;</div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="preprocessor">#ifndef __PROCESS_HTTP_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="preprocessor">#define __PROCESS_HTTP_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;</div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="preprocessor">#include &lt;ctype.h&gt;</span></div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="preprocessor">#include &lt;stdint.h&gt;</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;</div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;<span class="preprocessor">#include &lt;atomic&gt;</span></div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span cla
 ss="preprocessor">#include &lt;initializer_list&gt;</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="preprocessor">#include &lt;iosfwd&gt;</span></div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="preprocessor">#include &lt;memory&gt;</span></div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="preprocessor">#include &lt;queue&gt;</span></div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span></div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="preprocessor">#include &lt;vector&gt;</span></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>&#160;<span class="preprocessor">#include &lt;boost/functional/hash.hpp&g
 t;</span></div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;</div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="address_8hpp.html">process/address.hpp</a>&gt;</span></div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="future_8hpp.html">process/future.hpp</a>&gt;</span></div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="owned_8hpp.html">process/owned.hpp</a>&gt;</span></div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="3rdparty_2libprocess_2include_2process_2pid_8hpp.html">process/pid.hpp</a>&gt;</span></div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#16
 0;<span class="preprocessor">#include &lt;<a class="code" href="libprocess_2include_2process_2socket_8hpp.html">process/socket.hpp</a>&gt;</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>&#160;<span class="preprocessor">#include &lt;<a class="code" href="error_8hpp.html">stout/error.hpp</a>&gt;</span></div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="hashmap_8hpp.html">stout/hashmap.hpp</a>&gt;</span></div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="3rdparty_2stout_2include_2stout_2ip_8hpp.html">stout/ip.hpp</a>&gt;</span></div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="json_8hpp.ht
 ml">stout/json.hpp</a>&gt;</span></div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="jsonify_8hpp.html">stout/jsonify.hpp</a>&gt;</span></div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="none_8hpp.html">stout/none.hpp</a>&gt;</span></div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="nothing_8hpp.html">stout/nothing.hpp</a>&gt;</span></div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="option_8hpp.html">stout/option.hpp</a>&gt;</span></div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="stringify_8hpp.html">stout/stringify.h
 pp</a>&gt;</span></div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="strings_8hpp.html">stout/strings.hpp</a>&gt;</span></div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="try_8hpp.html">stout/try.hpp</a>&gt;</span></div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;</div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceprocess.html">process</a> {</div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;</div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;<span class="comment">// Forward declaration to break cyclic dependency.</span></div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#16
 0;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;<span class="keyword">class </span>Future;</div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;</div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacemesos_1_1uri.html#a5dff7c4a2df7be12fb642b5801c34f9f">http</a> {</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"><a class="line" href="namespaceprocess_1_1http.html#acc0a9c62d4bef93195e93af072f0cda5">   55</a></span>&#160;<span class="keyword">enum class</span> <a class="code" href="namespaceprocess_1_1http.html#acc0a9c62d4bef93195e93af072f0cda5">Scheme</a> {</div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160; 
  <a class="code" href="namespaceprocess_1_1http.html#acc0a9c62d4bef93195e93af072f0cda5a293c9ea246ff9985dc6f62a650f78986">HTTP</a>,</div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;<span class="preprocessor">#ifdef USE_SSL_SOCKET</span></div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;  HTTPS</div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;};</div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;</div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;</div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;<span class="keyword">namespace </span>authentication {</div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;</div><div class="line"><a name="l00
 065"></a><span class="lineno">   65</span>&#160;<span class="keyword">class </span>Authenticator;</div><div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;</div><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;<span class="keyword">struct </span>Principal;</div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;</div><div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;<a class="code" href="classprocess_1_1Future.html">Future&lt;Nothing&gt;</a> <a class="code" href="namespaceprocess_1_1http_1_1authentication.html#a77c8aabd89ad49fb5bbc727924042cc8">setAuthenticator</a>(</div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;    <span class="keyword">const</span> std::string&amp; realm,</div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;    <a class="code" href="classprocess_1_1Owned.html">Owned&lt;Authenticator&gt;</a> 
 authenticator);</div><div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;</div><div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;</div><div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;<a class="code" href="classprocess_1_1Future.html">Future&lt;Nothing&gt;</a> <a class="code" href="namespaceprocess_1_1http_1_1authentication.html#a33ca9afbbd1aceb21aa64c2069973a24">unsetAuthenticator</a>(<span class="keyword">const</span> std::string&amp; realm);</div><div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;</div><div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;} <span class="comment">// namespace authentication {</span></div><div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;</div><div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;<span class="comment">// Forward declaration.</span></div><div class="
 line"><a name="l00092"></a><span class="lineno">   92</span>&#160;<span class="keyword">struct </span><a class="code" href="structprocess_1_1http_1_1Request.html">Request</a>;</div><div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;</div><div class="line"><a name="l00094"></a><span class="lineno"><a class="line" href="namespaceprocess_1_1http_1_1authorization.html">   94</a></span>&#160;<span class="keyword">namespace </span>authorization {</div><div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;</div><div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;<span class="comment">// The `AuthorizationCallbacks` type is used for a set of authorization</span></div><div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;<span class="comment">// callbacks used by libprocess to authorize HTTP endpoints. The key of the map</span></div><div class="line"><a name="l00098"></a><span class="lineno">
    98</span>&#160;<span class="comment">// contains the endpoint&#39;s path, while the value contains the callback.</span></div><div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;<span class="keyword">typedef</span> <a class="code" href="classhashmap.html">hashmap</a>&lt;std::string,</div><div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;                lambda::function&lt;process::Future&lt;bool&gt;(</div><div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;                    <span class="keyword">const</span> <a class="code" href="structprocess_1_1http_1_1Request.html">Request</a>,</div><div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;                    <span class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;authentication::Principal&gt;</a>)&gt;&gt;</div><div class="line"><a name="l00103"></a><span class="lineno"><a class="line" href="namespa
 ceprocess_1_1http_1_1authorization.html#affe51580eadc8728411234d784808ece">  103</a></span>&#160;  <a class="code" href="classhashmap.html">AuthorizationCallbacks</a>;</div><div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;</div><div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;</div><div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;<span class="comment">// Set authorization callbacks for HTTP endpoints. These can be used to call out</span></div><div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;<span class="comment">// to an external, application-level authorizer. The callbacks should accept an</span></div><div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;<span class="comment">// HTTP request and an optional principal, and they should return a</span></div><div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;<span class="
 comment">// `Future&lt;bool&gt;` representing whether or not authorization was successful.</span></div><div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespaceprocess_1_1http_1_1authorization.html#a5c0dc8d25fb3556f4be432507c6f0f2c">setCallbacks</a>(<span class="keyword">const</span> <a class="code" href="classhashmap.html">AuthorizationCallbacks</a>&amp;);</div><div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;</div><div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;</div><div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;<span class="comment">// Remove any authorization callbacks which were previously installed in</span></div><div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;<span class="comment">// libprocess.</span></div><div class="line"><a name="l00115"></a><span class="lineno">  
 115</span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespaceprocess_1_1http_1_1authorization.html#a0083eba64f0133537ce496006258a344">unsetCallbacks</a>();</div><div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;</div><div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;} <span class="comment">// namespace authorization {</span></div><div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;</div><div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;<span class="comment">// Checks if the given status code is defined by RFC 2616.</span></div><div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;<span class="keywordtype">bool</span> <a class="code" href="namespaceprocess_1_1http.html#ad1e795f8cd92c0d2c95aaedab510d4f6">isValidStatus</a>(uint16_t code);</div><div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;</div><div
  class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;<span class="comment">// Represents a Uniform Resource Locator:</span></div><div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;<span class="comment">//   scheme://domain|ip:port/path?query#fragment</span></div><div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;<span class="comment">// This is actually a URI-reference (see 4.1 of RFC 3986).</span></div><div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;<span class="comment">// TODO(bmahler): The default port should depend on the scheme!</span></div><div class="line"><a name="l00128"></a><span class="lineno"><a class="line" href="structprocess_1_1http_1_1UR
 L.html">  128</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structprocess_1_1http_1_1URL.html">URL</a></div><div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;{</div><div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;  <a class="code" href="structprocess_1_1http_1_1URL.html">URL</a>() = <span class="keywordflow">default</span>;</div><div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;</div><div class="line"><a name="l00132"></a><span class="lineno"><a class="line" href="structprocess_1_1http_1_1URL.html#a0405a5eae13705f0cfe7b78e2928bc5f">  132</a></span>&#160;  <a class="code" href="structprocess_1_1http_1_1URL.html#a0405a5eae13705f0cfe7b78e2928bc5f">URL</a>(<span class="keyword">const</span> std::string&amp; _scheme,</div><div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;      <span class="keyword">const</span> std::string&amp; _domain,</div><div c
 lass="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;      <span class="keyword">const</span> uint16_t _port = 80,</div><div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;      <span class="keyword">const</span> std::string&amp; _path = <span class="stringliteral">&quot;/&quot;</span>,</div><div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;      <span class="keyword">const</span> <a class="code" href="classhashmap.html">hashmap&lt;std::string, std::string&gt;</a>&amp; _query =</div><div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;        (<a class="code" href="classhashmap.html">hashmap&lt;std::string, std::string&gt;</a>()),</div><div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;      <span class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;std::string&gt;</a>&amp; _fragment = <a class="code" href="structNone.html">None</a>()
 )</div><div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;    : scheme(_scheme),</div><div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;      domain(_domain),</div><div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;      port(_port),</div><div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;      <a class="code" href="namespacepath.html">path</a>(_path),</div><div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;      query(_query),</div><div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;      <a class="code" href="namespacemesos_1_1internal_1_1tests.html#ab70487cb3ac225692ff7b0ea9923eb23">fragment</a>(_fragment) {}</div><div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;</div><div class="line"><a name="l00146"></a><span class="lineno"><a class="line" href="structprocess_1_1http_1_1URL.html#a5670b901f
 50b1cc161664b930411e156">  146</a></span>&#160;  <a class="code" href="structprocess_1_1http_1_1URL.html#a5670b901f50b1cc161664b930411e156">URL</a>(<span class="keyword">const</span> std::string&amp; _scheme,</div><div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;      <span class="keyword">const</span> <a class="code" href="classnet_1_1IP.html">net::IP</a>&amp; _ip,</div><div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;      <span class="keyword">const</span> uint16_t _port = 80,</div><div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;      <span class="keyword">const</span> std::string&amp; _path = <span class="stringliteral">&quot;/&quot;</span>,</div><div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;      <span class="keyword">const</span> <a class="code" href="classhashmap.html">hashmap&lt;std::string, std::string&gt;</a>&amp; _query =</div><div class="line"><a name="
 l00151"></a><span class="lineno">  151</span>&#160;        (<a class="code" href="classhashmap.html">hashmap&lt;std::string, std::string&gt;</a>()),</div><div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;      <span class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;std::string&gt;</a>&amp; _fragment = <a class="code" href="structNone.html">None</a>())</div><div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;    : scheme(_scheme),</div><div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;      ip(_ip),</div><div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;      port(_port),</div><div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;      <a class="code" href="namespacepath.html">path</a>(_path),</div><div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;      query(_query),</div><div class="line"><a na
 me="l00158"></a><span class="lineno">  158</span>&#160;      <a class="code" href="namespacemesos_1_1internal_1_1tests.html#ab70487cb3ac225692ff7b0ea9923eb23">fragment</a>(_fragment) {}</div><div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;</div><div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;  <span class="keyword">static</span> <a class="code" href="classTry.html">Try&lt;URL&gt;</a> <a class="code" href="namespaceprocess_1_1http_1_1path.html#a2410072cba7b95c5d555a0747ef33b50">parse</a>(<span class="keyword">const</span> std::string&amp; urlString);</div><div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;</div><div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;  <span class="keywordtype">bool</span> isAbsolute() <span class="keyword">const</span>;</div><div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;</div><div class="line"><a name="l00168"><
 /a><span class="lineno"><a class="line" href="structprocess_1_1http_1_1URL.html#a499516725a6f0065c90520fe484cf7f5">  168</a></span>&#160;  <a class="code" href="classOption.html">Option&lt;std::string&gt;</a> <a class="code" href="structprocess_1_1http_1_1URL.html#a499516725a6f0065c90520fe484cf7f5">scheme</a>;</div><div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;</div><div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;  <span class="comment">// TODO(benh): Consider using unrestricted union for &#39;domain&#39; and &#39;ip&#39;.</span></div><div class="line"><a name="l00171"></a><span class="lineno"><a class="line" href="structprocess_1_1http_1_1URL.html#a800e017253a838fc29a2c8d30e49564e">  171</a></span>&#160;  <a class="code" href="classOption.html">Option&lt;std::string&gt;</a> <a class="code" href="structprocess_1_1http_1_1URL.html#a800e017253a838fc29a2c8d30e49564e">domain</a>;</div><div class="line"><a name="l00172"></a><s
 pan class="lineno"><a class="line" href="structprocess_1_1http_1_1URL.html#ac0416d6239dbcd64e0b2d8dc4f151ef8">  172</a></span>&#160;  <a class="code" href="classOption.html">Option&lt;net::IP&gt;</a> <a class="code" href="structprocess_1_1http_1_1URL.html#ac0416d6239dbcd64e0b2d8dc4f151ef8">ip</a>;</div><div class="line"><a name="l00173"></a><span class="lineno"><a class="line" href="structprocess_1_1http_1_1URL.html#ad1926a8cdc7de53e09cbd954b302b511">  173</a></span>&#160;  <a class="code" href="classOption.html">Option&lt;uint16_t&gt;</a> <a class="code" href="structprocess_1_1http_1_1URL.html#ad1926a8cdc7de53e09cbd954b302b511">port</a>;</div><div class="line"><a name="l00174"></a><span class="lineno"><a class="line" href="structprocess_1_1http_1_1URL.html#a184ec5f02b451f1d53b1ac5032a68dac">  174</a></span>&#160;  std::string <a class="code" href="structprocess_1_1http_1_1URL.html#a184ec5f02b451f1d53b1ac5032a68dac">path</a>;</div><div class="line"><a name="l00175"></a><span class="
 lineno"><a class="line" href="structprocess_1_1http_1_1URL.html#af2d0454d281cfe79f382c0dbc91bc251">  175</a></span>&#160;  <a class="code" href="classhashmap.html">hashmap&lt;std::string, std::string&gt;</a> <a class="code" href="structprocess_1_1http_1_1URL.html#af2d0454d281cfe79f382c0dbc91bc251">query</a>;</div><div class="line"><a name="l00176"></a><span class="lineno"><a class="line" href="structprocess_1_1http_1_1URL.html#ae1a6af7f79e3e3662345f71cd4782c92">  176</a></span>&#160;  <a class="code" href="classOption.html">Option&lt;std::string&gt;</a> <a class="code" href="structprocess_1_1http_1_1URL.html#ae1a6af7f79e3e3662345f71cd4782c92">fragment</a>;</div><div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;};</div><div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;</div><div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;</div><div class="line"><a name="l00180"></a><span class="lineno">  180</span>&
 #160;std::ostream&amp; <a class="code" href="namespaceprocess_1_1http.html#a64211e6e3428968c27b5753f05cbcf45">operator&lt;&lt;</a>(std::ostream&amp; stream, <span class="keyword">const</span> <a class="code" href="structprocess_1_1http_1_1URL.html">URL</a>&amp; url);</div><div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;</div><div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160;</div><div class="line"><a name="l00183"></a><span class="lineno"><a class="line" href="structprocess_1_1http_1_1CaseInsensitiveHash.html">  183</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structprocess_1_1http_1_1CaseInsensitiveHash.html">CaseInsensitiveHash</a></div><div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;{</div><div class="line"><a name="l00185"></a><span class="lineno"><a class="line" href="structprocess_1_1http_1_1CaseInsensitiveHash.html#aaa3077605157ee04498242975d8734c5">  185</a></
 span>&#160;  <span class="keywordtype">size_t</span> <a class="code" href="structprocess_1_1http_1_1CaseInsensitiveHash.html#aaa3077605157ee04498242975d8734c5">operator()</a>(<span class="keyword">const</span> std::string&amp; key)<span class="keyword"> const</span></div><div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;<span class="keyword">  </span>{</div><div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;    <span class="keywordtype">size_t</span> seed = 0;</div><div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;    <span class="keywordflow">foreach</span> (<span class="keywordtype">char</span> c, key) {</div><div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160;      boost::hash_combine(seed, ::tolower(c));</div><div class="line"><a name="l00190"></a><span class="lineno">  190</span>&#160;    }</div><div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#16
 0;    <span class="keywordflow">return</span> seed;</div><div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;  }</div><div class="line"><a name="l00193"></a><span class="lineno">  193</span>&#160;};</div><div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#160;</div><div class="line"><a name="l00195"></a><span class="lineno">  195</span>&#160;</div><div class="line"><a name="l00196"></a><span class="lineno"><a class="line" href="structprocess_1_1http_1_1CaseInsensitiveEqual.html">  196</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structprocess_1_1http_1_1CaseInsensitiveEqual.html">CaseInsensitiveEqual</a></div><div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;{</div><div class="line"><a name="l00198"></a><span class="lineno"><a class="line" href="structprocess_1_1http_1_1CaseInsensitiveEqual.html#a167f121f66fb0f7eac7b7ee8827ace5c">  198</a></span>&#160;  <span class="keywordtype">
 bool</span> <a class="code" href="structprocess_1_1http_1_1CaseInsensitiveEqual.html#a167f121f66fb0f7eac7b7ee8827ace5c">operator()</a>(<span class="keyword">const</span> std::string&amp; left, <span class="keyword">const</span> std::string&amp; right)<span class="keyword"> const</span></div><div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160;<span class="keyword">  </span>{</div><div class="line"><a name="l00200"></a><span class="lineno">  200</span>&#160;    <span class="keywordflow">if</span> (left.size() != right.size()) {</div><div class="line"><a name="l00201"></a><span class="lineno">  201</span>&#160;      <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00202"></a><span class="lineno">  202</span>&#160;    }</div><div class="line"><a name="l00203"></a><span class="lineno">  203</span>&#160;    <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; left.s
 ize(); ++i) {</div><div class="line"><a name="l00204"></a><span class="lineno">  204</span>&#160;      <span class="keywordflow">if</span> (::tolower(left[i]) != ::tolower(right[i])) {</div><div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160;        <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00206"></a><span class="lineno">  206</span>&#160;      }</div><div class="line"><a name="l00207"></a><span class="lineno">  207</span>&#160;    }</div><div class="line"><a name="l00208"></a><span class="lineno">  208</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00209"></a><span class="lineno">  209</span>&#160;  }</div><div class="line"><a name="l00210"></a><span class="lineno">  210</span>&#160;};</div><div class="line"><a name="l00211"></a><span class="lineno">  211</span>&#160;</div><div class="line"><a name="l00212"></a><s
 pan class="lineno">  212</span>&#160;</div><div class="line"><a name="l00213"></a><span class="lineno"><a class="line" href="structprocess_1_1http_1_1Status.html">  213</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structprocess_1_1http_1_1Status.html">Status</a></div><div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160;{</div><div class="line"><a name="l00215"></a><span class="lineno"><a class="line" href="structprocess_1_1http_1_1Status.html#a838b0372c2834ebe254930cff1ec8bd4">  215</a></span>&#160;  <span class="keyword">static</span> <span class="keyword">const</span> uint16_t <a class="code" href="structprocess_1_1http_1_1Status.html#a838b0372c2834ebe254930cff1ec8bd4">CONTINUE</a>;</div><div class="line"><a name="l00216"></a><span class="lineno"><a class="line" href="structprocess_1_1http_1_1Status.html#ac1989e4156b3c5b009e5a0ab15d61ff1">  216</a></span>&#160;  <span class="keyword">static</span> <span class="keyword">const</s
 pan> uint16_t <a class="code" href="structprocess_1_1http_1_1Status.html#ac1989e4156b3c5b009e5a0ab15d61ff1">SWITCHING_PROTOCOLS</a>;</div><div class="line"><a name="l00217"></a><span class="lineno"><a class="line" href="structprocess_1_1http_1_1Status.html#ae105d018cfcf82f5c19c79196101fd9b">  217</a></span>&#160;  <span class="keyword">static</span> <span class="keyword">const</span> uint16_t <a class="code" href="structprocess_1_1http_1_1Status.html#ae105d018cfcf82f5c19c79196101fd9b">OK</a>;</div><div class="line"><a name="l00218"></a><span class="lineno"><a class="line" href="structprocess_1_1http_1_1Status.html#af8f62dd7f1179ffc32c58aceef60decb">  218</a></span>&#160;  <span class="keyword">static</span> <span class="keyword">const</span> uint16_t <a class="code" href="structprocess_1_1http_1_1Status.html#af8f62dd7f1179ffc32c58aceef60decb">CREATED</a>;</div><div class="line"><a name="l00219"></a><span class="lineno"><a class="line" href="structprocess_1_1http_1_1Status.html#a5d2b
 09dd7b99e2519b641b682dc976b0">  219</a></span>&#160;  <span class="keyword">static</span> <span class="keyword">const</span> uint16_t <a class="code" href="structprocess_1_1http_1_1Status.html#a5d2b09dd7b99e2519b641b682dc976b0">ACCEPTED</a>;</div><div class="line"><a name="l00220"></a><span class="lineno"><a class="line" href="structprocess_1_1http_1_1Status.html#ae73df769517624433b4f20af3dd17803">  220</a></span>&#160;  <span class="keyword">static</span> <span class="keyword">const</span> uint16_t <a class="code" href="structprocess_1_1http_1_1Status.html#ae73df769517624433b4f20af3dd17803">NON_AUTHORITATIVE_INFORMATION</a>;</div><div class="line"><a name="l00221"></a><span class="lineno"><a class="line" href="structprocess_1_1http_1_1Status.html#acbed897ae92821a24aced2e4dc633dad">  221</a></span>&#160;  <span class="keyword">static</span> <span class="keyword">const</span> uint16_t <a class="code" href="structprocess_1_1http_1_1Status.html#acbed897ae92821a24aced2e4dc633dad">NO_CON
 TENT</a>;</div><div class="line"><a name="l00222"></a><span class="lineno"><a class="line" href="structprocess_1_1http_1_1Status.html#adf7f64f0d95bae2b22dde9b5db8e892c">  222</a></span>&#160;  <span class="keyword">static</span> <span class="keyword">const</span> uint16_t <a class="code" href="structprocess_1_1http_1_1Status.html#adf7f64f0d95bae2b22dde9b5db8e892c">RESET_CONTENT</a>;</div><div class="line"><a name="l00223"></a><span class="lineno"><a class="line" href="structprocess_1_1http_1_1Status.html#ac65b51669b169159644d53b15932fd98">  223</a></span>&#160;  <span class="keyword">static</span> <span class="keyword">const</span> uint16_t <a class="code" href="structprocess_1_1http_1_1Status.html#ac65b51669b169159644d53b15932fd98">PARTIAL_CONTENT</a>;</div><div class="line"><a name="l00224"></a><span class="lineno"><a class="line" href="structprocess_1_1http_1_1Status.html#a8feae2af2cdeaf0c0ddbd5f80c9f5ff5">  224</a></span>&#160;  <span class="keyword">static</span> <span class="k
 eyword">const</span> uint16_t <a class="code" href="structprocess_1_1http_1_1Status.html#a8feae2af2cdeaf0c0ddbd5f80c9f5ff5">MULTIPLE_CHOICES</a>;</div><div class="line"><a name="l00225"></a><span class="lineno"><a class="line" href="structprocess_1_1http_1_1Status.html#aa8ef81ebd5c8e73eff805b126abcfde2">  225</a></span>&#160;  <span class="keyword">static</span> <span class="keyword">const</span> uint16_t <a class="code" href="structprocess_1_1http_1_1Status.html#aa8ef81ebd5c8e73eff805b126abcfde2">MOVED_PERMANENTLY</a>;</div><div class="line"><a name="l00226"></a><span class="lineno"><a class="line" href="structprocess_1_1http_1_1Status.html#a2fde9047b9350b005c9f2d0e74aa49d4">  226</a></span>&#160;  <span class="keyword">static</span> <span class="keyword">const</span> uint16_t <a class="code" href="structprocess_1_1http_1_1Status.html#a2fde9047b9350b005c9f2d0e74aa49d4">FOUND</a>;</div><div class="line"><a name="l00227"></a><span class="lineno"><a class="line" href="structprocess_1_
 1http_1_1Status.html#a3cc43c9b0a051240b63bf536ff355aa3">  227</a></span>&#160;  <span class="keyword">static</span> <span class="keyword">const</span> uint16_t <a class="code" href="structprocess_1_1http_1_1Status.html#a3cc43c9b0a051240b63bf536ff355aa3">SEE_OTHER</a>;</div><div class="line"><a name="l00228"></a><span class="lineno"><a class="line" href="structprocess_1_1http_1_1Status.html#aaa40446a9ede5dc719b34d58300d9766">  228</a></span>&#160;  <span class="keyword">static</span> <span class="keyword">const</span> uint16_t <a class="code" href="structprocess_1_1http_1_1Status.html#aaa40446a9ede5dc719b34d58300d9766">NOT_MODIFIED</a>;</div><div class="line"><a name="l00229"></a><span class="lineno"><a class="line" href="structprocess_1_1http_1_1Status.html#a0f5bf0546812f869183e41132bb6044d">  229</a></span>&#160;  <span class="keyword">static</span> <span class="keyword">const</span> uint16_t <a class="code" href="structprocess_1_1http_1_1Status.html#a0f5bf0546812f869183e41132bb604
 4d">USE_PROXY</a>;</div><div class="line"><a name="l00230"></a><span class="lineno"><a class="line" href="structprocess_1_1http_1_1Status.html#ae6e1e6f8b96f39b3ce6685de41ab1060">  230</a></span>&#160;  <span class="keyword">static</span> <span class="keyword">const</span> uint16_t <a class="code" href="structprocess_1_1http_1_1Status.html#ae6e1e6f8b96f39b3ce6685de41ab1060">TEMPORARY_REDIRECT</a>;</div><div class="line"><a name="l00231"></a><span class="lineno"><a class="line" href="structprocess_1_1http_1_1Status.html#a5cc8f560c42aa82042f347ceca649ff5">  231</a></span>&#160;  <span class="keyword">static</span> <span class="keyword">const</span> uint16_t <a class="code" href="structprocess_1_1http_1_1Status.html#a5cc8f560c42aa82042f347ceca649ff5">BAD_REQUEST</a>;</div><div class="line"><a name="l00232"></a><span class="lineno"><a class="line" href="structprocess_1_1http_1_1Status.html#a370088c7f9891cd5363ce2f59b39b8ab">  232</a></span>&#160;  <span class="keyword">static</span> <spa
 n class="keyword">const</span> uint16_t <a class="code" href="structprocess_1_1http_1_1Status.html#a370088c7f9891cd5363ce2f59b39b8ab">UNAUTHORIZED</a>;</div><div class="line"><a name="l00233"></a><span class="lineno"><a class="line" href="structprocess_1_1http_1_1Status.html#a1c4709730f229f14c36644bc971645b9">  233</a></span>&#160;  <span class="keyword">static</span> <span class="keyword">const</span> uint16_t <a class="code" href="structprocess_1_1http_1_1Status.html#a1c4709730f229f14c36644bc971645b9">PAYMENT_REQUIRED</a>;</div><div class="line"><a name="l00234"></a><span class="lineno"><a class="line" href="structprocess_1_1http_1_1Status.html#a30d5c1ab390d0ede2e99e3838a5f2973">  234</a></span>&#160;  <span class="keyword">static</span> <span class="keyword">const</span> uint16_t <a class="code" href="structprocess_1_1http_1_1Status.html#a30d5c1ab390d0ede2e99e3838a5f2973">FORBIDDEN</a>;</div><div class="line"><a name="l00235"></a><span class="lineno"><a class="line" href="structp
 rocess_1_1http_1_1Status.html#ab9caadbc291e8d0e7d633faada0119a0">  235</a></span>&#160;  <span class="keyword">static</span> <span class="keyword">const</span> uint16_t <a class="code" href="structprocess_1_1http_1_1Status.html#ab9caadbc291e8d0e7d633faada0119a0">NOT_FOUND</a>;</div><div class="line"><a name="l00236"></a><span class="lineno"><a class="line" href="structprocess_1_1http_1_1Status.html#a7ec542fce3fdf8c25bd870a160f569f7">  236</a></span>&#160;  <span class="keyword">static</span> <span class="keyword">const</span> uint16_t <a class="code" href="structprocess_1_1http_1_1Status.html#a7ec542fce3fdf8c25bd870a160f569f7">METHOD_NOT_ALLOWED</a>;</div><div class="line"><a name="l00237"></a><span class="lineno"><a class="line" href="structprocess_1_1http_1_1Status.html#a725667e70ba51ea7ab33416675de05db">  237</a></span>&#160;  <span class="keyword">static</span> <span class="keyword">const</span> uint16_t <a class="code" href="structprocess_1_1http_1_1Status.html#a725667e70ba51ea
 7ab33416675de05db">NOT_ACCEPTABLE</a>;</div><div class="line"><a name="l00238"></a><span class="lineno"><a class="line" href="structprocess_1_1http_1_1Status.html#a2a724a29d7c8d8e047e009a897252280">  238</a></span>&#160;  <span class="keyword">static</span> <span class="keyword">const</span> uint16_t <a class="code" href="structprocess_1_1http_1_1Status.html#a2a724a29d7c8d8e047e009a897252280">PROXY_AUTHENTICATION_REQUIRED</a>;</div><div class="line"><a name="l00239"></a><span class="lineno"><a class="line" href="structprocess_1_1http_1_1Status.html#ab95e476fae088bc934ac7d72886233fd">  239</a></span>&#160;  <span class="keyword">static</span> <span class="keyword">const</span> uint16_t <a class="code" href="structprocess_1_1http_1_1Status.html#ab95e476fae088bc934ac7d72886233fd">REQUEST_TIMEOUT</a>;</div><div class="line"><a name="l00240"></a><span class="lineno"><a class="line" href="structprocess_1_1http_1_1Status.html#a711a886455704253efaa63254f6347e8">  240</a></span>&#160;  <span
  class="keyword">static</span> <span class="keyword">const</span> uint16_t <a class="code" href="structprocess_1_1http_1_1Status.html#a711a886455704253efaa63254f6347e8">CONFLICT</a>;</div><div class="line"><a name="l00241"></a><span class="lineno"><a class="line" href="structprocess_1_1http_1_1Status.html#a84baf6a6f631e460bb85bea1d546bd97">  241</a></span>&#160;  <span class="keyword">static</span> <span class="keyword">const</span> uint16_t <a class="code" href="structprocess_1_1http_1_1Status.html#a84baf6a6f631e460bb85bea1d546bd97">GONE</a>;</div><div class="line"><a name="l00242"></a><span class="lineno"><a class="line" href="structprocess_1_1http_1_1Status.html#a10336f87c20b50fd38fdec4f1c94be3d">  242</a></span>&#160;  <span class="keyword">static</span> <span class="keyword">const</span> uint16_t <a class="code" href="structprocess_1_1http_1_1Status.html#a10336f87c20b50fd38fdec4f1c94be3d">LENGTH_REQUIRED</a>;</div><div class="line"><a name="l00243"></a><span class="lineno"><a c
 lass="line" href="structprocess_1_1http_1_1Status.html#a52227b30875d794c719a53fc2c7f42eb">  243</a></span>&#160;  <span class="keyword">static</span> <span class="keyword">const</span> uint16_t <a class="code" href="structprocess_1_1http_1_1Status.html#a52227b30875d794c719a53fc2c7f42eb">PRECONDITION_FAILED</a>;</div><div class="line"><a name="l00244"></a><span class="lineno"><a class="line" href="structprocess_1_1http_1_1Status.html#af15751921c14230c0974a97dfc2f9144">  244</a></span>&#160;  <span class="keyword">static</span> <span class="keyword">const</span> uint16_t <a class="code" href="structprocess_1_1http_1_1Status.html#af15751921c14230c0974a97dfc2f9144">REQUEST_ENTITY_TOO_LARGE</a>;</div><div class="line"><a name="l00245"></a><span class="lineno"><a class="line" href="structprocess_1_1http_1_1Status.html#a5e86bdc9477d1e574ca545d2e3b5d522">  245</a></span>&#160;  <span class="keyword">static</span> <span class="keyword">const</span> uint16_t <a class="code" href="structproces
 s_1_1http_1_1Status.html#a5e86bdc9477d1e574ca545d2e3b5d522">REQUEST_URI_TOO_LARGE</a>;</div><div class="line"><a name="l00246"></a><span class="lineno"><a class="line" href="structprocess_1_1http_1_1Status.html#addffbea97c092bf92955b7f513208ceb">  246</a></span>&#160;  <span class="keyword">static</span> <span class="keyword">const</span> uint16_t <a class="code" href="structprocess_1_1http_1_1Status.html#addffbea97c092bf92955b7f513208ceb">UNSUPPORTED_MEDIA_TYPE</a>;</div><div class="line"><a name="l00247"></a><span class="lineno"><a class="line" href="structprocess_1_1http_1_1Status.html#a877f7875ccf8eb543acc3dc542ce4082">  247</a></span>&#160;  <span class="keyword">static</span> <span class="keyword">const</span> uint16_t <a class="code" href="structprocess_1_1http_1_1Status.html#a877f7875ccf8eb543acc3dc542ce4082">REQUESTED_RANGE_NOT_SATISFIABLE</a>;</div><div class="line"><a name="l00248"></a><span class="lineno"><a class="line" href="structprocess_1_1http_1_1Status.html#ab544df
 e7c9a7484671cf288500a93fce">  248</a></span>&#160;  <span class="keyword">static</span> <span class="keyword">const</span> uint16_t <a class="code" href="structprocess_1_1http_1_1Status.html#ab544dfe7c9a7484671cf288500a93fce">EXPECTATION_FAILED</a>;</div><div class="line"><a name="l00249"></a><span class="lineno"><a class="line" href="structprocess_1_1http_1_1Status.html#ae1c6540846d05803ff13c01a17be2df7">  249</a></span>&#160;  <span class="keyword">static</span> <span class="keyword">const</span> uint16_t <a class="code" href="structprocess_1_1http_1_1Status.html#ae1c6540846d05803ff13c01a17be2df7">INTERNAL_SERVER_ERROR</a>;</div><div class="line"><a name="l00250"></a><span class="lineno"><a class="line" href="structprocess_1_1http_1_1Status.html#a4b9ac228c6172625a36f454797b1b33c">  250</a></span>&#160;  <span class="keyword">static</span> <span class="keyword">const</span> uint16_t <a class="code" href="structprocess_1_1http_1_1Status.html#a4b9ac228c6172625a36f454797b1b33c">NOT_IM
 PLEMENTED</a>;</div><div class="line"><a name="l00251"></a><span class="lineno"><a class="line" href="structprocess_1_1http_1_1Status.html#a12afe0fc9b46decff08215e12bdb00ac">  251</a></span>&#160;  <span class="keyword">static</span> <span class="keyword">const</span> uint16_t <a class="code" href="structprocess_1_1http_1_1Status.html#a12afe0fc9b46decff08215e12bdb00ac">BAD_GATEWAY</a>;</div><div class="line"><a name="l00252"></a><span class="lineno"><a class="line" href="structprocess_1_1http_1_1Status.html#ac38d2d21e08b9d2af0511c216613db0f">  252</a></span>&#160;  <span class="keyword">static</span> <span class="keyword">const</span> uint16_t <a class="code" href="structprocess_1_1http_1_1Status.html#ac38d2d21e08b9d2af0511c216613db0f">SERVICE_UNAVAILABLE</a>;</div><div class="line"><a name="l00253"></a><span class="lineno"><a class="line" href="structprocess_1_1http_1_1Status.html#a2b8bca1da1c541e2b042bc7f7e36b562">  253</a></span>&#160;  <span class="keyword">static</span> <span c
 lass="keyword">const</span> uint16_t <a class="code" href="structprocess_1_1http_1_1Status.html#a2b8bca1da1c541e2b042bc7f7e36b562">GATEWAY_TIMEOUT</a>;</div><div class="line"><a name="l00254"></a><span class="lineno"><a class="line" href="structprocess_1_1http_1_1Status.html#a587b0f84081baf8fe273378aa839dceb">  254</a></span>&#160;  <span class="keyword">static</span> <span class="keyword">const</span> uint16_t <a class="code" href="structprocess_1_1http_1_1Status.html#a587b0f84081baf8fe273378aa839dceb">HTTP_VERSION_NOT_SUPPORTED</a>;</div><div class="line"><a name="l00255"></a><span class="lineno">  255</span>&#160;</div><div class="line"><a name="l00256"></a><span class="lineno">  256</span>&#160;  <span class="keyword">static</span> std::string string(uint16_t code);</div><div class="line"><a name="l00257"></a><span class="lineno">  257</span>&#160;};</div><div class="line"><a name="l00258"></a><span class="lineno">  258</span>&#160;</div><div class="line"><a name="l00259"></a><s
 pan class="lineno">  259</span>&#160;</div><div class="line"><a name="l00260"></a><span class="lineno">  260</span>&#160;<span class="comment">// Represents an asynchronous in-memory unbuffered Pipe, currently</span></div><div class="line"><a name="l00261"></a><span class="lineno">  261</span>&#160;<span class="comment">// used for streaming HTTP responses via chunked encoding. Note that</span></div><div class="line"><a name="l00262"></a><span class="lineno">  262</span>&#160;<span class="comment">// being an in-memory pipe means that this cannot be used across OS</span></div><div class="line"><a name="l00263"></a><span class="lineno">  263</span>&#160;<span class="comment">// processes.</span></div><div class="line"><a name="l00264"></a><span class="lineno">  264</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00265"></a><span class="lineno">  265</span>&#160;<span class="comment">// Much like unix pipes, data is read until end-of-file is</span></div><d
 iv class="line"><a name="l00266"></a><span class="lineno">  266</span>&#160;<span class="comment">// encountered; this occurs when the write-end of the pipe is</span></div><div class="line"><a name="l00267"></a><span class="lineno">  267</span>&#160;<span class="comment">// closed and there is no outstanding data left to read.</span></div><div class="line"><a name="l00268"></a><span class="lineno">  268</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00269"></a><span class="lineno">  269</span>&#160;<span class="comment">// Unlike unix pipes, if the read-end of the pipe is closed before</span></div><div class="line"><a name="l00270"></a><span class="lineno">  270</span>&#160;<span class="comment">// the write-end is closed, rather than receiving SIGPIPE or EPIPE</span></div><div class="line"><a name="l00271"></a><span class="lineno">  271</span>&#160;<span class="comment">// during a write, the writer is notified via a future. This future</span></div><di
 v class="line"><a name="l00272"></a><span class="lineno">  272</span>&#160;<span class="comment">// is discarded if the write-end is closed first.</span></div><div class="line"><a name="l00273"></a><span class="lineno">  273</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00274"></a><span class="lineno">  274</span>&#160;<span class="comment">// No buffering means that each non-empty write to the pipe will</span></div><div class="line"><a name="l00275"></a><span class="lineno">  275</span>&#160;<span class="comment">// correspond to to an equivalent read from the pipe, and the</span></div><div class="line"><a name="l00276"></a><span class="lineno">  276</span>&#160;<span class="comment">// reader must &quot;keep up&quot; with the writer in order to avoid</span></div><div class="line"><a name="l00277"></a><span class="lineno">  277</span>&#160;<span class="comment">// unbounded memory growth.</span></div><div class="line"><a name="l00278"></a><span class=
 "lineno">  278</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00279"></a><span class="lineno">  279</span>&#160;<span class="comment">// The writer can induce a failure on the reader in order to signal</span></div><div class="line"><a name="l00280"></a><span class="lineno">  280</span>&#160;<span class="comment">// that an error has occurred. For example, if we are receiving a</span></div><div class="line"><a name="l00281"></a><span class="lineno">  281</span>&#160;<span class="comment">// response but a disconnection occurs before the response is</span></div><div class="line"><a name="l00282"></a><span class="lineno">  282</span>&#160;<span class="comment">// completed, we want the reader to detect that a disconnection</span></div><div class="line"><a name="l00283"></a><span class="lineno">  283</span>&#160;<span class="comment">// occurred!</span></div><div class="line"><a name="l00284"></a><span class="lineno">  284</span>&#160;<span class="comment">
 //</span></div><div class="line"><a name="l00285"></a><span class="lineno">  285</span>&#160;<span class="comment">// TODO(bmahler): Consider aggregating writes into larger reads to</span></div><div class="line"><a name="l00286"></a><span class="lineno">  286</span>&#160;<span class="comment">// help the reader keep up (a process::Stream abstraction with</span></div><div class="line"><a name="l00287"></a><span class="lineno">  287</span>&#160;<span class="comment">// backpressure would obviate the need for this).</span></div><div class="line"><a name="l00288"></a><span class="lineno">  288</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00289"></a><span class="lineno">  289</span>&#160;<span class="comment">// TODO(bmahler): Add a more general process::Stream&lt;T&gt; abstraction</span></div><div class="line"><a name="l00290"></a><span class="lineno">  290</span>&#160;<span class="comment">// to represent asynchronous finite/infinite streams (possibly</s
 pan></div><div class="line"><a name="l00291"></a><span class="lineno">  291</span>&#160;<span class="comment">// with &quot;backpressure&quot; on the writer). This is broadly useful</span></div><div class="line"><a name="l00292"></a><span class="lineno">  292</span>&#160;<span class="comment">// (e.g. allocator can expose Stream&lt;Allocation&gt;, http::Pipe</span></div><div class="line"><a name="l00293"></a><span class="lineno">  293</span>&#160;<span class="comment">// becomes Stream&lt;string&gt;, process::Queue&lt;T&gt; is just an infinite</span></div><div class="line"><a name="l00294"></a><span class="lineno">  294</span>&#160;<span class="comment">// Stream&lt;T&gt; (i.e. completion and error semantics hidden)).</span></div><div class="line"><a name="l00295"></a><span class="lineno"><a class="line" href="classprocess_1_1http_1_1Pipe.html">  295</a></span>&#160;<span class="keyword">class </span><a class="code" href="classprocess_1_1http_1_1Pipe.html">Pipe</a></div><div class="
 line"><a name="l00296"></a><span class="lineno">  296</span>&#160;{</div><div class="line"><a name="l00297"></a><span class="lineno">  297</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00298"></a><span class="lineno">  298</span>&#160;  <span class="keyword">struct </span>Data; <span class="comment">// Forward declaration.</span></div><div class="line"><a name="l00299"></a><span class="lineno">  299</span>&#160;</div><div class="line"><a name="l00300"></a><span class="lineno">  300</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00301"></a><span class="lineno"><a class="line" href="classprocess_1_1http_1_1Pipe_1_1Reader.html">  301</a></span>&#160;  <span class="keyword">class </span><a class="code" href="classprocess_1_1http_1_1Pipe_1_1Reader.html">Reader</a></div><div class="line"><a name="l00302"></a><span class="lineno">  302</span>&#160;  {</div><div class="line"><a name="l00303"></a><span class="lineno">  3
 03</span>&#160;  <span class="keyword">public</span>:</div><div class="line"><a name="l00304"></a><span class="lineno">  304</span>&#160;    <span class="comment">// Returns data written to the pipe.</span></div><div class="line"><a name="l00305"></a><span class="lineno">  305</span>&#160;    <span class="comment">// Returns an empty read when end-of-file is reached.</span></div><div class="line"><a name="l00306"></a><span class="lineno">  306</span>&#160;    <span class="comment">// Returns Failure if the writer failed, or the read-end</span></div><div class="line"><a name="l00307"></a><span class="lineno">  307</span>&#160;    <span class="comment">// is closed.</span></div><div class="line"><a name="l00308"></a><span class="lineno">  308</span>&#160;    <a class="code" href="classprocess_1_1Future.html">Future&lt;std::string&gt;</a> <a class="code" href="namespacemesos_1_1internal_1_1credentials.html#a137c93d60149616181a10e9f39986f7f">read</a>();</div><div class="line"><a name="l
 00309"></a><span class="lineno">  309</span>&#160;</div><div class="line"><a name="l00310"></a><span class="lineno">  310</span>&#160;    <span class="comment">// Performs a series of asynchronous reads, until EOF is reached.</span></div><div class="line"><a name="l00311"></a><span class="lineno">  311</span>&#160;    <span class="comment">// Returns the concatenated result of the reads.</span></div><div class="line"><a name="l00312"></a><span class="lineno">  312</span>&#160;    <span class="comment">// Returns Failure if the writer failed, or the read-end</span></div><div class="line"><a name="l00313"></a><span class="lineno">  313</span>&#160;    <span class="comment">// is closed.</span></div><div class="line"><a name="l00314"></a><span class="lineno">  314</span>&#160;    <a class="code" href="classprocess_1_1Future.html">Future&lt;std::string&gt;</a> readAll();</div><div class="line"><a name="l00315"></a><span class="lineno">  315</span>&#160;</div><div class="line"><a name="l
 00316"></a><span class="lineno">  316</span>&#160;    <span class="comment">// Closing the read-end of the pipe before the write-end closes</span></div><div class="line"><a name="l00317"></a><span class="lineno">  317</span>&#160;    <span class="comment">// or fails will notify the writer that the reader is no longer</span></div><div class="line"><a name="l00318"></a><span class="lineno">  318</span>&#160;    <span class="comment">// interested. Returns false if the read-end was already closed.</span></div><div class="line"><a name="l00319"></a><span class="lineno">  319</span>&#160;    <span class="keywordtype">bool</span> close();</div><div class="line"><a name="l00320"></a><span class="lineno">  320</span>&#160;</div><div class="line"><a name="l00321"></a><span class="lineno">  321</span>&#160;    <span class="comment">// Comparison operators useful for checking connection equality.</span></div><div class="line"><a name="l00322"></a><span class="lineno"><a class="line" href="cla
 ssprocess_1_1http_1_1Pipe_1_1Reader.html#ab05ad7874980715328153d42c6b138be">  322</a></span>&#160;    <span class="keywordtype">bool</span> <a class="code" href="classprocess_1_1http_1_1Pipe_1_1Reader.html#ab05ad7874980715328153d42c6b138be">operator==</a>(<span class="keyword">const</span> <a class="code" href="classprocess_1_1http_1_1Pipe_1_1Reader.html">Reader</a>&amp; other)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> data == other.data; }</div><div class="line"><a name="l00323"></a><span class="lineno"><a class="line" href="classprocess_1_1http_1_1Pipe_1_1Reader.html#ac118f7e5f511e0840b7e4460f3287aa5">  323</a></span>&#160;    <span class="keywordtype">bool</span> <a class="code" href="classprocess_1_1http_1_1Pipe_1_1Reader.html#ac118f7e5f511e0840b7e4460f3287aa5">operator!=</a>(<span class="keyword">const</span> <a class="code" href="classprocess_1_1http_1_1Pipe_1_1Reader.html">Reader</a>&amp; other)<span class="keyword"> const </span>{ <span cla
 ss="keywordflow">return</span> !(*<span class="keyword">this</span> == other); }</div><div class="line"><a name="l00324"></a><span class="lineno">  324</span>&#160;</div><div class="line"><a name="l00325"></a><span class="lineno">  325</span>&#160;  <span class="keyword">private</span>:</div><div class="line"><a name="l00326"></a><span class="lineno"><a class="line" href="classprocess_1_1http_1_1Pipe_1_1Reader.html#adb788d0aa2d64624d3602a985936d7da">  326</a></span>&#160;    <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classprocess_1_1http_1_1Pipe.html">Pipe</a>;</div><div class="line"><a name="l00327"></a><span class="lineno">  327</span>&#160;</div><div class="line"><a name="l00328"></a><span class="lineno">  328</span>&#160;    <span class="keyword">enum</span> State</div><div class="line"><a name="l00329"></a><span class="lineno">  329</span>&#160;    {</div><div class="line"><a name="l00330"></a><span class="lineno">  330</span>&#
 160;      OPEN,</div><div class="line"><a name="l00331"></a><span class="lineno">  331</span>&#160;      CLOSED,</div><div class="line"><a name="l00332"></a><span class="lineno">  332</span>&#160;    };</div><div class="line"><a name="l00333"></a><span class="lineno">  333</span>&#160;</div><div class="line"><a name="l00334"></a><span class="lineno">  334</span>&#160;    <span class="keyword">explicit</span> <a class="code" href="classprocess_1_1http_1_1Pipe_1_1Reader.html">Reader</a>(<span class="keyword">const</span> std::shared_ptr&lt;Data&gt;&amp; _data) : data(_data) {}</div><div class="line"><a name="l00335"></a><span class="lineno">  335</span>&#160;</div><div class="line"><a name="l00336"></a><span class="lineno">  336</span>&#160;    std::shared_ptr&lt;Data&gt; data;</div><div class="line"><a name="l00337"></a><span class="lineno">  337</span>&#160;  };</div><div class="line"><a name="l00338"></a><span class="lineno">  338</span>&#160;</div><div class="line"><a name="l00339
 "></a><span class="lineno"><a class="line" href="classprocess_1_1http_1_1Pipe_1_1Writer.html">  339</a></span>&#160;  <span class="keyword">class </span><a class="code" href="classprocess_1_1http_1_1Pipe_1_1Writer.html">Writer</a></div><div class="line"><a name="l00340"></a><span class="lineno">  340</span>&#160;  {</div><div class="line"><a name="l00341"></a><span class="lineno">  341</span>&#160;  <span class="keyword">public</span>:</div><div class="line"><a name="l00342"></a><span class="lineno">  342</span>&#160;    <span class="comment">// Returns false if the data could not be written because</span></div><div class="line"><a name="l00343"></a><span class="lineno">  343</span>&#160;    <span class="comment">// either end of the pipe was already closed. Note that an</span></div><div class="line"><a name="l00344"></a><span class="lineno">  344</span>&#160;    <span class="comment">// empty write has no effect.</span></div><div class="line"><a name="l00345"></a><span class="linen
 o">  345</span>&#160;    <span class="keywordtype">bool</span> <a class="code" href="namespacemesos_1_1internal_1_1log_1_1protocol.html#a66ff2d5af4db53227f787281c0765d8d">write</a>(std::string s);</div><div class="line"><a name="l00346"></a><span class="lineno">  346</span>&#160;</div><div class="line"><a name="l00347"></a><span class="lineno">  347</span>&#160;    <span class="comment">// Closing the write-end of the pipe will send end-of-file</span></div><div class="line"><a name="l00348"></a><span class="lineno">  348</span>&#160;    <span class="comment">// to the reader. Returns false if the write-end of the pipe</span></div><div class="line"><a name="l00349"></a><span class="lineno">  349</span>&#160;    <span class="comment">// was already closed or failed.</span></div><div class="line"><a name="l00350"></a><span class="lineno">  350</span>&#160;    <span class="keywordtype">bool</span> close();</div><div class="line"><a name="l00351"></a><span class="lineno">  351</span>&#16
 0;</div><div class="line"><a name="l00352"></a><span class="lineno">  352</span>&#160;    <span class="comment">// Closes the write-end of the pipe but sends a failure</span></div><div class="line"><a name="l00353"></a><span class="lineno">  353</span>&#160;    <span class="comment">// to the reader rather than end-of-file. Returns false</span></div><div class="line"><a name="l00354"></a><span class="lineno">  354</span>&#160;    <span class="comment">// if the write-end of the pipe was already closed or failed.</span></div><div class="line"><a name="l00355"></a><span class="lineno">  355</span>&#160;    <span class="keywordtype">bool</span> fail(<span class="keyword">const</span> std::string&amp; message);</div><div class="line"><a name="l00356"></a><span class="lineno">  356</span>&#160;</div><div class="line"><a name="l00357"></a><span class="lineno">  357</span>&#160;    <span class="comment">// Returns Nothing when the read-end of the pipe is closed</span></div><div class="line
 "><a name="l00358"></a><span class="lineno">  358</span>&#160;    <span class="comment">// before the write-end is closed, which means the reader</span></div><div class="line"><a name="l00359"></a><span class="lineno">  359</span>&#160;    <span class="comment">// was unable to continue reading!</span></div><div class="line"><a name="l00360"></a><span class="lineno">  360</span>&#160;    <a class="code" href="classprocess_1_1Future.html">Future&lt;Nothing&gt;</a> readerClosed() <span class="keyword">const</span>;</div><div class="line"><a name="l00361"></a><span class="lineno">  361</span>&#160;</div><div class="line"><a name="l00362"></a><span class="lineno">  362</span>&#160;    <span class="comment">// Comparison operators useful for checking connection equality.</span></div><div class="line"><a name="l00363"></a><span class="lineno"><a class="line" href="classprocess_1_1http_1_1Pipe_1_1Writer.html#af9693ab7e438233a3e8244f3c650df7d">  363</a></span>&#160;    <span class="keywordt
 ype">bool</span> <a class="code" href="classprocess_1_1http_1_1Pipe_1_1Writer.html#af9693ab7e438233a3e8244f3c650df7d">operator==</a>(<span class="keyword">const</span> <a class="code" href="classprocess_1_1http_1_1Pipe_1_1Writer.html">Writer</a>&amp; other)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> data == other.data; }</div><div class="line"><a name="l00364"></a><span class="lineno"><a class="line" href="classprocess_1_1http_1_1Pipe_1_1Writer.html#a1d21b4591e3eae83215f95a34855b465">  364</a></span>&#160;    <span class="keywordtype">bool</span> <a class="code" href="classprocess_1_1http_1_1Pipe_1_1Writer.html#a1d21b4591e3eae83215f95a34855b465">operator!=</a>(<span class="keyword">const</span> <a class="code" href="classprocess_1_1http_1_1Pipe_1_1Writer.html">Writer</a>&amp; other)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> !(*<span class="keyword">this</span> == other); }</div><div class="line"><a name="l00365"></
 a><span class="lineno">  365</span>&#160;  <span class="keyword">private</span>:</div><div class="line"><a name="l00366"></a><span class="lineno"><a class="line" href="classprocess_1_1http_1_1Pipe_1_1Writer.html#adb788d0aa2d64624d3602a985936d7da">  366</a></span>&#160;    <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classprocess_1_1http_1_1Pipe.html">Pipe</a>;</div><div class="line"><a name="l00367"></a><span class="lineno">  367</span>&#160;</div><div class="line"><a name="l00368"></a><span class="lineno">  368</span>&#160;    <span class="keyword">enum</span> State</div><div class="line"><a name="l00369"></a><span class="lineno">  369</span>&#160;    {</div><div class="line"><a name="l00370"></a><span class="lineno">  370</span>&#160;      OPEN,</div><div class="line"><a name="l00371"></a><span class="lineno">  371</span>&#160;      CLOSED,</div><div class="line"><a name="l00372"></a><span class="lineno">  372</span>&#160;      FAILE
 D,</div><div class="line"><a name="l00373"></a><span class="lineno">  373</span>&#160;    };</div><div class="line"><a name="l00374"></a><span class="lineno">  374</span>&#160;</div><div class="line"><a name="l00375"></a><span class="lineno">  375</span>&#160;    <span class="keyword">explicit</span> <a class="code" href="classprocess_1_1http_1_1Pipe_1_1Writer.html">Writer</a>(<span class="keyword">const</span> std::shared_ptr&lt;Data&gt;&amp; _data) : data(_data) {}</div><div class="line"><a name="l00376"></a><span class="lineno">  376</span>&#160;</div><div class="line"><a name="l00377"></a><span class="lineno">  377</span>&#160;    std::shared_ptr&lt;Data&gt; data;</div><div class="line"><a name="l00378"></a><span class="lineno">  378</span>&#160;  };</div><div class="line"><a name="l00379"></a><span class="lineno">  379</span>&#160;</div><div class="line"><a name="l00380"></a><span class="lineno"><a class="line" href="classprocess_1_1http_1_1Pipe.html#ac4d65a3bbbdfba2bfeb755aedb
 5153da">  380</a></span>&#160;  <a class="code" href="classprocess_1_1http_1_1Pipe.html#ac4d65a3bbbdfba2bfeb755aedb5153da">Pipe</a>() : data(new Data()) {}</div><div class="line"><a name="l00381"></a><span class="lineno">  381</span>&#160;</div><div class="line"><a name="l00382"></a><span class="lineno">  382</span>&#160;  <a class="code" href="classprocess_1_1http_1_1Pipe_1_1Reader.html">Reader</a> reader() <span class="keyword">const</span>;</div><div class="line"><a name="l00383"></a><span class="lineno">  383</span>&#160;  <a class="code" href="classprocess_1_1http_1_1Pipe_1_1Writer.html">Writer</a> writer() <span class="keyword">const</span>;</div><div class="line"><a name="l00384"></a><span class="lineno">  384</span>&#160;</div><div class="line"><a name="l00385"></a><span class="lineno">  385</span>&#160;  <span class="comment">// Comparison operators useful for checking connection equality.</span></div><div class="line"><a name="l00386"></a><span class="lineno"><a class="lin
 e" href="classprocess_1_1http_1_1Pipe.html#a4dfc8ee332d8e02d63079491086d3a3b">  386</a></span>&#160;  <span class="keywordtype">bool</span> <a class="code" href="classprocess_1_1http_1_1Pipe.html#a4dfc8ee332d8e02d63079491086d3a3b">operator==</a>(<span class="keyword">const</span> <a class="code" href="classprocess_1_1http_1_1Pipe.html">Pipe</a>&amp; other)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> data == other.data; }</div><div class="line"><a name="l00387"></a><span class="lineno"><a class="line" href="classprocess_1_1http_1_1Pipe.html#a140c24540da2515a1c9835b594bc4df2">  387</a></span>&#160;  <span class="keywordtype">bool</span> <a class="code" href="classprocess_1_1http_1_1Pipe.html#a140c24540da2515a1c9835b594bc4df2">operator!=</a>(<span class="keyword">const</span> <a class="code" href="classprocess_1_1http_1_1Pipe.html">Pipe</a>&amp; other)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> !(*<span class="keyword">
 this</span> == other); }</div><div class="line"><a name="l00388"></a><span class="lineno">  388</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00389"></a><span class="lineno">  389</span>&#160;  <span class="keyword">struct </span>Data</div><div class="line"><a name="l00390"></a><span class="lineno">  390</span>&#160;  {</div><div class="line"><a name="l00391"></a><span class="lineno">  391</span>&#160;    Data()</div><div class="line"><a name="l00392"></a><span class="lineno">  392</span>&#160;      : readEnd(Reader::OPEN),</div><div class="line"><a name="l00393"></a><span class="lineno">  393</span>&#160;        writeEnd(Writer::OPEN) {}</div><div class="line"><a name="l00394"></a><span class="lineno">  394</span>&#160;</div><div class="line"><a name="l00395"></a><span class="lineno">  395</span>&#160;    <span class="comment">// Rather than use a process to serialize access to the pipe&#39;s</span></div><div class="line"><a name="l00396"></a><s
 pan class="lineno">  396</span>&#160;    <span class="comment">// internal data we use a &#39;std::atomic_flag&#39;.</span></div><div class="line"><a name="l00397"></a><span class="lineno">  397</span>&#160;    std::atomic_flag lock = ATOMIC_FLAG_INIT;</div><div class="line"><a name="l00398"></a><span class="lineno">  398</span>&#160;</div><div class="line"><a name="l00399"></a><span class="lineno">  399</span>&#160;    Reader::State readEnd;</div><div class="line"><a name="l00400"></a><span class="lineno">  400</span>&#160;    Writer::State writeEnd;</div><div class="line"><a name="l00401"></a><span class="lineno">  401</span>&#160;</div><div class="line"><a name="l00402"></a><span class="lineno">  402</span>&#160;    <span class="comment">// Represents readers waiting for data from the pipe.</span></div><div class="line"><a name="l00403"></a><span class="lineno">  403</span>&#160;    std::queue&lt;Owned&lt;Promise&lt;std::string&gt;&gt;&gt; reads;</div><div class="line"><a name="l
 00404"></a><span class="lineno">  404</span>&#160;</div><div class="line"><a name="l00405"></a><span class="lineno">  405</span>&#160;    <span class="comment">// Represents unread writes in the pipe. Note that we omit</span></div><div class="line"><a name="l00406"></a><span class="lineno">  406</span>&#160;    <span class="comment">// empty strings as they serve as a signal for end-of-file.</span></div><div class="line"><a name="l00407"></a><span class="lineno">  407</span>&#160;    std::queue&lt;std::string&gt; writes;</div><div class="line"><a name="l00408"></a><span class="lineno">  408</span>&#160;</div><div class="line"><a name="l00409"></a><span class="lineno">  409</span>&#160;    <span class="comment">// Signals when the read-end is closed before the write-end.</span></div><div class="line"><a name="l00410"></a><span class="lineno">  410</span>&#160;    <a class="code" href="classprocess_1_1Promise.html">Promise&lt;Nothing&gt;</a> readerClosure;</div><div class="line"><a na
 me="l00411"></a><span class="lineno">  411</span>&#160;</div><div class="line"><a name="l00412"></a><span class="lineno">  412</span>&#160;    <span class="comment">// Failure reason when the &#39;writeEnd&#39; is FAILED.</span></div><div class="line"><a name="l00413"></a><span class="lineno">  413</span>&#160;    <a class="code" href="classOption.html">Option&lt;Failure&gt;</a> failure;</div><div class="line"><a name="l00414"></a><span class="lineno">  414</span>&#160;  };</div><div class="line"><a name="l00415"></a><span class="lineno">  415</span>&#160;</div><div class="line"><a name="l00416"></a><span class="lineno">  416</span>&#160;  std::shared_ptr&lt;Data&gt; data;</div><div class="line"><a name="l00417"></a><span class="lineno">  417</span>&#160;};</div><div class="line"><a name="l00418"></a><span class="lineno">  418</span>&#160;</div><div class="line"><a name="l00419"></a><span class="lineno">  419</span>&#160;</div><div class="line"><a name="l00420"></a><span class="line
 no"><a class="line" href="namespaceprocess_1_1http_1_1header.html">  420</a></span>&#160;<span class="keyword">namespace </span>header {</div><div class="line"><a name="l00421"></a><span class="lineno">  421</span>&#160;</div><div class="line"><a name="l00422"></a><span class="lineno">  422</span>&#160;<span class="comment">// https://tools.ietf.org/html/rfc2617.</span></div><div class="line"><a name="l00423"></a><span class="lineno"><a class="line" href="classprocess_1_1http_1_1header_1_1WWWAuthenticate.html">  423</a></span>&#160;<span class="keyword">class </span><a class="code" href="classprocess_1_1http_1_1header_1_1WWWAuthenticate.html">WWWAuthenticate</a></div><div class="line"><a name="l00424"></a><span class="lineno">  424</span>&#160;{</div><div class="line"><a name="l00425"></a><span class="lineno">  425</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00426"></a><span class="lineno"><a class="line" href="classprocess_1_1http_1_1header_1_1
 WWWAuthenticate.html#aa25cdb0353e7e0b131a4528ca8ad3d68">  426</a></span>&#160;  <span class="keyword">static</span> constexpr <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="namespacemesos_1_1internal_1_1logger_1_1rotate.html#aee5dc359a1b6d22c5d912b166c895854">NAME</a> = <span class="stringliteral">&quot;WWW-Authenticate&quot;</span>;</div><div class="line"><a name="l00427"></a><span class="lineno">  427</span>&#160;</div><div class="line"><a name="l00428"></a><span class="lineno"><a class="line" href="classprocess_1_1http_1_1header_1_1WWWAuthenticate.html#a1694b4ae16e6aa84cbec3bcda360e913">  428</a></span>&#160;  <a class="code" href="classprocess_1_1http_1_1header_1_1WWWAuthenticate.html#a1694b4ae16e6aa84cbec3bcda360e913">WWWAuthenticate</a>(</div><div class="line"><a name="l00429"></a><span class="lineno">  429</span>&#160;      <span class="keyword">const</span> std::string&amp; authScheme,</div><div class="line"><a name="l00430"><
 /a><span class="lineno">  430</span>&#160;      <span class="keyword">const</span> <a class="code" href="classhashmap.html">hashmap&lt;std::string, std::string&gt;</a>&amp; authParam)</div><div class="line"><a name="l00431"></a><span class="lineno">  431</span>&#160;    : authScheme_(authScheme),</div><div class="line"><a name="l00432"></a><span class="lineno">  432</span>&#160;      authParam_(authParam) {}</div><div class="line"><a name="l00433"></a><span class="lineno">  433</span>&#160;</div><div class="line"><a name="l00434"></a><span class="lineno">  434</span>&#160;  <span class="keyword">static</span> <a class="code" href="classTry.html">Try&lt;WWWAuthenticate&gt;</a> <a class="code" href="namespacecgroups.html#a2ecc89636706df947027a4c3c2100fbe">create</a>(<span class="keyword">const</span> std::string&amp; value);</div><div class="line"><a name="l00435"></a><span class="lineno">  435</span>&#160;</div><div class="line"><a name="l00436"></a><span class="lineno">  436</span>&
 #160;  std::string authScheme();</div><div class="line"><a name="l00437"></a><span class="lineno">  437</span>&#160;  <a class="code" href="classhashmap.html">hashmap&lt;std::string, std::string&gt;</a> authParam();</div><div class="line"><a name="l00438"></a><span class="lineno">  438</span>&#160;</div><div class="line"><a name="l00439"></a><span class="lineno">  439</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00440"></a><span class="lineno">  440</span>&#160;  <span class="comment">// According to RFC, HTTP/1.1 server may return multiple challenges</span></div><div class="line"><a name="l00441"></a><span class="lineno">  441</span>&#160;  <span class="comment">// with a 401 (Authenticate) response. Each challenage is in the</span></div><div class="line"><a name="l00442"></a><span class="lineno">  442</span>&#160;  <span class="comment">// format of &#39;auth-scheme 1*SP 1#auth-param&#39; and each challenage may</span></div><div class="line"><
 a name="l00443"></a><span class="lineno">  443</span>&#160;  <span class="comment">// use a different auth-scheme.</span></div><div class="line"><a name="l00444"></a><span class="lineno">  444</span>&#160;  <span class="comment">// https://tools.ietf.org/html/rfc2617#section-4.6</span></div><div class="line"><a name="l00445"></a><span class="lineno">  445</span>&#160;  <span class="comment">//</span></div><div class="line"><a name="l00446"></a><span class="lineno">  446</span>&#160;  <span class="comment">// TODO(gilbert): We assume there is only one authenticate challenge.</span></div><div class="line"><a name="l00447"></a><span class="lineno">  447</span>&#160;  <span class="comment">// Multiple challenges should be supported as well.</span></div><div class="line"><a name="l00448"></a><span class="lineno">  448</span>&#160;  std::string authScheme_;</div><div class="line"><a name="l00449"></a><span class="lineno">  449</span>&#160;  <a class="code" href="classhashmap.html">hashmap
 &lt;std::string, std::string&gt;</a> authParam_;</div><div class="line"><a name="l00450"></a><span class="lineno">  450</span>&#160;};</div><div class="line"><a name="l00451"></a><span class="lineno">  451</span>&#160;</div><div class="line"><a name="l00452"></a><span class="lineno">  452</span>&#160;} <span class="comment">// namespace header {</span></div><div class="line"><a name="l00453"></a><span class="lineno">  453</span>&#160;</div><div class="line"><a name="l00454"></a><span class="lineno">  454</span>&#160;</div><div class="line"><a name="l00455"></a><span class="lineno"><a class="line" href="classprocess_1_1http_1_1Headers.html">  455</a></span>&#160;<span class="keyword">class </span><a class="code" href="classprocess_1_1http_1_1Headers.html">Headers</a> : <span class="keyword">public</span> <a class="code" href="classhashmap.html">hashmap</a>&lt;</div><div class="line"><a name="l00456"></a><span class="lineno">  456</span>&#160;    std::string,</div><div class="line"><a
  name="l00457"></a><span class="lineno">  457</span>&#160;    std::string,</div><div class="line"><a name="l00458"></a><span class="lineno">  458</span>&#160;    CaseInsensitiveHash,</div><div class="line"><a name="l00459"></a><span class="lineno">  459</span>&#160;    CaseInsensitiveEqual&gt;</div><div class="line"><a name="l00460"></a><span class="lineno">  460</span>&#160;{</div><div class="line"><a name="l00461"></a><span class="lineno">  461</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00462"></a><span class="lineno"><a class="line" href="classprocess_1_1http_1_1Headers.html#a8ebd5d74c3557ec3ee54daf933c5e51c">  462</a></span>&#160;  <a class="code" href="classprocess_1_1http_1_1Headers.html#a8ebd5d74c3557ec3ee54daf933c5e51c">Headers</a>() {}</div><div class="line"><a name="l00463"></a><span class="lineno">  463</span>&#160;</div><div class="line"><a name="l00464"></a><span class="lineno"><a class="line" href="classprocess_1_1http_1_1Headers.
 html#abf4e64a7f7a09f6d99497296f9ab4911">  464</a></span>&#160;  <a class="code" href="classprocess_1_1http_1_1Headers.html#abf4e64a7f7a09f6d99497296f9ab4911">Headers</a>(<span class="keyword">const</span> std::map&lt;std::string, std::string&gt;&amp; <a class="code" href="namespacelambda.html#a6030d65051d5968ada4d2e528b2fcd57">map</a>)</div><div class="line"><a name="l00465"></a><span class="lineno">  465</span>&#160;    : <a class="code" href="classhashmap.html">hashmap</a>&lt;</div><div class="line"><a name="l00466"></a><span class="lineno">  466</span>&#160;          <a class="code" href="namespacestd.html">std</a>::string,</div><div class="line"><a name="l00467"></a><span class="lineno">  467</span>&#160;          <a class="code" href="namespacestd.html">std</a>::string,</div><div class="line"><a name="l00468"></a><span class="lineno">  468</span>&#160;          <a class="code" href="structprocess_1_1http_1_1CaseInsensitiveHash.html">CaseInsensitiveHash</a>,</div><div class="lin
 e"><a name="l00469"></a><span class="lineno">  469</span>&#160;          <a class="code" href="structprocess_1_1http_1_1CaseInsensitiveEqual.html">CaseInsensitiveEqual</a>&gt;(map) {}</div><div class="line"><a name="l00470"></a><span class="lineno">  470</span>&#160;</div><div class="line"><a name="l00471"></a><span class="lineno"><a class="line" href="classprocess_1_1http_1_1Headers.html#a03479d96b4c86a55083f0ac993891186">  471</a></span>&#160;  <a class="code" href="classprocess_1_1http_1_1Headers.html#a03479d96b4c86a55083f0ac993891186">Headers</a>(std::map&lt;std::string, std::string&gt;&amp;&amp; <a class="code" href="namespacelambda.html#a6030d65051d5968ada4d2e528b2fcd57">map</a>)</div><div class="line"><a name="l00472"></a><span class="lineno">  472</span>&#160;    : <a class="code" href="classhashmap.html">hashmap</a>&lt;</div><div class="line"><a name="l00473"></a><span class="lineno">  473</span>&#160;          <a class="code" href="namespacestd.html">std</a>::string,</div>
 <div class="line"><a name="l00474"></a><span class="lineno">  474</span>&#160;          <a class="code" href="namespacestd.html">std</a>::string,</div><div class="line"><a name="l00475"></a><span class="lineno">  475</span>&#160;          <a class="code" href="structprocess_1_1http_1_1CaseInsensitiveHash.html">CaseInsensitiveHash</a>,</div><div class="line"><a name="l00476"></a><span class="lineno">  476</span>&#160;          <a class="code" href="structprocess_1_1http_1_1CaseInsensitiveEqual.html">CaseInsensitiveEqual</a>&gt;(<a class="code" href="namespacelambda.html#a6030d65051d5968ada4d2e528b2fcd57">map</a>) {}</div><div class="line"><a name="l00477"></a><span class="lineno">  477</span>&#160;</div><div class="line"><a name="l00478"></a><span class="lineno"><a class="line" href="classprocess_1_1http_1_1Headers.html#afcda2f597b4567f9959fffcdb3845cf6">  478</a></span>&#160;  <a class="code" href="classprocess_1_1http_1_1Headers.html#afcda2f597b4567f9959fffcdb3845cf6">Headers</a>(s
 td::initializer_list&lt;std::pair&lt;std::string, std::string&gt;&gt; <a class="code" href="namespacecgroups_1_1devices.html#a22494291bc2cb89697dcd2b5f288bdd3">list</a>)</div><div class="line"><a name="l00479"></a><span class="lineno">  479</span>&#160;     : <a class="code" href="classhashmap.html">hashmap</a>&lt;</div><div class="line"><a name="l00480"></a><span class="lineno">  480</span>&#160;          <a class="code" href="namespacestd.html">std</a>::string,</div><div class="line"><a name="l00481"></a><span class="lineno">  481</span>&#160;          <a class="code" href="namespacestd.html">std</a>::string,</div><div class="line"><a name="l00482"></a><span class="lineno">  482</span>&#160;          <a class="code" href="structprocess_1_1http_1_1CaseInsensitiveHash.html">CaseInsensitiveHash</a>,</div><div class="line"><a name="l00483"></a><span class="lineno">  483</span>&#160;          <a class="code" href="structprocess_1_1http_1_1CaseInsensitiveEqual.html">CaseInsensitiveEqual
 </a>&gt;(<a class="code" href="namespacecgroups_1_1devices.html#a22494291bc2cb89697dcd2b5f288bdd3">list</a>) {}</div><div class="line"><a name="l00484"></a><span class="lineno">  484</span>&#160;</div><div class="line"><a name="l00485"></a><span class="lineno">  485</span>&#160;  <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l00486"></a><span class="lineno"><a class="line" href="classprocess_1_1http_1_1Headers.html#ace314043b5f44f854097d321246a26c0">  486</a></span>&#160;  <a class="code" href="classResult.html">Result&lt;T&gt;</a> <span class="keyword">get</span>() <span class="keyword">const</span></div><div class="line"><a name="l00487"></a><span class="lineno">  487</span>&#160;  {</div><div class="line"><a name="l00488"></a><span class="lineno">  488</span>&#160;    <a class="code" href="classOption.html">Option&lt;std::string&gt;</a> value = <span class="keyword">get</span>(<a class="code" href="namespacem
 esos_1_1internal_1_1logger_1_1rotate.html#aee5dc359a1b6d22c5d912b166c895854">T::NAME</a>);</div><div class="line"><a name="l00489"></a><span class="lineno">  489</span>&#160;    <span class="keywordflow">if</span> (value.<a class="code" href="classOption.html#a06eab791122ebc1f8af4ad310e5e7d7e">isNone</a>()) {</div><div class="line"><a name="l00490"></a><span class="lineno">  490</span>&#160;      <span class="keywordflow">return</span> <a class="code" href="structNone.html">None</a>();</div><div class="line"><a name="l00491"></a><span class="lineno">  491</span>&#160;    }</div><div class="line"><a name="l00492"></a><span class="lineno">  492</span>&#160;    <a class="code" href="classTry.html">Try&lt;T&gt;</a> header = <a class="code" href="namespacecgroups.html#a2ecc89636706df947027a4c3c2100fbe">T::create</a>(value.<a class="code" href="classOption.html#a21358442c0fac1cc978a67a9a9089a79">get</a>());</div><div class="line"><a name="l00493"></a><span class="lineno">  493</span>&#160
 ;    <span class="keywordflow">if</span> (header.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00494"></a><span class="lineno">  494</span>&#160;      <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(header.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00495"></a><span class="lineno">  495</span>&#160;    }</div><div class="line"><a name="l00496"></a><span class="lineno">  496</span>&#160;    <span class="keywordflow">return</span> header.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>();</div><div class="line"><a name="l00497"></a><span class="lineno">  497</span>&#160;  }</div><div class="line"><a name="l00498"></a><span class="lineno">  498</span>&#160;</div><div class="line"><a name="l00499"></a><span class="lineno"><a class="line" href="classprocess_1_1http_1_1Hea
 ders.html#a93cdd375ffca86b0ffc3822ebc232be6">  499</a></span>&#160;  <a class="code" href="classOption.html">Option&lt;std::string&gt;</a> <span class="keyword">get</span>(<span class="keyword">const</span> std::string&amp; key) <span class="keyword">const</span></div><div class="line"><a name="l00500"></a><span class="lineno">  500</span>&#160;  {</div><div class="line"><a name="l00501"></a><span class="lineno">  501</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classhashmap.html">hashmap</a>&lt;</div><div class="line"><a name="l00502"></a><span class="lineno">  502</span>&#160;        std::string,</div><div class="line"><a name="l00503"></a><span class="lineno">  503</span>&#160;        std::string,</div><div class="line"><a name="l00504"></a><span class="lineno">  504</span>&#160;        <a class="code" href="structprocess_1_1http_1_1CaseInsensitiveHash.html">CaseInsensitiveHash</a>,</div><div class="line"><a name="l00505"></a><span class="lineno">
   505</span>&#160;        <a cl

<TRUNCATED>

[41/50] mesos-site git commit: Updated the website built from mesos SHA: 7c9c72d.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/cni_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/cni_8hpp_source.html b/content/api/latest/c++/cni_8hpp_source.html
index 2f66264..ec8c4c2 100644
--- a/content/api/latest/c++/cni_8hpp_source.html
+++ b/content/api/latest/c++/cni_8hpp_source.html
@@ -52,7 +52,7 @@
 <div class="title">cni.hpp</div>  </div>
 </div><!--header-->
 <div class="contents">
-<a href="cni_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>&#160;<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>&#160;<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>&#160;<span class="comment">// distributed with this work for additional information</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<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>&#160;<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>&#160;<span class="comment">// &quot;License&quot;); you may not use this file except in compliance</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<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>&#160;<span class="comment">// distributed u
 nder the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<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>&#160;<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>&#160;<span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;</div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="preprocessor">#ifndef __NETWORK_CNI_ISOLATOR_HPP__</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="preprocessor">#define __NETWORK_CNI_ISOLATOR_HPP__</span></div><div class="l
 ine"><a name="l00019"></a><span class="lineno">   19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="id_8hpp.html">process/id.hpp</a>&gt;</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="subprocess_8hpp.html">process/subprocess.hpp</a>&gt;</span></div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="subcommand_8hpp.html">stout/subcommand.hpp</a>&gt;</span></div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;</div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="src_2slave_2flags_8
 hpp.html">slave/flags.hpp</a>&quot;</span></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>&#160;<span class="preprocessor">#include &quot;<a class="code" href="src_2slave_2containerizer_2mesos_2isolator_8hpp.html">slave/containerizer/mesos/isolator.hpp</a>&quot;</span></div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;</div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="src_2slave_2containerizer_2mesos_2isolators_2network_2cni_2spec_8hpp.html">slave/containerizer/mesos/isolators/network/cni/spec.hpp</a>&quot;</span></div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="slave_2containerizer_2mesos_2isolators_2network_2cni_2paths_8hpp.html">slave/container
 izer/mesos/isolators/network/cni/paths.hpp</a>&quot;</span></div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;</div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;<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>&#160;<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>&#160;<span class="keyword">namespace </span>slave {</div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;</div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;<span class="comment">// Forward declarations.</span></div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;<span class="keyword">class </span>NetworkCniIsolatorSetup;
 </div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;</div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;<span class="comment">// This isolator implements support for Container Network Interface (CNI)</span></div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;<span class="comment">// specification &lt;https://github.com/appc/cni/blob/master/SPEC.md&gt; . It</span></div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;<span class="comment">// provides network isolation to containers by creating a network namespace</span></div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;<span class="comment">// for each container, and then adding the container to the CNI network</span></div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#1
 60;<span class="comment">// specified in the NetworkInfo for the container. It adds the container to</span></div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;<span class="comment">// a CNI network by using CNI plugins specified by the operator for the</span></div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;<span class="comment">// corresponding CNI network.</span></div><div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1slave_1_1NetworkCniIsolatorProcess.html">   47</a></span>&#160;<span class="keyword">class </span><a class="code" href="classmesos_1_1internal_1_1slave_1_1NetworkCniIsolatorProcess.html">NetworkCniIsolatorProcess</a> : <span class="keyword">public</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1MesosIsolatorProcess.html">MesosIsolatorProcess</a></div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;{</
 div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;  <span class="keyword">static</span> <a class="code" href="classTry.html">Try&lt;mesos::slave::Isolator*&gt;</a> <a class="code" href="classmesos_1_1internal_1_1slave_1_1NetworkCniIsolatorProcess.html#a12a31bdd9d873ebe68c492c1eea562de">create</a>(<span class="keyword">const</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Flags.html">Flags</a>&amp; <a class="code" href="namespaceflags.html">flags</a>);</div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;</div><div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1slave_1_1NetworkCniIsolatorProcess.html#a5cb876e852d66514a64562bf46cc92c4">   52</a></span>&#160;  <span class="keyword">virtual</span> <a class="code" href="classmesos_1_1inte
 rnal_1_1slave_1_1NetworkCniIsolatorProcess.html#a5cb876e852d66514a64562bf46cc92c4">~NetworkCniIsolatorProcess</a>() {}</div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;</div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1NetworkCniIsolatorProcess.html#ae38922e85a5082b87910c53ed3614e09">supportsNesting</a>();</div><div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;</div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;  <span class="keyword">virtual</span> <a class="code" href="classprocess_1_1Future.html">process::Future&lt;Nothing&gt;</a> <a class="code" href="classmesos_1_1internal_1_1slave_1_1NetworkCniIsolatorProcess.html#af94c99e1b44722fd577aa9be6e97eb8e">recover</a>(</div><div class="line"><a name="l00057"></a><span class="lin
 eno">   57</span>&#160;      <span class="keyword">const</span> std::vector&lt;mesos::slave::ContainerState&gt;&amp; states,</div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;      <span class="keyword">const</span> <a class="code" href="classhashset.html">hashset&lt;ContainerID&gt;</a>&amp; orphans);</div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;</div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;  <span class="keyword">virtual</span> <a class="code" href="classprocess_1_1Future.html">process::Future&lt;Option&lt;mesos::slave::ContainerLaunchInfo&gt;</a>&gt; <a class="code" href="classmesos_1_1internal_1_1slave_1_1NetworkCniIsolatorProcess.html#a5c646c0b22fc11d8abf3feddab473ee0">prepare</a>(</div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;      <span class="keyword">const</span> ContainerID&amp; containerId,</div><div class="line"><a name="l00062"
 ></a><span class="lineno">   62</span>&#160;      <span class="keyword">const</span> mesos::slave::ContainerConfig&amp; containerConfig);</div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;</div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;  <span class="keyword">virtual</span> <a class="code" href="classprocess_1_1Future.html">process::Future&lt;Nothing&gt;</a> <a class="code" href="classmesos_1_1internal_1_1slave_1_1NetworkCniIsolatorProcess.html#a4d2771d57033cea741ec6dd2bc6f738d">isolate</a>(</div><div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;      <span class="keyword">const</span> ContainerID&amp; containerId,</div><div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;      <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a> pid);</div><div class="line"><a name="l00067"></a><span class="lineno"
 >   67</span>&#160;</div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;  <span class="keyword">virtual</span> <a class="code" href="classprocess_1_1Future.html">process::Future&lt;ContainerStatus&gt;</a> <a class="code" href="classmesos_1_1internal_1_1slave_1_1NetworkCniIsolatorProcess.html#aac3a4e9bacac1572ee598bf6d3a75ce4">status</a>(</div><div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;      <span class="keyword">const</span> ContainerID&amp; containerId);</div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;</div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;  <span class="keyword">virtual</span> <a class="code" href="classprocess_1_1Future.html">process::Future&lt;Nothing&gt;</a> <a class="code" href="classmesos_1_1internal_1_1slave_1_1NetworkCniIsolatorProcess.html#a54854512f8a210b41c3645409f170a2e">cleanup</a>(</div><div class="line"><a name="l00072"></a
 ><span class="lineno">   72</span>&#160;      <span class="keyword">const</span> ContainerID&amp; containerId);</div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;</div><div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;  <span class="keyword">struct </span>ContainerNetwork</div><div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;  {</div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;    <span class="comment">// CNI network name.</span></div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;    std::string networkName;</div><div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;</div><div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;    <span class="comment">// Interface 
 name.</span></div><div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;    std::string ifName;</div><div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;</div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;    <span class="comment">// NetworkInfo copied from the ExecutorInfo.containerInfo.network_infos</span></div><div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;    <span class="comment">// in &#39;prepare()&#39; and &#39;_recover()&#39;.</span></div><div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;    <a class="code" href="classOption.html">Option&lt;mesos::NetworkInfo&gt;</a> networkInfo;</div><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;</div><div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;    <span class="comment">// Protobuf of CNI network information returned by CNI plugin.</spa
 n></div><div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;    <a class="code" href="classOption.html">Option&lt;cni::spec::NetworkInfo&gt;</a> cniNetworkInfo;</div><div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;  };</div><div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;</div><div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;  <span class="keyword">struct </span>Info</div><div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;  {</div><div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;    Info (<span class="keyword">const</span> <a class="code" href="classhashmap.html">hashmap&lt;std::string, ContainerNetwork&gt;</a>&amp; _containerNetworks,</div><div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;          <span class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;std:
 :string&gt;</a>&amp; _rootfs = <a class="code" href="structNone.html">None</a>(),</div><div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;          <span class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;std::string&gt;</a>&amp; _hostname = <a class="code" href="structNone.html">None</a>(),</div><div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;          <span class="keywordtype">bool</span> _joinsParentsNetwork = <span class="keyword">false</span>)</div><div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;      : containerNetworks (_containerNetworks),</div><div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;        rootfs(_rootfs),</div><div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;        <a class="code" href="namespacenet.html#a28018530986e91a179ea6239fdf0a447">hostname</a>(_hostname),</div><div class="line"><a nam
 e="l00100"></a><span class="lineno">  100</span>&#160;        joinsParentsNetwork(_joinsParentsNetwork) {}</div><div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;</div><div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;    <span class="comment">// CNI network information keyed by network name.</span></div><div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;    <span class="comment">//</span></div><div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;    <span class="comment">// NOTE: For nested containers, since the container shares the</span></div><div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;    <span class="comment">// network namespace with the root container of its hierarchy,</span></div><div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;    <span class="comment">// this should simply be a copy of the `containerNetwo
 rks` of its</span></div><div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;    <span class="comment">// root container.</span></div><div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;    <a class="code" href="classhashmap.html">hashmap&lt;std::string, ContainerNetwork&gt;</a> containerNetworks;</div><div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;</div><div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;    <span class="comment">// Rootfs of the container file system. In case the container uses</span></div><div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;    <span class="comment">// the host file system, this will be `None`.</span></div><div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;    <span class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;std::string&gt;</a> rootfs;</div><div class="l
 ine"><a name="l00113"></a><span class="lineno">  113</span>&#160;</div><div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;    <span class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;std::string&gt;</a> <a class="code" href="namespacenet.html#a28018530986e91a179ea6239fdf0a447">hostname</a>;</div><div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;    <span class="keyword">const</span> <span class="keywordtype">bool</span> joinsParentsNetwork;</div><div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;  };</div><div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;</div><div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;  <span class="comment">// Reads each CNI config present in `configDir`, validates if the</span></div><div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;  <span class="comment">// `plugin
 ` is present in the search path associated with</span></div><div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;  <span class="comment">// `pluginDir` and adds the CNI network config to `networkConfigs`</span></div><div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;  <span class="comment">// if the validation passes. If there is an error while reading the</span></div><div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;  <span class="comment">// CNI config, or if the plugin is not found, we log an error and the</span></div><div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;  <span class="comment">// CNI network config is not added to `networkConfigs`.</span></div><div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;  <span class="keyword">static</span> <a class="code" href="classTry.html">Try&lt;hashmap&lt;std::string, std::string&gt;</a>&gt; loadNetworkC
 onfigs(</div><div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;      <span class="keyword">const</span> std::string&amp; configDir,</div><div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;      <span class="keyword">const</span> std::string&amp; pluginDir);</div><div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;</div><div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;  <a class="code" href="classmesos_1_1internal_1_1slave_1_1NetworkCniIsolatorProcess.html">NetworkCniIsolatorProcess</a>(</div><div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;      <span class="keyword">const</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Flags.html">Flags</a>&amp; _flags,</div><div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;      <span class="keyword">const</span> <a class="code" href="classhashmap.html">hashmap&lt;std
 ::string, std::string&gt;</a>&amp; _networkConfigs,</div><div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;      <span class="keyword">const</span> <a class="code" href="classhashmap.html">hashmap&lt;std::string, ContainerDNSInfo::MesosInfo&gt;</a>&amp; _cniDNSMap,</div><div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;      <span class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;ContainerDNSInfo::MesosInfo&gt;</a>&amp; _defaultCniDNS = <a class="code" href="structNone.html">None</a>(),</div><div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;      <span class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;std::string&gt;</a>&amp; _rootDir = <a class="code" href="structNone.html">None</a>(),</div><div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;      <span class="keyword">const</span> <a class="code" href="classOption.h
 tml">Option&lt;std::string&gt;</a>&amp; _pluginDir = <a class="code" href="structNone.html">None</a>())</div><div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;    : <a class="code" href="classprocess_1_1ProcessBase.html#a318038bacd95e4260864533f7cfe12fd">ProcessBase</a>(<a class="code" href="namespaceprocess_1_1ID.html#aeb11a48c9def1da169d8455a30d0ee39">process::ID::generate</a>(<span class="stringliteral">&quot;mesos-network-cni-isolator&quot;</span>)),</div><div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;      flags(_flags),</div><div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;      networkConfigs(_networkConfigs),</div><div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;      cniDNSMap(_cniDNSMap),</div><div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;      defaultCniDNS(_defaultCniDNS),</div><div class="line"><a name="l00140"></a><span cl
 ass="lineno">  140</span>&#160;      rootDir(_rootDir),</div><div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;      pluginDir(_pluginDir) {}</div><div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;</div><div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;  <a class="code" href="classprocess_1_1Future.html">process::Future&lt;Nothing&gt;</a> _isolate(</div><div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;      <span class="keyword">const</span> ContainerID&amp; containerId,</div><div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;      <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a> pid,</div><div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;      <span class="keyword">const</span> std::vector&lt;<a class="code" href="classprocess_1_1Future.html">proces
 s::Future&lt;Nothing&gt;</a>&gt;&amp; attaches);</div><div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;</div><div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;  <a class="code" href="classprocess_1_1Future.html">process::Future&lt;Nothing&gt;</a> __isolate(</div><div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;      <span class="keyword">const</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1NetworkCniIsolatorSetup.html">NetworkCniIsolatorSetup</a>&amp; setup);</div><div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;</div><div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;  <a class="code" href="classTry.html">Try&lt;Nothing&gt;</a> _recover(</div><div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;      <span class="keyword">const</span> ContainerID&amp; containerId,</div><div class="line"><a name="l0015
 3"></a><span class="lineno">  153</span>&#160;      <span class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;mesos::slave::ContainerState&gt;</a>&amp; state = <a class="code" href="structNone.html">None</a>());</div><div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;</div><div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;  <a class="code" href="classprocess_1_1Future.html">process::Future&lt;Nothing&gt;</a> attach(</div><div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;      <span class="keyword">const</span> ContainerID&amp; containerId,</div><div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;      <span class="keyword">const</span> std::string&amp; networkName,</div><div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;      <span class="keyword">const</span> std::string&amp; netNsHandle);</div><div class="line"><a name="
 l00159"></a><span class="lineno">  159</span>&#160;</div><div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;  <a class="code" href="classprocess_1_1Future.html">process::Future&lt;Nothing&gt;</a> _attach(</div><div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;      <span class="keyword">const</span> ContainerID&amp; containerId,</div><div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;      <span class="keyword">const</span> std::string&amp; networkName,</div><div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;      <span class="keyword">const</span> std::string&amp; plugin,</div><div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;      <span class="keyword">const</span> std::tuple&lt;</div><div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;          <a class="code" href="classprocess_1_1Future.html">process::Future</a>&lt;<a
  class="code" href="classOption.html">Option&lt;int&gt;</a>&gt;,</div><div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;          <a class="code" href="classprocess_1_1Future.html">process::Future&lt;std::string&gt;</a>,</div><div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;          <a class="code" href="classprocess_1_1Future.html">process::Future&lt;std::string&gt;</a>&gt;&amp; t);</div><div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;</div><div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;  <a class="code" href="classprocess_1_1Future.html">process::Future&lt;Nothing&gt;</a> detach(</div><div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;      <span class="keyword">const</span> ContainerID&amp; containerId,</div><div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;      <span class="keyword">const</span> std::string
 &amp; networkName);</div><div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;</div><div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;  <a class="code" href="classprocess_1_1Future.html">process::Future&lt;Nothing&gt;</a> _detach(</div><div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;      <span class="keyword">const</span> ContainerID&amp; containerId,</div><div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;      <span class="keyword">const</span> std::string&amp; networkName,</div><div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;      <span class="keyword">const</span> std::string&amp; plugin,</div><div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;      <span class="keyword">const</span> std::tuple&lt;</div><div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;          <a class="code" href="cl
 assprocess_1_1Future.html">process::Future</a>&lt;<a class="code" href="classOption.html">Option&lt;int&gt;</a>&gt;,</div><div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;          <a class="code" href="classprocess_1_1Future.html">process::Future&lt;std::string&gt;</a>,</div><div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;          <a class="code" href="classprocess_1_1Future.html">process::Future&lt;std::string&gt;</a>&gt;&amp; t);</div><div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;</div><div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160;  <a class="code" href="classprocess_1_1Future.html">process::Future&lt;Nothing&gt;</a> _cleanup(</div><div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;      <span class="keyword">const</span> ContainerID&amp; containerId,</div><div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#16
 0;      <span class="keyword">const</span> std::vector&lt;<a class="code" href="classprocess_1_1Future.html">process::Future&lt;Nothing&gt;</a>&gt;&amp; detaches);</div><div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;</div><div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;  <span class="comment">// Searches the `networkConfigs` hashmap for a CNI network. If the</span></div><div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;  <span class="comment">// hashmap doesn&#39;t contain the network, will try to load all the CNI</span></div><div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;  <span class="comment">// configs from `flags.network_cni_config_dir`, and will then</span></div><div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160;  <span class="comment">// perform another search of the `networkConfigs` hashmap to see if</span></div><div class="line">
 <a name="l00190"></a><span class="lineno">  190</span>&#160;  <span class="comment">// the missing network was present on disk.</span></div><div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160;  <a class="code" href="classTry.html">Try&lt;JSON::Object&gt;</a> getNetworkConfigJSON(<span class="keyword">const</span> std::string&amp; network);</div><div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;</div><div class="line"><a name="l00193"></a><span class="lineno">  193</span>&#160;  <span class="comment">// Given a network name and the path for the CNI network</span></div><div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#160;  <span class="comment">// configuration file, reads the file, parses the JSON and</span></div><div class="line"><a name="l00195"></a><span class="lineno">  195</span>&#160;  <span class="comment">// validates the name of the network to which this configuration</span></div><div class="line"
 ><a name="l00196"></a><span class="lineno">  196</span>&#160;  <span class="comment">// file belongs.</span></div><div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;  <a class="code" href="classTry.html">Try&lt;JSON::Object&gt;</a> getNetworkConfigJSON(</div><div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160;      <span class="keyword">const</span> std::string&amp; network,</div><div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160;      <span class="keyword">const</span> std::string&amp; <a class="code" href="namespacepath.html">path</a>);</div><div class="line"><a name="l00200"></a><span class="lineno">  200</span>&#160;</div><div class="line"><a name="l00201"></a><span class="lineno">  201</span>&#160;  <span class="keyword">const</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Flags.html">Flags</a> flags;</div><div class="line"><a name="l00202"></a><span class="lineno">  202</span>&#160
 ;</div><div class="line"><a name="l00203"></a><span class="lineno">  203</span>&#160;  <span class="comment">// A map storing the path to CNI network configuration files keyed</span></div><div class="line"><a name="l00204"></a><span class="lineno">  204</span>&#160;  <span class="comment">// by the network name.</span></div><div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160;  <a class="code" href="classhashmap.html">hashmap&lt;std::string, std::string&gt;</a> networkConfigs;</div><div class="line"><a name="l00206"></a><span class="lineno">  206</span>&#160;</div><div class="line"><a name="l00207"></a><span class="lineno">  207</span>&#160;  <span class="comment">// DNS informations of CNI networks keyed by CNI network name.</span></div><div class="line"><a name="l00208"></a><span class="lineno">  208</span>&#160;  <a class="code" href="classhashmap.html">hashmap&lt;std::string, ContainerDNSInfo::MesosInfo&gt;</a> cniDNSMap;</div><div class="line"><a name="
 l00209"></a><span class="lineno">  209</span>&#160;</div><div class="line"><a name="l00210"></a><span class="lineno">  210</span>&#160;  <span class="comment">// Default DNS information for all CNI networks.</span></div><div class="line"><a name="l00211"></a><span class="lineno">  211</span>&#160;  <span class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;ContainerDNSInfo::MesosInfo&gt;</a> defaultCniDNS;</div><div class="line"><a name="l00212"></a><span class="lineno">  212</span>&#160;</div><div class="line"><a name="l00213"></a><span class="lineno">  213</span>&#160;  <span class="comment">// CNI network information root directory.</span></div><div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160;  <span class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;std::string&gt;</a> rootDir;</div><div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160;</div><div class="line"><a name="l0021
 6"></a><span class="lineno">  216</span>&#160;  <span class="comment">// CNI plugins directory.</span></div><div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160;  <span class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;std::string&gt;</a> pluginDir;</div><div class="line"><a name="l00218"></a><span class="lineno">  218</span>&#160;</div><div class="line"><a name="l00219"></a><span class="lineno">  219</span>&#160;  <span class="comment">// Information of CNI networks that each container joins.</span></div><div class="line"><a name="l00220"></a><span class="lineno">  220</span>&#160;  <a class="code" href="classhashmap.html">hashmap&lt;ContainerID, process::Owned&lt;Info&gt;</a>&gt; infos;</div><div class="line"><a name="l00221"></a><span class="lineno">  221</span>&#160;};</div><div class="line"><a name="l00222"></a><span class="lineno">  222</span>&#160;</div><div class="line"><a name="l00223"></a><span class="lineno">  223</spa
 n>&#160;</div><div class="line"><a name="l00224"></a><span class="lineno">  224</span>&#160;<span class="comment">// A subcommand to setup container hostname and mount the hosts,</span></div><div class="line"><a name="l00225"></a><span class="lineno">  225</span>&#160;<span class="comment">// resolv.conf and hostname from the host file system into the</span></div><div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;<span class="comment">// container&#39;s file system.  The hostname needs to be setup in the</span></div><div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160;<span class="comment">// container&#39;s UTS namespace, and the files need to be bind mounted in</span></div><div class="line"><a name="l00228"></a><span class="lineno">  228</span>&#160;<span class="comment">// the container&#39;s mnt namespace.</span></div><div class="line"><a name="l00229"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1sla
 ve_1_1NetworkCniIsolatorSetup.html">  229</a></span>&#160;<span class="keyword">class </span><a class="code" href="classmesos_1_1internal_1_1slave_1_1NetworkCniIsolatorSetup.html">NetworkCniIsolatorSetup</a> : <span class="keyword">public</span> <a class="code" href="classSubcommand.html">Subcommand</a></div><div class="line"><a name="l00230"></a><span class="lineno">  230</span>&#160;{</div><div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00232"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1slave_1_1NetworkCniIsolatorSetup.html#a08701ae426a20e5f13f4a4996c146bb3">  232</a></span>&#160;  <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classmesos_1_1internal_1_1slave_1_1NetworkCniIsolatorSetup.html#a08701ae426a20e5f13f4a4996c146bb3">NAME</a>;</div><div class="line"><a name="l002
 33"></a><span class="lineno">  233</span>&#160;</div><div class="line"><a name="l00234"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1slave_1_1NetworkCniIsolatorSetup_1_1Flags.html">  234</a></span>&#160;  <span class="keyword">struct </span><a class="code" href="structmesos_1_1internal_1_1slave_1_1NetworkCniIsolatorSetup_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="l00235"></a><span class="lineno">  235</span>&#160;  {</div><div class="line"><a name="l00236"></a><span class="lineno">  236</span>&#160;    <a class="code" href="structmesos_1_1internal_1_1slave_1_1NetworkCniIsolatorSetup_1_1Flags.html">Flags</a>();</div><div class="line"><a name="l00237"></a><span class="lineno">  237</span>&#160;</div><div class="line"><a name="l00238"></a><span class="lineno"><a class="line" href="structmesos_1_1in
 ternal_1_1slave_1_1NetworkCniIsolatorSetup_1_1Flags.html#af126df40a2701d5f9af197b739707faf">  238</a></span>&#160;    <a class="code" href="classOption.html">Option&lt;pid_t&gt;</a> <a class="code" href="structmesos_1_1internal_1_1slave_1_1NetworkCniIsolatorSetup_1_1Flags.html#af126df40a2701d5f9af197b739707faf">pid</a>;</div><div class="line"><a name="l00239"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1slave_1_1NetworkCniIsolatorSetup_1_1Flags.html#a064b784c19753d64ba05cc9e237bbe95">  239</a></span>&#160;    <a class="code" href="classOption.html">Option&lt;std::string&gt;</a> <a class="code" href="structmesos_1_1internal_1_1slave_1_1NetworkCniIsolatorSetup_1_1Flags.html#a064b784c19753d64ba05cc9e237bbe95">hostname</a>;</div><div class="line"><a name="l00240"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1slave_1_1NetworkCniIsolatorSetup_1_1Flags.html#a792e873bae0fe54efee978120acb69fa">  240</a></span>&#160;    <a class="code" 
 href="classOption.html">Option&lt;std::string&gt;</a> <a class="code" href="structmesos_1_1internal_1_1slave_1_1NetworkCniIsolatorSetup_1_1Flags.html#a792e873bae0fe54efee978120acb69fa">rootfs</a>;</div><div class="line"><a name="l00241"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1slave_1_1NetworkCniIsolatorSetup_1_1Flags.html#a5b39398b8277620eadce2c6799585c5c">  241</a></span>&#160;    <a class="code" href="classOption.html">Option&lt;std::string&gt;</a> <a class="code" href="structmesos_1_1internal_1_1slave_1_1NetworkCniIsolatorSetup_1_1Flags.html#a5b39398b8277620eadce2c6799585c5c">etc_hosts_path</a>;</div><div class="line"><a name="l00242"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1slave_1_1NetworkCniIsolatorSetup_1_1Flags.html#ad4fb436bb59e678ca7121740608cd478">  242</a></span>&#160;    <a class="code" href="classOption.html">Option&lt;std::string&gt;</a> <a class="code" href="structmesos_1_1internal_1_1slave_1_1Network
 CniIsolatorSetup_1_1Flags.html#ad4fb436bb59e678ca7121740608cd478">etc_hostname_path</a>;</div><div class="line"><a name="l00243"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1slave_1_1NetworkCniIsolatorSetup_1_1Flags.html#a4f8462d186e873b26b40c767f15cf6a5">  243</a></span>&#160;    <a class="code" href="classOption.html">Option&lt;std::string&gt;</a> <a class="code" href="structmesos_1_1internal_1_1slave_1_1NetworkCniIsolatorSetup_1_1Flags.html#a4f8462d186e873b26b40c767f15cf6a5">etc_resolv_conf</a>;</div><div class="line"><a name="l00244"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1slave_1_1NetworkCniIsolatorSetup_1_1Flags.html#ad773b1f2abf19b8e241c8e5ee6ed4df3">  244</a></span>&#160;    <span class="keywordtype">bool</span> <a class="code" href="structmesos_1_1internal_1_1slave_1_1NetworkCniIsolatorSetup_1_1Flags.html#ad773b1f2abf19b8e241c8e5ee6ed4df3">bind_host_files</a>;</div><div class="line"><a name="l00245"></a><span cl
 ass="lineno"><a class="line" href="structmesos_1_1internal_1_1slave_1_1NetworkCniIsolatorSetup_1_1Flags.html#aa8e1aa95039b355c2f6dff0efd45e959">  245</a></span>&#160;    <span class="keywordtype">bool</span> <a class="code" href="structmesos_1_1internal_1_1slave_1_1NetworkCniIsolatorSetup_1_1Flags.html#aa8e1aa95039b355c2f6dff0efd45e959">bind_readonly</a>;</div><div class="line"><a name="l00246"></a><span class="lineno">  246</span>&#160;  };</div><div class="line"><a name="l00247"></a><span class="lineno">  247</span>&#160;</div><div class="line"><a name="l00248"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1slave_1_1NetworkCniIsolatorSetup.html#a97b960ca59cacb4f3ad6f43e6fd8bc38">  248</a></span>&#160;  <a class="code" href="classmesos_1_1internal_1_1slave_1_1NetworkCniIsolatorSetup.html#a97b960ca59cacb4f3ad6f43e6fd8bc38">NetworkCniIsolatorSetup</a>() : <a class="code" href="classSubcommand.html">Subcommand</a>(NAME) {}</div><div class="line"><a name="l002
 49"></a><span class="lineno">  249</span>&#160;</div><div class="line"><a name="l00250"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1slave_1_1NetworkCniIsolatorSetup.html#abc7e1f0ba2294714bbec61bdfcd625b3">  250</a></span>&#160;  <a class="code" href="structmesos_1_1internal_1_1slave_1_1NetworkCniIsolatorSetup_1_1Flags.html">Flags</a> <a class="code" href="classmesos_1_1internal_1_1slave_1_1NetworkCniIsolatorSetup.html#abc7e1f0ba2294714bbec61bdfcd625b3">flags</a>;</div><div class="line"><a name="l00251"></a><span class="lineno">  251</span>&#160;</div><div class="line"><a name="l00252"></a><span class="lineno">  252</span>&#160;<span class="keyword">protected</span>:</div><div class="line"><a name="l00253"></a><span class="lineno">  253</span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="namespacemesos_1_1internal_1_1tests.html#a1526213546914662d7a58263f68d11bc">execute</a>();</div><div class="line
 "><a name="l00254"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1slave_1_1NetworkCniIsolatorSetup.html#ace4821b9d55c795a74e09b8d1dd07d6e">  254</a></span>&#160;  <span class="keyword">virtual</span> <a class="code" href="classflags_1_1FlagsBase.html">flags::FlagsBase</a>* <a class="code" href="classmesos_1_1internal_1_1slave_1_1NetworkCniIsolatorSetup.html#ace4821b9d55c795a74e09b8d1dd07d6e">getFlags</a>() { <span class="keywordflow">return</span> &amp;flags; }</div><div class="line"><a name="l00255"></a><span class="lineno">  255</span>&#160;};</div><div class="line"><a name="l00256"></a><span class="lineno">  256</span>&#160;</div><div class="line"><a name="l00257"></a><span class="lineno">  257</span>&#160;} <span class="comment">// namespace slave {</span></div><div class="line"><a name="l00258"></a><span class="lineno">  258</span>&#160;} <span class="comment">// namespace internal {</span></div><div class="line"><a name="l00259"></a><span class="linen
 o">  259</span>&#160;} <span class="comment">// namespace mesos {</span></div><div class="line"><a name="l00260"></a><span class="lineno">  260</span>&#160;</div><div class="line"><a name="l00261"></a><span class="lineno">  261</span>&#160;<span class="preprocessor">#endif // __NETWORK_CNI_ISOLATOR_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>
+<a href="cni_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>&#160;<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>&#160;<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>&#160;<span class="comment">// distributed with this work for additional information</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<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>&#160;<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>&#160;<span class="comment">// &quot;License&quot;); you may not use this file except in compliance</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<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>&#160;<span class="comment">// distributed u
 nder the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<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>&#160;<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>&#160;<span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;</div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="preprocessor">#ifndef __NETWORK_CNI_ISOLATOR_HPP__</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="preprocessor">#define __NETWORK_CNI_ISOLATOR_HPP__</span></div><div class="l
 ine"><a name="l00019"></a><span class="lineno">   19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="id_8hpp.html">process/id.hpp</a>&gt;</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="include_2process_2subprocess_8hpp.html">process/subprocess.hpp</a>&gt;</span></div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="subcommand_8hpp.html">stout/subcommand.hpp</a>&gt;</span></div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;</div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="s
 rc_2slave_2flags_8hpp.html">slave/flags.hpp</a>&quot;</span></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>&#160;<span class="preprocessor">#include &quot;<a class="code" href="src_2slave_2containerizer_2mesos_2isolator_8hpp.html">slave/containerizer/mesos/isolator.hpp</a>&quot;</span></div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;</div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="src_2slave_2containerizer_2mesos_2isolators_2network_2cni_2spec_8hpp.html">slave/containerizer/mesos/isolators/network/cni/spec.hpp</a>&quot;</span></div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="slave_2containerizer_2mesos_2isolators_2network_2cni_2paths_8hpp.htm
 l">slave/containerizer/mesos/isolators/network/cni/paths.hpp</a>&quot;</span></div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;</div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;<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>&#160;<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>&#160;<span class="keyword">namespace </span>slave {</div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;</div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;<span class="comment">// Forward declarations.</span></div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;<span class="keyword">class </span>Networ
 kCniIsolatorSetup;</div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;</div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;<span class="comment">// This isolator implements support for Container Network Interface (CNI)</span></div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;<span class="comment">// specification &lt;https://github.com/appc/cni/blob/master/SPEC.md&gt; . It</span></div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;<span class="comment">// provides network isolation to containers by creating a network namespace</span></div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;<span class="comment">// for each container, and then adding the container to the CNI network</span></div><div class="line"><a name="l00044"></a><span class="linen
 o">   44</span>&#160;<span class="comment">// specified in the NetworkInfo for the container. It adds the container to</span></div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;<span class="comment">// a CNI network by using CNI plugins specified by the operator for the</span></div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;<span class="comment">// corresponding CNI network.</span></div><div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1slave_1_1NetworkCniIsolatorProcess.html">   47</a></span>&#160;<span class="keyword">class </span><a class="code" href="classmesos_1_1internal_1_1slave_1_1NetworkCniIsolatorProcess.html">NetworkCniIsolatorProcess</a> : <span class="keyword">public</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1MesosIsolatorProcess.html">MesosIsolatorProcess</a></div><div class="line"><a name="l00048"></a><span class="lineno">   
 48</span>&#160;{</div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;  <span class="keyword">static</span> <a class="code" href="classTry.html">Try&lt;mesos::slave::Isolator*&gt;</a> <a class="code" href="classmesos_1_1internal_1_1slave_1_1NetworkCniIsolatorProcess.html#a12a31bdd9d873ebe68c492c1eea562de">create</a>(<span class="keyword">const</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Flags.html">Flags</a>&amp; <a class="code" href="namespaceflags.html">flags</a>);</div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;</div><div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1slave_1_1NetworkCniIsolatorProcess.html#a5cb876e852d66514a64562bf46cc92c4">   52</a></span>&#160;  <span class="keyword">virtual</span> <a class="code" href="
 classmesos_1_1internal_1_1slave_1_1NetworkCniIsolatorProcess.html#a5cb876e852d66514a64562bf46cc92c4">~NetworkCniIsolatorProcess</a>() {}</div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;</div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1NetworkCniIsolatorProcess.html#ae38922e85a5082b87910c53ed3614e09">supportsNesting</a>();</div><div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;</div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;  <span class="keyword">virtual</span> <a class="code" href="classprocess_1_1Future.html">process::Future&lt;Nothing&gt;</a> <a class="code" href="classmesos_1_1internal_1_1slave_1_1NetworkCniIsolatorProcess.html#af94c99e1b44722fd577aa9be6e97eb8e">recover</a>(</div><div class="line"><a name="l00057"></
 a><span class="lineno">   57</span>&#160;      <span class="keyword">const</span> std::vector&lt;mesos::slave::ContainerState&gt;&amp; states,</div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;      <span class="keyword">const</span> <a class="code" href="classhashset.html">hashset&lt;ContainerID&gt;</a>&amp; orphans);</div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;</div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;  <span class="keyword">virtual</span> <a class="code" href="classprocess_1_1Future.html">process::Future&lt;Option&lt;mesos::slave::ContainerLaunchInfo&gt;</a>&gt; <a class="code" href="classmesos_1_1internal_1_1slave_1_1NetworkCniIsolatorProcess.html#a5c646c0b22fc11d8abf3feddab473ee0">prepare</a>(</div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;      <span class="keyword">const</span> ContainerID&amp; containerId,</div><div class="line
 "><a name="l00062"></a><span class="lineno">   62</span>&#160;      <span class="keyword">const</span> mesos::slave::ContainerConfig&amp; containerConfig);</div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;</div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;  <span class="keyword">virtual</span> <a class="code" href="classprocess_1_1Future.html">process::Future&lt;Nothing&gt;</a> <a class="code" href="classmesos_1_1internal_1_1slave_1_1NetworkCniIsolatorProcess.html#a4d2771d57033cea741ec6dd2bc6f738d">isolate</a>(</div><div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;      <span class="keyword">const</span> ContainerID&amp; containerId,</div><div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;      <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a> pid);</div><div class="line"><a name="l00067"></a><s
 pan class="lineno">   67</span>&#160;</div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;  <span class="keyword">virtual</span> <a class="code" href="classprocess_1_1Future.html">process::Future&lt;ContainerStatus&gt;</a> <a class="code" href="classmesos_1_1internal_1_1slave_1_1NetworkCniIsolatorProcess.html#aac3a4e9bacac1572ee598bf6d3a75ce4">status</a>(</div><div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;      <span class="keyword">const</span> ContainerID&amp; containerId);</div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;</div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;  <span class="keyword">virtual</span> <a class="code" href="classprocess_1_1Future.html">process::Future&lt;Nothing&gt;</a> <a class="code" href="classmesos_1_1internal_1_1slave_1_1NetworkCniIsolatorProcess.html#a54854512f8a210b41c3645409f170a2e">cleanup</a>(</div><div class="line"><a
  name="l00072"></a><span class="lineno">   72</span>&#160;      <span class="keyword">const</span> ContainerID&amp; containerId);</div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;</div><div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;  <span class="keyword">struct </span>ContainerNetwork</div><div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;  {</div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;    <span class="comment">// CNI network name.</span></div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;    std::string networkName;</div><div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;</div><div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;    <span class="comm
 ent">// Interface name.</span></div><div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;    std::string ifName;</div><div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;</div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;    <span class="comment">// NetworkInfo copied from the ExecutorInfo.containerInfo.network_infos</span></div><div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;    <span class="comment">// in &#39;prepare()&#39; and &#39;_recover()&#39;.</span></div><div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;    <a class="code" href="classOption.html">Option&lt;mesos::NetworkInfo&gt;</a> networkInfo;</div><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;</div><div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;    <span class="comment">// Protobuf of CNI network information returned b
 y CNI plugin.</span></div><div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;    <a class="code" href="classOption.html">Option&lt;cni::spec::NetworkInfo&gt;</a> cniNetworkInfo;</div><div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;  };</div><div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;</div><div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;  <span class="keyword">struct </span>Info</div><div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;  {</div><div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;    Info (<span class="keyword">const</span> <a class="code" href="classhashmap.html">hashmap&lt;std::string, ContainerNetwork&gt;</a>&amp; _containerNetworks,</div><div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;          <span class="keyword">const</span> <a class="code" href="classOption.ht
 ml">Option&lt;std::string&gt;</a>&amp; _rootfs = <a class="code" href="structNone.html">None</a>(),</div><div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;          <span class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;std::string&gt;</a>&amp; _hostname = <a class="code" href="structNone.html">None</a>(),</div><div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;          <span class="keywordtype">bool</span> _joinsParentsNetwork = <span class="keyword">false</span>)</div><div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;      : containerNetworks (_containerNetworks),</div><div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;        rootfs(_rootfs),</div><div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;        <a class="code" href="namespacenet.html#a28018530986e91a179ea6239fdf0a447">hostname</a>(_hostname),</div><div c
 lass="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;        joinsParentsNetwork(_joinsParentsNetwork) {}</div><div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;</div><div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;    <span class="comment">// CNI network information keyed by network name.</span></div><div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;    <span class="comment">//</span></div><div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;    <span class="comment">// NOTE: For nested containers, since the container shares the</span></div><div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;    <span class="comment">// network namespace with the root container of its hierarchy,</span></div><div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;    <span class="comment">// this should simply be a copy of t
 he `containerNetworks` of its</span></div><div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;    <span class="comment">// root container.</span></div><div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;    <a class="code" href="classhashmap.html">hashmap&lt;std::string, ContainerNetwork&gt;</a> containerNetworks;</div><div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;</div><div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;    <span class="comment">// Rootfs of the container file system. In case the container uses</span></div><div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;    <span class="comment">// the host file system, this will be `None`.</span></div><div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;    <span class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;std::string&gt;</a> rootfs;<
 /div><div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;</div><div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;    <span class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;std::string&gt;</a> <a class="code" href="namespacenet.html#a28018530986e91a179ea6239fdf0a447">hostname</a>;</div><div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;    <span class="keyword">const</span> <span class="keywordtype">bool</span> joinsParentsNetwork;</div><div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;  };</div><div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;</div><div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;  <span class="comment">// Reads each CNI config present in `configDir`, validates if the</span></div><div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;  <span class="c
 omment">// `plugin` is present in the search path associated with</span></div><div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;  <span class="comment">// `pluginDir` and adds the CNI network config to `networkConfigs`</span></div><div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;  <span class="comment">// if the validation passes. If there is an error while reading the</span></div><div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;  <span class="comment">// CNI config, or if the plugin is not found, we log an error and the</span></div><div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;  <span class="comment">// CNI network config is not added to `networkConfigs`.</span></div><div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;  <span class="keyword">static</span> <a class="code" href="classTry.html">Try&lt;hashmap&lt;std::string, std::string&gt;</a
 >&gt; loadNetworkConfigs(</div><div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;      <span class="keyword">const</span> std::string&amp; configDir,</div><div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;      <span class="keyword">const</span> std::string&amp; pluginDir);</div><div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;</div><div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;  <a class="code" href="classmesos_1_1internal_1_1slave_1_1NetworkCniIsolatorProcess.html">NetworkCniIsolatorProcess</a>(</div><div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;      <span class="keyword">const</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Flags.html">Flags</a>&amp; _flags,</div><div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;      <span class="keyword">const</span> <a class="code" href="classhashmap.ht
 ml">hashmap&lt;std::string, std::string&gt;</a>&amp; _networkConfigs,</div><div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;      <span class="keyword">const</span> <a class="code" href="classhashmap.html">hashmap&lt;std::string, ContainerDNSInfo::MesosInfo&gt;</a>&amp; _cniDNSMap,</div><div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;      <span class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;ContainerDNSInfo::MesosInfo&gt;</a>&amp; _defaultCniDNS = <a class="code" href="structNone.html">None</a>(),</div><div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;      <span class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;std::string&gt;</a>&amp; _rootDir = <a class="code" href="structNone.html">None</a>(),</div><div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;      <span class="keyword">const</span> <a class="code" h
 ref="classOption.html">Option&lt;std::string&gt;</a>&amp; _pluginDir = <a class="code" href="structNone.html">None</a>())</div><div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;    : <a class="code" href="classprocess_1_1ProcessBase.html#a318038bacd95e4260864533f7cfe12fd">ProcessBase</a>(<a class="code" href="namespaceprocess_1_1ID.html#aeb11a48c9def1da169d8455a30d0ee39">process::ID::generate</a>(<span class="stringliteral">&quot;mesos-network-cni-isolator&quot;</span>)),</div><div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;      flags(_flags),</div><div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;      networkConfigs(_networkConfigs),</div><div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;      cniDNSMap(_cniDNSMap),</div><div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;      defaultCniDNS(_defaultCniDNS),</div><div class="line"><a name="l0
 0140"></a><span class="lineno">  140</span>&#160;      rootDir(_rootDir),</div><div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;      pluginDir(_pluginDir) {}</div><div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;</div><div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;  <a class="code" href="classprocess_1_1Future.html">process::Future&lt;Nothing&gt;</a> _isolate(</div><div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;      <span class="keyword">const</span> ContainerID&amp; containerId,</div><div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;      <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a> pid,</div><div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;      <span class="keyword">const</span> std::vector&lt;<a class="code" href="classprocess_1_1F
 uture.html">process::Future&lt;Nothing&gt;</a>&gt;&amp; attaches);</div><div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;</div><div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;  <a class="code" href="classprocess_1_1Future.html">process::Future&lt;Nothing&gt;</a> __isolate(</div><div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;      <span class="keyword">const</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1NetworkCniIsolatorSetup.html">NetworkCniIsolatorSetup</a>&amp; setup);</div><div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;</div><div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;  <a class="code" href="classTry.html">Try&lt;Nothing&gt;</a> _recover(</div><div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;      <span class="keyword">const</span> ContainerID&amp; containerId,</div><div class="li
 ne"><a name="l00153"></a><span class="lineno">  153</span>&#160;      <span class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;mesos::slave::ContainerState&gt;</a>&amp; state = <a class="code" href="structNone.html">None</a>());</div><div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;</div><div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;  <a class="code" href="classprocess_1_1Future.html">process::Future&lt;Nothing&gt;</a> attach(</div><div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;      <span class="keyword">const</span> ContainerID&amp; containerId,</div><div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;      <span class="keyword">const</span> std::string&amp; networkName,</div><div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;      <span class="keyword">const</span> std::string&amp; netNsHandle);</div><div clas
 s="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;</div><div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;  <a class="code" href="classprocess_1_1Future.html">process::Future&lt;Nothing&gt;</a> _attach(</div><div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;      <span class="keyword">const</span> ContainerID&amp; containerId,</div><div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;      <span class="keyword">const</span> std::string&amp; networkName,</div><div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;      <span class="keyword">const</span> std::string&amp; plugin,</div><div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;      <span class="keyword">const</span> std::tuple&lt;</div><div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;          <a class="code" href="classprocess_1_1Future.html">process
 ::Future</a>&lt;<a class="code" href="classOption.html">Option&lt;int&gt;</a>&gt;,</div><div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;          <a class="code" href="classprocess_1_1Future.html">process::Future&lt;std::string&gt;</a>,</div><div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;          <a class="code" href="classprocess_1_1Future.html">process::Future&lt;std::string&gt;</a>&gt;&amp; t);</div><div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;</div><div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;  <a class="code" href="classprocess_1_1Future.html">process::Future&lt;Nothing&gt;</a> detach(</div><div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;      <span class="keyword">const</span> ContainerID&amp; containerId,</div><div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;      <span class="keyword">const<
 /span> std::string&amp; networkName);</div><div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;</div><div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;  <a class="code" href="classprocess_1_1Future.html">process::Future&lt;Nothing&gt;</a> _detach(</div><div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;      <span class="keyword">const</span> ContainerID&amp; containerId,</div><div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;      <span class="keyword">const</span> std::string&amp; networkName,</div><div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;      <span class="keyword">const</span> std::string&amp; plugin,</div><div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;      <span class="keyword">const</span> std::tuple&lt;</div><div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;          <a cla
 ss="code" href="classprocess_1_1Future.html">process::Future</a>&lt;<a class="code" href="classOption.html">Option&lt;int&gt;</a>&gt;,</div><div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;          <a class="code" href="classprocess_1_1Future.html">process::Future&lt;std::string&gt;</a>,</div><div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;          <a class="code" href="classprocess_1_1Future.html">process::Future&lt;std::string&gt;</a>&gt;&amp; t);</div><div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;</div><div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160;  <a class="code" href="classprocess_1_1Future.html">process::Future&lt;Nothing&gt;</a> _cleanup(</div><div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;      <span class="keyword">const</span> ContainerID&amp; containerId,</div><div class="line"><a name="l00184"></a><span class="lineno
 ">  184</span>&#160;      <span class="keyword">const</span> std::vector&lt;<a class="code" href="classprocess_1_1Future.html">process::Future&lt;Nothing&gt;</a>&gt;&amp; detaches);</div><div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;</div><div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;  <span class="comment">// Searches the `networkConfigs` hashmap for a CNI network. If the</span></div><div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;  <span class="comment">// hashmap doesn&#39;t contain the network, will try to load all the CNI</span></div><div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;  <span class="comment">// configs from `flags.network_cni_config_dir`, and will then</span></div><div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160;  <span class="comment">// perform another search of the `networkConfigs` hashmap to see if</span></div>
 <div class="line"><a name="l00190"></a><span class="lineno">  190</span>&#160;  <span class="comment">// the missing network was present on disk.</span></div><div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160;  <a class="code" href="classTry.html">Try&lt;JSON::Object&gt;</a> getNetworkConfigJSON(<span class="keyword">const</span> std::string&amp; network);</div><div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;</div><div class="line"><a name="l00193"></a><span class="lineno">  193</span>&#160;  <span class="comment">// Given a network name and the path for the CNI network</span></div><div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#160;  <span class="comment">// configuration file, reads the file, parses the JSON and</span></div><div class="line"><a name="l00195"></a><span class="lineno">  195</span>&#160;  <span class="comment">// validates the name of the network to which this configuration</span></div
 ><div class="line"><a name="l00196"></a><span class="lineno">  196</span>&#160;  <span class="comment">// file belongs.</span></div><div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;  <a class="code" href="classTry.html">Try&lt;JSON::Object&gt;</a> getNetworkConfigJSON(</div><div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160;      <span class="keyword">const</span> std::string&amp; network,</div><div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160;      <span class="keyword">const</span> std::string&amp; <a class="code" href="namespacepath.html">path</a>);</div><div class="line"><a name="l00200"></a><span class="lineno">  200</span>&#160;</div><div class="line"><a name="l00201"></a><span class="lineno">  201</span>&#160;  <span class="keyword">const</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Flags.html">Flags</a> flags;</div><div class="line"><a name="l00202"></a><span class="lineno"
 >  202</span>&#160;</div><div class="line"><a name="l00203"></a><span class="lineno">  203</span>&#160;  <span class="comment">// A map storing the path to CNI network configuration files keyed</span></div><div class="line"><a name="l00204"></a><span class="lineno">  204</span>&#160;  <span class="comment">// by the network name.</span></div><div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160;  <a class="code" href="classhashmap.html">hashmap&lt;std::string, std::string&gt;</a> networkConfigs;</div><div class="line"><a name="l00206"></a><span class="lineno">  206</span>&#160;</div><div class="line"><a name="l00207"></a><span class="lineno">  207</span>&#160;  <span class="comment">// DNS informations of CNI networks keyed by CNI network name.</span></div><div class="line"><a name="l00208"></a><span class="lineno">  208</span>&#160;  <a class="code" href="classhashmap.html">hashmap&lt;std::string, ContainerDNSInfo::MesosInfo&gt;</a> cniDNSMap;</div><div clas
 s="line"><a name="l00209"></a><span class="lineno">  209</span>&#160;</div><div class="line"><a name="l00210"></a><span class="lineno">  210</span>&#160;  <span class="comment">// Default DNS information for all CNI networks.</span></div><div class="line"><a name="l00211"></a><span class="lineno">  211</span>&#160;  <span class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;ContainerDNSInfo::MesosInfo&gt;</a> defaultCniDNS;</div><div class="line"><a name="l00212"></a><span class="lineno">  212</span>&#160;</div><div class="line"><a name="l00213"></a><span class="lineno">  213</span>&#160;  <span class="comment">// CNI network information root directory.</span></div><div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160;  <span class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;std::string&gt;</a> rootDir;</div><div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160;</div><div class="li
 ne"><a name="l00216"></a><span class="lineno">  216</span>&#160;  <span class="comment">// CNI plugins directory.</span></div><div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160;  <span class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;std::string&gt;</a> pluginDir;</div><div class="line"><a name="l00218"></a><span class="lineno">  218</span>&#160;</div><div class="line"><a name="l00219"></a><span class="lineno">  219</span>&#160;  <span class="comment">// Information of CNI networks that each container joins.</span></div><div class="line"><a name="l00220"></a><span class="lineno">  220</span>&#160;  <a class="code" href="classhashmap.html">hashmap&lt;ContainerID, process::Owned&lt;Info&gt;</a>&gt; infos;</div><div class="line"><a name="l00221"></a><span class="lineno">  221</span>&#160;};</div><div class="line"><a name="l00222"></a><span class="lineno">  222</span>&#160;</div><div class="line"><a name="l00223"></a><span class="
 lineno">  223</span>&#160;</div><div class="line"><a name="l00224"></a><span class="lineno">  224</span>&#160;<span class="comment">// A subcommand to setup container hostname and mount the hosts,</span></div><div class="line"><a name="l00225"></a><span class="lineno">  225</span>&#160;<span class="comment">// resolv.conf and hostname from the host file system into the</span></div><div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;<span class="comment">// container&#39;s file system.  The hostname needs to be setup in the</span></div><div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160;<span class="comment">// container&#39;s UTS namespace, and the files need to be bind mounted in</span></div><div class="line"><a name="l00228"></a><span class="lineno">  228</span>&#160;<span class="comment">// the container&#39;s mnt namespace.</span></div><div class="line"><a name="l00229"></a><span class="lineno"><a class="line" href="classmesos_
 1_1internal_1_1slave_1_1NetworkCniIsolatorSetup.html">  229</a></span>&#160;<span class="keyword">class </span><a class="code" href="classmesos_1_1internal_1_1slave_1_1NetworkCniIsolatorSetup.html">NetworkCniIsolatorSetup</a> : <span class="keyword">public</span> <a class="code" href="classSubcommand.html">Subcommand</a></div><div class="line"><a name="l00230"></a><span class="lineno">  230</span>&#160;{</div><div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00232"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1slave_1_1NetworkCniIsolatorSetup.html#a08701ae426a20e5f13f4a4996c146bb3">  232</a></span>&#160;  <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classmesos_1_1internal_1_1slave_1_1NetworkCniIsolatorSetup.html#a08701ae426a20e5f13f4a4996c146bb3">NAME</a>;</div><div class="l
 ine"><a name="l00233"></a><span class="lineno">  233</span>&#160;</div><div class="line"><a name="l00234"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1slave_1_1NetworkCniIsolatorSetup_1_1Flags.html">  234</a></span>&#160;  <span class="keyword">struct </span><a class="code" href="structmesos_1_1internal_1_1slave_1_1NetworkCniIsolatorSetup_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="l00235"></a><span class="lineno">  235</span>&#160;  {</div><div class="line"><a name="l00236"></a><span class="lineno">  236</span>&#160;    <a class="code" href="structmesos_1_1internal_1_1slave_1_1NetworkCniIsolatorSetup_1_1Flags.html">Flags</a>();</div><div class="line"><a name="l00237"></a><span class="lineno">  237</span>&#160;</div><div class="line"><a name="l00238"></a><span class="lineno"><a class="line" href=
 "structmesos_1_1internal_1_1slave_1_1NetworkCniIsolatorSetup_1_1Flags.html#af126df40a2701d5f9af197b739707faf">  238</a></span>&#160;    <a class="code" href="classOption.html">Option&lt;pid_t&gt;</a> <a class="code" href="structmesos_1_1internal_1_1slave_1_1NetworkCniIsolatorSetup_1_1Flags.html#af126df40a2701d5f9af197b739707faf">pid</a>;</div><div class="line"><a name="l00239"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1slave_1_1NetworkCniIsolatorSetup_1_1Flags.html#a064b784c19753d64ba05cc9e237bbe95">  239</a></span>&#160;    <a class="code" href="classOption.html">Option&lt;std::string&gt;</a> <a class="code" href="structmesos_1_1internal_1_1slave_1_1NetworkCniIsolatorSetup_1_1Flags.html#a064b784c19753d64ba05cc9e237bbe95">hostname</a>;</div><div class="line"><a name="l00240"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1slave_1_1NetworkCniIsolatorSetup_1_1Flags.html#a792e873bae0fe54efee978120acb69fa">  240</a></span>&#160;  
   <a class="code" href="classOption.html">Option&lt;std::string&gt;</a> <a class="code" href="structmesos_1_1internal_1_1slave_1_1NetworkCniIsolatorSetup_1_1Flags.html#a792e873bae0fe54efee978120acb69fa">rootfs</a>;</div><div class="line"><a name="l00241"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1slave_1_1NetworkCniIsolatorSetup_1_1Flags.html#a5b39398b8277620eadce2c6799585c5c">  241</a></span>&#160;    <a class="code" href="classOption.html">Option&lt;std::string&gt;</a> <a class="code" href="structmesos_1_1internal_1_1slave_1_1NetworkCniIsolatorSetup_1_1Flags.html#a5b39398b8277620eadce2c6799585c5c">etc_hosts_path</a>;</div><div class="line"><a name="l00242"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1slave_1_1NetworkCniIsolatorSetup_1_1Flags.html#ad4fb436bb59e678ca7121740608cd478">  242</a></span>&#160;    <a class="code" href="classOption.html">Option&lt;std::string&gt;</a> <a class="code" href="structmesos_1_1internal_1
 _1slave_1_1NetworkCniIsolatorSetup_1_1Flags.html#ad4fb436bb59e678ca7121740608cd478">etc_hostname_path</a>;</div><div class="line"><a name="l00243"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1slave_1_1NetworkCniIsolatorSetup_1_1Flags.html#a4f8462d186e873b26b40c767f15cf6a5">  243</a></span>&#160;    <a class="code" href="classOption.html">Option&lt;std::string&gt;</a> <a class="code" href="structmesos_1_1internal_1_1slave_1_1NetworkCniIsolatorSetup_1_1Flags.html#a4f8462d186e873b26b40c767f15cf6a5">etc_resolv_conf</a>;</div><div class="line"><a name="l00244"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1slave_1_1NetworkCniIsolatorSetup_1_1Flags.html#ad773b1f2abf19b8e241c8e5ee6ed4df3">  

<TRUNCATED>

[27/50] mesos-site git commit: Updated the website built from mesos SHA: 7c9c72d.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/libprocess_2include_2process_2process_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/libprocess_2include_2process_2process_8hpp_source.html b/content/api/latest/c++/libprocess_2include_2process_2process_8hpp_source.html
index 26d2207..831b30f 100644
--- a/content/api/latest/c++/libprocess_2include_2process_2process_8hpp_source.html
+++ b/content/api/latest/c++/libprocess_2include_2process_2process_8hpp_source.html
@@ -52,7 +52,7 @@
 <div class="title">process.hpp</div>  </div>
 </div><!--header-->
 <div class="contents">
-<a href="libprocess_2include_2process_2process_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>&#160;<span class="comment">// Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<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>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<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>&#1
 60;<span class="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<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>&#160;<span class="comment">// distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<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>&#160;<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>&#160;<span class="comment">// limitations under the License</span></div><div class="line"><a name="l00012"></a><span class="lineno">   12</
 span>&#160;</div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="preprocessor">#ifndef __PROCESS_PROCESS_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="preprocessor">#define __PROCESS_PROCESS_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;</div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="preprocessor">#include &lt;stdint.h&gt;</span></div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="preprocessor">#include &lt;memory&gt;</span></div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;<span class="preprocessor">#include &lt;map&gt;</span></div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="p
 reprocessor">#include &lt;queue&gt;</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="preprocessor">#include &lt;vector&gt;</span></div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="address_8hpp.html">process/address.hpp</a>&gt;</span></div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="3rdparty_2libprocess_2include_2process_2authenticator_8hpp.html">process/authenticator.hpp</a>&gt;</span></div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="clock_8hpp.html">process/clock.hpp</a>&gt;</span></div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<
 span class="preprocessor">#include &lt;<a class="code" href="event_8hpp.html">process/event.hpp</a>&gt;</span></div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="3rdparty_2libprocess_2include_2process_2filter_8hpp.html">process/filter.hpp</a>&gt;</span></div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="firewall_8hpp.html">process/firewall.hpp</a>&gt;</span></div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="3rdparty_2libprocess_2include_2process_2http_8hpp.html">process/http.hpp</a>&gt;</span></div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="3rdparty_2libprocess_2include_2process_2message_8hpp.html">process/mes
 sage.hpp</a>&gt;</span></div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="mime_8hpp.html">process/mime.hpp</a>&gt;</span></div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="owned_8hpp.html">process/owned.hpp</a>&gt;</span></div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="3rdparty_2libprocess_2include_2process_2pid_8hpp.html">process/pid.hpp</a>&gt;</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>&#160;<span class="preprocessor">#include &lt;<a class="code" href="duration_8hpp.html">stout/duration.hpp</a>&gt;</span></div><div class="line"><a name="l00036"></a><span class="lineno">   36<
 /span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="hashmap_8hpp.html">stout/hashmap.hpp</a>&gt;</span></div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="lambda_8hpp.html">stout/lambda.hpp</a>&gt;</span></div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="option_8hpp.html">stout/option.hpp</a>&gt;</span></div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="synchronized_8hpp.html">stout/synchronized.hpp</a>&gt;</span></div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;</div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceprocess.html">process</a> {</div><div
  class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;</div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;<span class="comment">// Forward declaration.</span></div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;<span class="keyword">class </span>EventQueue;</div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;<span class="keyword">class </span>Gate;</div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;<span class="keyword">class </span>Logging;</div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;<span class="keyword">class </span>Sequence;</div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;</div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;<span class="keyword">namespace </span>firewall {</div><div class="line"><a name="l00050"></a><span class="lin
 eno">   50</span>&#160;</div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespaceprocess_1_1firewall.html#a99a70c4d8e775bb1692693ec278d0877">install</a>(std::vector&lt;Owned&lt;FirewallRule&gt;&gt;&amp;&amp; rules);</div><div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;</div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;} <span class="comment">// namespace firewall {</span></div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;</div><div class="line"><a name="l00072"></a><span class="lineno"><a class="line" href="classprocess_1_1ProcessBase.html">   72</a></span>&#160;<span class="keyword">class </span><a class="code" href="classprocess_1_1ProcessBase.html">ProcessBase</a> : <span class="keyword">public</span> <a class="code" href="structprocess_1_1EventConsumer.html">EventConsumer</a></div><div class
 ="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;{</div><div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;  <span class="keyword">explicit</span> <a class="code" href="classprocess_1_1ProcessBase.html">ProcessBase</a>(<span class="keyword">const</span> std::string&amp; <span class="keywordtype">id</span> = <span class="stringliteral">&quot;&quot;</span>);</div><div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;</div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;  <span class="keyword">virtual</span> ~<a class="code" href="classprocess_1_1ProcessBase.html">ProcessBase</a>();</div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;</div><div class="line"><a name="l00079"></a><span class="lineno"><a class="line" href="classprocess_1_1Pro
 cessBase.html#a7ff87364baa79991901b8d73dc5c5fca">   79</a></span>&#160;  <span class="keyword">const</span> <a class="code" href="structprocess_1_1UPID.html">UPID</a>&amp; <span class="keyword">self</span>() <span class="keyword">const</span> { <span class="keywordflow">return</span> pid; }</div><div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;</div><div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;<span class="keyword">protected</span>:</div><div class="line"><a name="l00085"></a><span class="lineno"><a class="line" href="classprocess_1_1ProcessBase.html#a2accda04cb99a8337c501958ff85ce01">   85</a></span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classprocess_1_1ProcessBase.html#a2accda04cb99a8337c501958ff85ce01">serve</a>(<a class="code" href="structprocess_1_1Event.html">Event</a>&amp;&amp; event)</div><div class="line"><a name="l00086"></a><span class="lineno"> 
   86</span>&#160;  {</div><div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;    std::move(event).consume(<span class="keyword">this</span>);</div><div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;  }</div><div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;</div><div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;  <span class="comment">// Callbacks used to consume (i.e., handle) a specific event.</span></div><div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;  <span class="keywordtype">void</span> consume(<a class="code" href="structprocess_1_1MessageEvent.html">MessageEvent</a>&amp;&amp; event) <span class="keyword">override</span>;</div><div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;  <span class="keywordtype">void</span> consume(<a class="code" href="structprocess_1_1DispatchEvent.html">DispatchEvent</a>&amp;&amp; e
 vent) <span class="keyword">override</span>;</div><div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;  <span class="keywordtype">void</span> consume(<a class="code" href="structprocess_1_1HttpEvent.html">HttpEvent</a>&amp;&amp; event) <span class="keyword">override</span>;</div><div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;  <span class="keywordtype">void</span> consume(<a class="code" href="structprocess_1_1ExitedEvent.html">ExitedEvent</a>&amp;&amp; event) <span class="keyword">override</span>;</div><div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;  <span class="keywordtype">void</span> consume(<a class="code" href="structprocess_1_1TerminateEvent.html">TerminateEvent</a>&amp;&amp; event) <span class="keyword">override</span>;</div><div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;</div><div class="line"><a name="l00100"></a><span class="lineno"><a class="line" href=
 "classprocess_1_1ProcessBase.html#a6baf49d6234eb638d068a98514e4ae3f">  100</a></span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classprocess_1_1ProcessBase.html#a6baf49d6234eb638d068a98514e4ae3f">initialize</a>() {}</div><div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;</div><div class="line"><a name="l00108"></a><span class="lineno"><a class="line" href="classprocess_1_1ProcessBase.html#a07ac3fd4eededbb6015c305e12411b98">  108</a></span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classprocess_1_1ProcessBase.html#a07ac3fd4eededbb6015c305e12411b98">finalize</a>() {}</div><div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;</div><div class="line"><a name="l00124"></a><span class="lineno"><a class="line" href="classprocess_1_1ProcessBase.html#a0a0053b515e25f366a29a6897467bebc">  124</a></span>&#160;  <span clas
 s="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classprocess_1_1ProcessBase.html#a0a0053b515e25f366a29a6897467bebc">exited</a>(<span class="keyword">const</span> <a class="code" href="structprocess_1_1UPID.html">UPID</a>&amp;) {}</div><div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;</div><div class="line"><a name="l00133"></a><span class="lineno"><a class="line" href="classprocess_1_1ProcessBase.html#a38a4b602aa7e2656a647323da1bacf50">  133</a></span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classprocess_1_1ProcessBase.html#a38a4b602aa7e2656a647323da1bacf50">lost</a>(<span class="keyword">const</span> <a class="code" href="structprocess_1_1UPID.html">UPID</a>&amp;) {}</div><div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;</div><div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;  <span class="keywor
 dtype">void</span> <a class="code" href="namespacenet.html#aa0a46766b4aca53ea50e1921567ddb40">send</a>(</div><div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;      <span class="keyword">const</span> <a class="code" href="structprocess_1_1UPID.html">UPID</a>&amp; to,</div><div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;      <span class="keyword">const</span> std::string&amp; <a class="code" href="namespaceos_1_1Shell.html#acfe16ef2b1146ad49a8651c0a457ce46">name</a>,</div><div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;      <span class="keyword">const</span> <span class="keywordtype">char</span>* data = <span class="keyword">nullptr</span>,</div><div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;      <span class="keywordtype">size_t</span> length = 0);</div><div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;</div><div class="line"><a name="l
 00147"></a><span class="lineno">  147</span>&#160;  <span class="keywordtype">void</span> <a class="code" href="namespacenet.html#aa0a46766b4aca53ea50e1921567ddb40">send</a>(</div><div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;      <span class="keyword">const</span> <a class="code" href="structprocess_1_1UPID.html">UPID</a>&amp; to,</div><div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;      std::string&amp;&amp; name);</div><div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;</div><div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;  <span class="keywordtype">void</span> <a class="code" href="namespacenet.html#aa0a46766b4aca53ea50e1921567ddb40">send</a>(</div><div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;      <span class="keyword">const</span> <a class="code" href="structprocess_1_1UPID.html">UPID</a>&amp; to,</div><div class="line"><a na
 me="l00153"></a><span class="lineno">  153</span>&#160;      std::string&amp;&amp; name,</div><div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;      std::string&amp;&amp; data);</div><div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;</div><div class="line"><a name="l00161"></a><span class="lineno"><a class="line" href="classprocess_1_1ProcessBase.html#a39f8e327dc132dd4a3a95fee650458f8">  161</a></span>&#160;  <span class="keyword">enum class</span> <a class="code" href="classprocess_1_1ProcessBase.html#a39f8e327dc132dd4a3a95fee650458f8">RemoteConnection</a></div><div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;  {</div><div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;    REUSE,</div><div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;</div><div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;    RECONNECT,</div><div cla
 ss="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;  };</div><div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160;</div><div class="line"><a name="l00195"></a><span class="lineno">  195</span>&#160;  <a class="code" href="structprocess_1_1UPID.html">UPID</a> link(</div><div class="line"><a name="l00196"></a><span class="lineno">  196</span>&#160;      <span class="keyword">const</span> <a class="code" href="structprocess_1_1UPID.html">UPID</a>&amp; pid,</div><div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;      <span class="keyword">const</span> <a class="code" href="classprocess_1_1ProcessBase.html#a39f8e327dc132dd4a3a95fee650458f8">RemoteConnection</a> remote = RemoteConnection::REUSE);</div><div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160;</div><div class="line"><a name="l00210"></a><span class="lineno">  210</span>&#160;  <span class="keyword">typedef</span> lambda::function&lt
 ;void(const UPID&amp;, const std::string&amp;)&gt;</div><div class="line"><a name="l00211"></a><span class="lineno"><a class="line" href="classprocess_1_1ProcessBase.html#ab7ca53e513d7ead18e05466c60e51891">  211</a></span>&#160;  <a class="code" href="classprocess_1_1ProcessBase.html#ab7ca53e513d7ead18e05466c60e51891">MessageHandler</a>;</div><div class="line"><a name="l00212"></a><span class="lineno">  212</span>&#160;</div><div class="line"><a name="l00216"></a><span class="lineno"><a class="line" href="classprocess_1_1ProcessBase.html#a591501723f8320f0b29e2a7c64a501eb">  216</a></span>&#160;  <span class="keywordtype">void</span> <a class="code" href="classprocess_1_1ProcessBase.html#a591501723f8320f0b29e2a7c64a501eb">install</a>(</div><div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160;      <span class="keyword">const</span> std::string&amp; name,</div><div class="line"><a name="l00218"></a><span class="lineno">  218</span>&#160;      <span class="keyw
 ord">const</span> <a class="code" href="classprocess_1_1ProcessBase.html#ab7ca53e513d7ead18e05466c60e51891">MessageHandler</a>&amp; handler)</div><div class="line"><a name="l00219"></a><span class="lineno">  219</span>&#160;  {</div><div class="line"><a name="l00220"></a><span class="lineno">  220</span>&#160;    handlers.message[<a class="code" href="namespaceos_1_1Shell.html#acfe16ef2b1146ad49a8651c0a457ce46">name</a>] = handler;</div><div class="line"><a name="l00221"></a><span class="lineno">  221</span>&#160;  }</div><div class="line"><a name="l00222"></a><span class="lineno">  222</span>&#160;</div><div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;  <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l00227"></a><span class="lineno"><a class="line" href="classprocess_1_1ProcessBase.html#a8dfef5689de05716f582fa737f165133">  227</a></span>&#160;  <span class="keywordtype">void</span> <a
  class="code" href="classprocess_1_1ProcessBase.html#a8dfef5689de05716f582fa737f165133">install</a>(</div><div class="line"><a name="l00228"></a><span class="lineno">  228</span>&#160;      <span class="keyword">const</span> std::string&amp; name,</div><div class="line"><a name="l00229"></a><span class="lineno">  229</span>&#160;      <span class="keywordtype">void</span> (T::*method)(<span class="keyword">const</span> <a class="code" href="structprocess_1_1UPID.html">UPID</a>&amp;, <span class="keyword">const</span> std::string&amp;))</div><div class="line"><a name="l00230"></a><span class="lineno">  230</span>&#160;  {</div><div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160;    <span class="comment">// Note that we use dynamic_cast here so a process can use</span></div><div class="line"><a name="l00232"></a><span class="lineno">  232</span>&#160;    <span class="comment">// multiple inheritance if it sees so fit (e.g., to implement</span></div><div class
 ="line"><a name="l00233"></a><span class="lineno">  233</span>&#160;    <span class="comment">// multiple callback interfaces).</span></div><div class="line"><a name="l00234"></a><span class="lineno">  234</span>&#160;    <a class="code" href="classprocess_1_1ProcessBase.html#ab7ca53e513d7ead18e05466c60e51891">MessageHandler</a> handler =</div><div class="line"><a name="l00235"></a><span class="lineno">  235</span>&#160;      <a class="code" href="namespaceprocess_1_1network.html#ad067110a4b38cc83785a43f49bf6c8e2">lambda::bind</a>(method, dynamic_cast&lt;T*&gt;(<span class="keyword">this</span>), lambda::_1, lambda::_2);</div><div class="line"><a name="l00236"></a><span class="lineno">  236</span>&#160;    <a class="code" href="namespaceprocess_1_1firewall.html#a99a70c4d8e775bb1692693ec278d0877">install</a>(name, handler);</div><div class="line"><a name="l00237"></a><span class="lineno">  237</span>&#160;  }</div><div class="line"><a name="l00238"></a><span class="lineno">  238</spa
 n>&#160;</div><div class="line"><a name="l00242"></a><span class="lineno"><a class="line" href="classprocess_1_1ProcessBase.html#a685d23d0dc0f42a0038dda0724e5d783">  242</a></span>&#160;  <span class="keywordtype">void</span> <a class="code" href="classprocess_1_1ProcessBase.html#a685d23d0dc0f42a0038dda0724e5d783">delegate</a>(<span class="keyword">const</span> std::string&amp; name, <span class="keyword">const</span> <a class="code" href="structprocess_1_1UPID.html">UPID</a>&amp; pid)</div><div class="line"><a name="l00243"></a><span class="lineno">  243</span>&#160;  {</div><div class="line"><a name="l00244"></a><span class="lineno">  244</span>&#160;    delegates[<a class="code" href="namespaceos_1_1Shell.html#acfe16ef2b1146ad49a8651c0a457ce46">name</a>] = pid;</div><div class="line"><a name="l00245"></a><span class="lineno">  245</span>&#160;  }</div><div class="line"><a name="l00246"></a><span class="lineno">  246</span>&#160;</div><div class="line"><a name="l00256"></a><span c
 lass="lineno">  256</span>&#160;  <span class="keyword">typedef</span> lambda::function&lt;Future&lt;http::Response&gt;(<span class="keyword">const</span> <a class="code" href="structprocess_1_1http_1_1Request.html">http::Request</a>&amp;)&gt;</div><div class="line"><a name="l00257"></a><span class="lineno"><a class="line" href="classprocess_1_1ProcessBase.html#a083d8346a62ad423899f6f9e9ee08806">  257</a></span>&#160;  <a class="code" href="classprocess_1_1ProcessBase.html#a083d8346a62ad423899f6f9e9ee08806">HttpRequestHandler</a>;</div><div class="line"><a name="l00258"></a><span class="lineno">  258</span>&#160;</div><div class="line"><a name="l00259"></a><span class="lineno">  259</span>&#160;  <span class="comment">// Options to control the behavior of a route.</span></div><div class="line"><a name="l00260"></a><span class="lineno"><a class="line" href="structprocess_1_1ProcessBase_1_1RouteOptions.html">  260</a></span>&#160;  <span class="keyword">struct </span><a class="code" h
 ref="structprocess_1_1ProcessBase_1_1RouteOptions.html">RouteOptions</a></div><div class="line"><a name="l00261"></a><span class="lineno">  261</span>&#160;  {</div><div class="line"><a name="l00262"></a><span class="lineno"><a class="line" href="structprocess_1_1ProcessBase_1_1RouteOptions.html#a9c202f7f06a7cb90499e3365ce338475">  262</a></span>&#160;    <a class="code" href="structprocess_1_1ProcessBase_1_1RouteOptions.html#a9c202f7f06a7cb90499e3365ce338475">RouteOptions</a>()</div><div class="line"><a name="l00263"></a><span class="lineno">  263</span>&#160;      : requestStreaming(false) {}</div><div class="line"><a name="l00264"></a><span class="lineno">  264</span>&#160;</div><div class="line"><a name="l00265"></a><span class="lineno">  265</span>&#160;    <span class="comment">// Set to true if the endpoint supports request streaming.</span></div><div class="line"><a name="l00266"></a><span class="lineno">  266</span>&#160;    <span class="comment">// Default: false.</span></
 div><div class="line"><a name="l00267"></a><span class="lineno"><a class="line" href="structprocess_1_1ProcessBase_1_1RouteOptions.html#ad4c6afac4c87de57deae76b67dc09610">  267</a></span>&#160;    <span class="keywordtype">bool</span> <a class="code" href="structprocess_1_1ProcessBase_1_1RouteOptions.html#ad4c6afac4c87de57deae76b67dc09610">requestStreaming</a>;</div><div class="line"><a name="l00268"></a><span class="lineno">  268</span>&#160;  };</div><div class="line"><a name="l00269"></a><span class="lineno">  269</span>&#160;</div><div class="line"><a name="l00276"></a><span class="lineno">  276</span>&#160;  <span class="keywordtype">void</span> route(</div><div class="line"><a name="l00277"></a><span class="lineno">  277</span>&#160;      <span class="keyword">const</span> std::string&amp; name,</div><div class="line"><a name="l00278"></a><span class="lineno">  278</span>&#160;      <span class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;std::strin
 g&gt;</a>&amp; help,</div><div class="line"><a name="l00279"></a><span class="lineno">  279</span>&#160;      <span class="keyword">const</span> <a class="code" href="classprocess_1_1ProcessBase.html#a083d8346a62ad423899f6f9e9ee08806">HttpRequestHandler</a>&amp; handler,</div><div class="line"><a name="l00280"></a><span class="lineno">  280</span>&#160;      <span class="keyword">const</span> <a class="code" href="structprocess_1_1ProcessBase_1_1RouteOptions.html">RouteOptions</a>&amp; options = <a class="code" href="structprocess_1_1ProcessBase_1_1RouteOptions.html">RouteOptions</a>());</div><div class="line"><a name="l00281"></a><span class="lineno">  281</span>&#160;</div><div class="line"><a name="l00285"></a><span class="lineno">  285</span>&#160;  <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l00286"></a><span class="lineno"><a class="line" href="classprocess_1_1ProcessBase.html#a70ff038897726b5ff2713e5d56
 02efa6">  286</a></span>&#160;  <span class="keywordtype">void</span> <a class="code" href="classprocess_1_1ProcessBase.html#a70ff038897726b5ff2713e5d5602efa6">route</a>(</div><div class="line"><a name="l00287"></a><span class="lineno">  287</span>&#160;      <span class="keyword">const</span> std::string&amp; name,</div><div class="line"><a name="l00288"></a><span class="lineno">  288</span>&#160;      <span class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;std::string&gt;</a>&amp; help,</div><div class="line"><a name="l00289"></a><span class="lineno">  289</span>&#160;      <a class="code" href="classprocess_1_1Future.html">Future&lt;http::Response&gt;</a> (T::*method)(<span class="keyword">const</span> <a class="code" href="structprocess_1_1http_1_1Request.html">http::Request</a>&amp;),</div><div class="line"><a name="l00290"></a><span class="lineno">  290</span>&#160;      <span class="keyword">const</span> <a class="code" href="structprocess_1_1Proc
 essBase_1_1RouteOptions.html">RouteOptions</a>&amp; options = <a class="code" href="structprocess_1_1ProcessBase_1_1RouteOptions.html">RouteOptions</a>())</div><div class="line"><a name="l00291"></a><span class="lineno">  291</span>&#160;  {</div><div class="line"><a name="l00292"></a><span class="lineno">  292</span>&#160;    <span class="comment">// Note that we use dynamic_cast here so a process can use</span></div><div class="line"><a name="l00293"></a><span class="lineno">  293</span>&#160;    <span class="comment">// multiple inheritance if it sees so fit (e.g., to implement</span></div><div class="line"><a name="l00294"></a><span class="lineno">  294</span>&#160;    <span class="comment">// multiple callback interfaces).</span></div><div class="line"><a name="l00295"></a><span class="lineno">  295</span>&#160;    <a class="code" href="classprocess_1_1ProcessBase.html#a083d8346a62ad423899f6f9e9ee08806">HttpRequestHandler</a> handler =</div><div class="line"><a name="l00296"></
 a><span class="lineno">  296</span>&#160;      <a class="code" href="namespaceprocess_1_1network.html#ad067110a4b38cc83785a43f49bf6c8e2">lambda::bind</a>(method, dynamic_cast&lt;T*&gt;(<span class="keyword">this</span>), lambda::_1);</div><div class="line"><a name="l00297"></a><span class="lineno">  297</span>&#160;    route(name, help, handler, options);</div><div class="line"><a name="l00298"></a><span class="lineno">  298</span>&#160;  }</div><div class="line"><a name="l00299"></a><span class="lineno">  299</span>&#160;</div><div class="line"><a name="l00320"></a><span class="lineno">  320</span>&#160;  <span class="keyword">typedef</span> lambda::function&lt;Future&lt;http::Response&gt;(</div><div class="line"><a name="l00321"></a><span class="lineno">  321</span>&#160;      <span class="keyword">const</span> <a class="code" href="structprocess_1_1http_1_1Request.html">http::Request</a>&amp;,</div><div class="line"><a name="l00322"></a><span class="lineno">  322</span>&#160;    
   <span class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;http::authentication::Principal&gt;</a>&amp;)&gt;</div><div class="line"><a name="l00323"></a><span class="lineno"><a class="line" href="classprocess_1_1ProcessBase.html#a0834b08377ce20a01893a033c46898f6">  323</a></span>&#160;          <a class="code" href="classprocess_1_1ProcessBase.html#a0834b08377ce20a01893a033c46898f6">AuthenticatedHttpRequestHandler</a>;</div><div class="line"><a name="l00324"></a><span class="lineno">  324</span>&#160;</div><div class="line"><a name="l00325"></a><span class="lineno">  325</span>&#160;  <span class="comment">// TODO(arojas): Consider introducing an `authentication::Realm` type.</span></div><div class="line"><a name="l00326"></a><span class="lineno">  326</span>&#160;  <span class="comment">// TODO(bevers): Consider changing the type of the second argument to</span></div><div class="line"><a name="l00327"></a><span class="lineno">  327</span>&#160;  <span cl
 ass="comment">// `const Option&lt;std::string&gt;&amp;` for consistency with the version below.</span></div><div class="line"><a name="l00328"></a><span class="lineno">  328</span>&#160;  <span class="keywordtype">void</span> route(</div><div class="line"><a name="l00329"></a><span class="lineno">  329</span>&#160;      <span class="keyword">const</span> std::string&amp; name,</div><div class="line"><a name="l00330"></a><span class="lineno">  330</span>&#160;      <span class="keyword">const</span> std::string&amp; realm,</div><div class="line"><a name="l00331"></a><span class="lineno">  331</span>&#160;      <span class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;std::string&gt;</a>&amp; help,</div><div class="line"><a name="l00332"></a><span class="lineno">  332</span>&#160;      <span class="keyword">const</span> <a class="code" href="classprocess_1_1ProcessBase.html#a0834b08377ce20a01893a033c46898f6">AuthenticatedHttpRequestHandler</a>&amp; handler,<
 /div><div class="line"><a name="l00333"></a><span class="lineno">  333</span>&#160;      <span class="keyword">const</span> <a class="code" href="structprocess_1_1ProcessBase_1_1RouteOptions.html">RouteOptions</a>&amp; options = <a class="code" href="structprocess_1_1ProcessBase_1_1RouteOptions.html">RouteOptions</a>());</div><div class="line"><a name="l00334"></a><span class="lineno">  334</span>&#160;</div><div class="line"><a name="l00339"></a><span class="lineno">  339</span>&#160;  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l00340"></a><span class="lineno"><a class="line" href="classprocess_1_1ProcessBase.html#a37cf86bbf94884960c041e081a34bee4">  340</a></span>&#160;  <span class="keywordtype">void</span> <a class="code" href="classprocess_1_1ProcessBase.html#a37cf86bbf94884960c041e081a34bee4">route</a>(</div><div class="line"><a name="l00341"></a><span class="lineno">  341</span>&#160;    <span class="ke
 yword">const</span> std::string&amp; name,</div><div class="line"><a name="l00342"></a><span class="lineno">  342</span>&#160;    <span class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;std::string&gt;</a>&amp; realm,</div><div class="line"><a name="l00343"></a><span class="lineno">  343</span>&#160;    <span class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;std::string&gt;</a>&amp; help,</div><div class="line"><a name="l00344"></a><span class="lineno">  344</span>&#160;    <a class="code" href="classprocess_1_1Future.html">Future&lt;http::Response&gt;</a>(T::*method)(</div><div class="line"><a name="l00345"></a><span class="lineno">  345</span>&#160;        <span class="keyword">const</span> http::Request&amp;, <span class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;http::authentication::Principal&gt;</a>&amp;),</div><div class="line"><a name="l00346"></a><span class="lineno">  346</span>&#160;  
   <span class="keyword">const</span> <a class="code" href="structprocess_1_1ProcessBase_1_1RouteOptions.html">RouteOptions</a>&amp; options = <a class="code" href="structprocess_1_1ProcessBase_1_1RouteOptions.html">RouteOptions</a>())</div><div class="line"><a name="l00347"></a><span class="lineno">  347</span>&#160;  {</div><div class="line"><a name="l00348"></a><span class="lineno">  348</span>&#160;    <span class="comment">// Note that we use dynamic_cast here so a process can use</span></div><div class="line"><a name="l00349"></a><span class="lineno">  349</span>&#160;    <span class="comment">// multiple inheritance if it sees so fit (e.g., to implement</span></div><div class="line"><a name="l00350"></a><span class="lineno">  350</span>&#160;    <span class="comment">// multiple callback interfaces).</span></div><div class="line"><a name="l00351"></a><span class="lineno">  351</span>&#160;    <span class="keywordflow">if</span> (realm.<a class="code" href="classOption.html#a4e
 3bf8416d95246f43c91f1b5c309323">isSome</a>()) {</div><div class="line"><a name="l00352"></a><span class="lineno">  352</span>&#160;      <a class="code" href="classprocess_1_1ProcessBase.html#a0834b08377ce20a01893a033c46898f6">AuthenticatedHttpRequestHandler</a> handler =</div><div class="line"><a name="l00353"></a><span class="lineno">  353</span>&#160;        <a class="code" href="namespaceprocess_1_1network.html#ad067110a4b38cc83785a43f49bf6c8e2">lambda::bind</a>(method, dynamic_cast&lt;T*&gt;(<span class="keyword">this</span>), lambda::_1, lambda::_2);</div><div class="line"><a name="l00354"></a><span class="lineno">  354</span>&#160;      route(name, realm.<a class="code" href="classOption.html#a21358442c0fac1cc978a67a9a9089a79">get</a>(), help, handler, options);</div><div class="line"><a name="l00355"></a><span class="lineno">  355</span>&#160;    } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00356"></a><span class="lineno">  356</span>&#160;     
  <a class="code" href="classprocess_1_1ProcessBase.html#a083d8346a62ad423899f6f9e9ee08806">HttpRequestHandler</a> handler =</div><div class="line"><a name="l00357"></a><span class="lineno">  357</span>&#160;        <a class="code" href="namespaceprocess_1_1network.html#ad067110a4b38cc83785a43f49bf6c8e2">lambda::bind</a>(method, dynamic_cast&lt;T*&gt;(<span class="keyword">this</span>), lambda::_1, <a class="code" href="structNone.html">None</a>());</div><div class="line"><a name="l00358"></a><span class="lineno">  358</span>&#160;      route(name, help, handler, options);</div><div class="line"><a name="l00359"></a><span class="lineno">  359</span>&#160;    }</div><div class="line"><a name="l00360"></a><span class="lineno">  360</span>&#160;  }</div><div class="line"><a name="l00361"></a><span class="lineno">  361</span>&#160;</div><div class="line"><a name="l00376"></a><span class="lineno"><a class="line" href="classprocess_1_1ProcessBase.html#a6b32f94df3a92225825a1cc426b060c8">  3
 76</a></span>&#160;  <span class="keywordtype">void</span> <a class="code" href="classprocess_1_1ProcessBase.html#a6b32f94df3a92225825a1cc426b060c8">provide</a>(</div><div class="line"><a name="l00377"></a><span class="lineno">  377</span>&#160;      <span class="keyword">const</span> std::string&amp; name,</div><div class="line"><a name="l00378"></a><span class="lineno">  378</span>&#160;      <span class="keyword">const</span> std::string&amp; <a class="code" href="namespacepath.html">path</a>,</div><div class="line"><a name="l00379"></a><span class="lineno">  379</span>&#160;      <span class="keyword">const</span> std::map&lt;std::string, std::string&gt;&amp; <a class="code" href="namespaceprocess_1_1mime.html#aa12bd84b9c99ba313fbbf8c56bc411cb">types</a> = <a class="code" href="namespaceprocess_1_1mime.html#aa12bd84b9c99ba313fbbf8c56bc411cb">mime::types</a>)</div><div class="line"><a name="l00380"></a><span class="lineno">  380</span>&#160;  {</div><div class="line"><a name="l00
 381"></a><span class="lineno">  381</span>&#160;    <span class="comment">// TODO(benh): Check that name is only alphanumeric (i.e., has no</span></div><div class="line"><a name="l00382"></a><span class="lineno">  382</span>&#160;    <span class="comment">// &#39;/&#39;) and that path is absolute.</span></div><div class="line"><a name="l00383"></a><span class="lineno">  383</span>&#160;    Asset asset;</div><div class="line"><a name="l00384"></a><span class="lineno">  384</span>&#160;    asset.path = path;</div><div class="line"><a name="l00385"></a><span class="lineno">  385</span>&#160;    asset.types = <a class="code" href="namespaceprocess_1_1mime.html#aa12bd84b9c99ba313fbbf8c56bc411cb">types</a>;</div><div class="line"><a name="l00386"></a><span class="lineno">  386</span>&#160;    assets[<a class="code" href="namespaceos_1_1Shell.html#acfe16ef2b1146ad49a8651c0a457ce46">name</a>] = asset;</div><div class="line"><a name="l00387"></a><span class="lineno">  387</span>&#160;  }</di
 v><div class="line"><a name="l00388"></a><span class="lineno">  388</span>&#160;</div><div class="line"><a name="l00394"></a><span class="lineno">  394</span>&#160;  <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l00395"></a><span class="lineno">  395</span>&#160;  <span class="keywordtype">size_t</span> eventCount();</div><div class="line"><a name="l00396"></a><span class="lineno">  396</span>&#160;</div><div class="line"><a name="l00397"></a><span class="lineno">  397</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00398"></a><span class="lineno"><a class="line" href="classprocess_1_1ProcessBase.html#a43e117b196c850619d5255046edb3e79">  398</a></span>&#160;  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classprocess_1_1SocketManager.html">SocketManager</a>;</div><div class="line"><a name="l00399"></a><span class="lineno"><a class=
 "line" href="classprocess_1_1ProcessBase.html#ae1701c7594fe2cf1c96b951a52eb0396">  399</a></span>&#160;  <span class="keyword">friend</span> <span class="keyword">class </span>ProcessManager;</div><div class="line"><a name="l00400"></a><span class="lineno">  400</span>&#160;  <span class="keyword">friend</span> <span class="keywordtype">void</span>* <a class="code" href="namespacemesos_1_1internal_1_1master_1_1maintenance_1_1validation.html#a2305ebada64e853abc6548e118ad08ee">schedule</a>(<span class="keywordtype">void</span>*);</div><div class="line"><a name="l00401"></a><span class="lineno">  401</span>&#160;</div><div class="line"><a name="l00402"></a><span class="lineno">  402</span>&#160;  <span class="comment">// Process states.</span></div><div class="line"><a name="l00403"></a><span class="lineno">  403</span>&#160;  <span class="comment">//</span></div><div class="line"><a name="l00404"></a><span class="lineno">  404</span>&#160;  <span class="comment">// Transitioning from 
 BLOCKED to READY also requires enqueueing the</span></div><div class="line"><a name="l00405"></a><span class="lineno">  405</span>&#160;  <span class="comment">// process in the run queue otherwise the events will never be</span></div><div class="line"><a name="l00406"></a><span class="lineno">  406</span>&#160;  <span class="comment">// processed!</span></div><div class="line"><a name="l00407"></a><span class="lineno">  407</span>&#160;  <span class="keyword">enum class</span> State</div><div class="line"><a name="l00408"></a><span class="lineno">  408</span>&#160;  {</div><div class="line"><a name="l00409"></a><span class="lineno">  409</span>&#160;    BOTTOM, <span class="comment">// Uninitialized but events may be enqueued.</span></div><div class="line"><a name="l00410"></a><span class="lineno">  410</span>&#160;    BLOCKED, <span class="comment">// Initialized, no events enqueued.</span></div><div class="line"><a name="l00411"></a><span class="lineno">  411</span>&#160;    READ
 Y, <span class="comment">// Initialized, events enqueued.</span></div><div class="line"><a name="l00412"></a><span class="lineno">  412</span>&#160;    TERMINATING <span class="comment">// Initialized, no more events will be enqueued.</span></div><div class="line"><a name="l00413"></a><span class="lineno">  413</span>&#160;  };</div><div class="line"><a name="l00414"></a><span class="lineno">  414</span>&#160;</div><div class="line"><a name="l00415"></a><span class="lineno">  415</span>&#160;  std::atomic&lt;State&gt; state = ATOMIC_VAR_INIT(State::BOTTOM);</div><div class="line"><a name="l00416"></a><span class="lineno">  416</span>&#160;</div><div class="line"><a name="l00417"></a><span class="lineno">  417</span>&#160;  <span class="comment">// Flag for indicating that a terminate event has been injected.</span></div><div class="line"><a name="l00418"></a><span class="lineno">  418</span>&#160;  std::atomic&lt;bool&gt; termination = ATOMIC_VAR_INIT(<span class="keyword">false</sp
 an>);</div><div class="line"><a name="l00419"></a><span class="lineno">  419</span>&#160;</div><div class="line"><a name="l00420"></a><span class="lineno">  420</span>&#160;  <span class="comment">// Enqueue the specified message, request, or function call.</span></div><div class="line"><a name="l00421"></a><span class="lineno">  421</span>&#160;  <span class="keywordtype">void</span> enqueue(<a class="code" href="structprocess_1_1Event.html">Event</a>* event);</div><div class="line"><a name="l00422"></a><span class="lineno">  422</span>&#160;</div><div class="line"><a name="l00423"></a><span class="lineno">  423</span>&#160;  <span class="comment">// Delegates for messages.</span></div><div class="line"><a name="l00424"></a><span class="lineno">  424</span>&#160;  std::map&lt;std::string, UPID&gt; delegates;</div><div class="line"><a name="l00425"></a><span class="lineno">  425</span>&#160;</div><div class="line"><a name="l00426"></a><span class="lineno">  426</span>&#160;  <span c
 lass="comment">// Definition of an HTTP endpoint. The endpoint can be</span></div><div class="line"><a name="l00427"></a><span class="lineno">  427</span>&#160;  <span class="comment">// associated with an authentication realm, in which case:</span></div><div class="line"><a name="l00428"></a><span class="lineno">  428</span>&#160;  <span class="comment">//</span></div><div class="line"><a name="l00429"></a><span class="lineno">  429</span>&#160;  <span class="comment">//  (1) `realm` and `authenticatedHandler` will be set.</span></div><div class="line"><a name="l00430"></a><span class="lineno">  430</span>&#160;  <span class="comment">//      Libprocess will perform HTTP authentication for</span></div><div class="line"><a name="l00431"></a><span class="lineno">  431</span>&#160;  <span class="comment">//      all requests to this endpoint (by default during</span></div><div class="line"><a name="l00432"></a><span class="lineno">  432</span>&#160;  <span class="comment">//      Http
 Event consumption). The authentication principal</span></div><div class="line"><a name="l00433"></a><span class="lineno">  433</span>&#160;  <span class="comment">//      will be passed to the `authenticatedHandler`.</span></div><div class="line"><a name="l00434"></a><span class="lineno">  434</span>&#160;  <span class="comment">//</span></div><div class="line"><a name="l00435"></a><span class="lineno">  435</span>&#160;  <span class="comment">//  Otherwise, if the endpoint is not associated with an</span></div><div class="line"><a name="l00436"></a><span class="lineno">  436</span>&#160;  <span class="comment">//  authentication realm:</span></div><div class="line"><a name="l00437"></a><span class="lineno">  437</span>&#160;  <span class="comment">//</span></div><div class="line"><a name="l00438"></a><span class="lineno">  438</span>&#160;  <span class="comment">//  (2) Only `handler` will be set, and no authentication</span></div><div class="line"><a name="l00439"></a><span class=
 "lineno">  439</span>&#160;  <span class="comment">//      takes place.</span></div><div class="line"><a name="l00440"></a><span class="lineno">  440</span>&#160;  <span class="keyword">struct </span>HttpEndpoint</div><div class="line"><a name="l00441"></a><span class="lineno">  441</span>&#160;  {</div><div class="line"><a name="l00442"></a><span class="lineno">  442</span>&#160;    <a class="code" href="classOption.html">Option&lt;HttpRequestHandler&gt;</a> handler;</div><div class="line"><a name="l00443"></a><span class="lineno">  443</span>&#160;</div><div class="line"><a name="l00444"></a><span class="lineno">  444</span>&#160;    <a class="code" href="classOption.html">Option&lt;std::string&gt;</a> realm;</div><div class="line"><a name="l00445"></a><span class="lineno">  445</span>&#160;    <a class="code" href="classOption.html">Option&lt;AuthenticatedHttpRequestHandler&gt;</a> authenticatedHandler;</div><div class="line"><a name="l00446"></a><span class="lineno">  446</span>
 &#160;    <a class="code" href="structprocess_1_1ProcessBase_1_1RouteOptions.html">RouteOptions</a> options;</div><div class="line"><a name="l00447"></a><span class="lineno">  447</span>&#160;  };</div><div class="line"><a name="l00448"></a><span class="lineno">  448</span>&#160;</div><div class="line"><a name="l00449"></a><span class="lineno">  449</span>&#160;  <span class="comment">// Handlers for messages and HTTP requests.</span></div><div class="line"><a name="l00450"></a><span class="lineno">  450</span>&#160;  <span class="keyword">struct </span>{</div><div class="line"><a name="l00451"></a><span class="lineno"><a class="line" href="classprocess_1_1ProcessBase.html#afb219ae4b5e8dab3f724e78032e03d0c">  451</a></span>&#160;    <a class="code" href="classhashmap.html">hashmap&lt;std::string, MessageHandler&gt;</a> <a class="code" href="classprocess_1_1ProcessBase.html#afb219ae4b5e8dab3f724e78032e03d0c">message</a>;</div><div class="line"><a name="l00452"></a><span class="lineno
 "><a class="line" href="classprocess_1_1ProcessBase.html#a2f0e2769d84e1491c180d0da6458624b">  452</a></span>&#160;    <a class="code" href="classhashmap.html">hashmap&lt;std::string, HttpEndpoint&gt;</a> <a class="code" href="classprocess_1_1ProcessBase.html#a2f0e2769d84e1491c180d0da6458624b">http</a>;</div><div class="line"><a name="l00453"></a><span class="lineno">  453</span>&#160;</div><div class="line"><a name="l00454"></a><span class="lineno">  454</span>&#160;    <span class="comment">// Used for delivering HTTP requests in the correct order.</span></div><div class="line"><a name="l00455"></a><span class="lineno">  455</span>&#160;    <span class="comment">// Initialized lazily to avoid ProcessBase requiring</span></div><div class="line"><a name="l00456"></a><span class="lineno">  456</span>&#160;    <span class="comment">// another Process!</span></div><div class="line"><a name="l00457"></a><span class="lineno"><a class="line" href="classprocess_1_1ProcessBase.html#a55a5326c
 3f9b66bc56cc13c7bf4c350d">  457</a></span>&#160;    <a class="code" href="classprocess_1_1Owned.html">Owned&lt;Sequence&gt;</a> <a class="code" href="classprocess_1_1ProcessBase.html#a55a5326c3f9b66bc56cc13c7bf4c350d">httpSequence</a>;</div><div class="line"><a name="l00458"></a><span class="lineno">  458</span>&#160;  } handlers;</div><div class="line"><a name="l00459"></a><span class="lineno">  459</span>&#160;</div><div class="line"><a name="l00460"></a><span class="lineno">  460</span>&#160;  <span class="comment">// Definition of a static asset.</span></div><div class="line"><a name="l00461"></a><span class="lineno">  461</span>&#160;  <span class="keyword">struct </span>Asset</div><div class="line"><a name="l00462"></a><span class="lineno">  462</span>&#160;  {</div><div class="line"><a name="l00463"></a><span class="lineno">  463</span>&#160;    std::string <a class="code" href="namespacepath.html">path</a>;</div><div class="line"><a name="l00464"></a><span class="lineno">  4
 64</span>&#160;    std::map&lt;std::string, std::string&gt; <a class="code" href="namespaceprocess_1_1mime.html#aa12bd84b9c99ba313fbbf8c56bc411cb">types</a>;</div><div class="line"><a name="l00465"></a><span class="lineno">  465</span>&#160;  };</div><div class="line"><a name="l00466"></a><span class="lineno">  466</span>&#160;</div><div class="line"><a name="l00467"></a><span class="lineno">  467</span>&#160;  <span class="comment">// Continuation for `consume(HttpEvent&amp;&amp;)`.</span></div><div class="line"><a name="l00468"></a><span class="lineno">  468</span>&#160;  <a class="code" href="classprocess_1_1Future.html">Future&lt;http::Response&gt;</a> _consume(</div><div class="line"><a name="l00469"></a><span class="lineno">  469</span>&#160;      <span class="keyword">const</span> HttpEndpoint&amp; endpoint,</div><div class="line"><a name="l00470"></a><span class="lineno">  470</span>&#160;      <span class="keyword">const</span> std::string&amp; name,</div><div class="line">
 <a name="l00471"></a><span class="lineno">  471</span>&#160;      <span class="keyword">const</span> <a class="code" href="classprocess_1_1Owned.html">Owned&lt;http::Request&gt;</a>&amp; <a class="code" href="namespaceprocess_1_1http.html#ad8f400b5e54038df7e5662ec35da05fa">request</a>);</div><div class="line"><a name="l00472"></a><span class="lineno">  472</span>&#160;</div><div class="line"><a name="l00473"></a><span class="lineno">  473</span>&#160;  <span class="comment">// JSON representation of process. MUST be invoked from within the</span></div><div class="line"><a name="l00474"></a><span class="lineno">  474</span>&#160;  <span class="comment">// process itself in order to safely examine events.</span></div><div class="line"><a name="l00475"></a><span class="lineno">  475</span>&#160;  <span class="keyword">operator</span> <a class="code" href="structJSON_1_1Object.html">JSON::Object</a>();</div><div class="line"><a name="l00476"></a><span class="lineno">  476</span>&#160;</
 div><div class="line"><a name="l00477"></a><span class="lineno">  477</span>&#160;  <span class="comment">// Static assets(s) to provide.</span></div><div class="line"><a name="l00478"></a><span class="lineno">  478</span>&#160;  std::map&lt;std::string, Asset&gt; assets;</div><div class="line"><a name="l00479"></a><span class="lineno">  479</span>&#160;</div><div class="line"><a name="l00480"></a><span class="lineno">  480</span>&#160;  <span class="comment">// Queue of received events. We employ the PIMPL idiom here and use</span></div><div class="line"><a name="l00481"></a><span class="lineno">  481</span>&#160;  <span class="comment">// a pointer so we can hide the implementation of `EventQueue`.</span></div><div class="line"><a name="l00482"></a><span class="lineno">  482</span>&#160;  std::unique_ptr&lt;EventQueue&gt; events;</div><div class="line"><a name="l00483"></a><span class="lineno">  483</span>&#160;</div><div class="line"><a name="l00484"></a><span class="lineno">  48
 4</span>&#160;  <span class="comment">// NOTE: this is a shared pointer to a _pointer_, hence this is not</span></div><div class="line"><a name="l00485"></a><span class="lineno">  485</span>&#160;  <span class="comment">// responsible for the ProcessBase itself.</span></div><div class="line"><a name="l00486"></a><span class="lineno">  486</span>&#160;  std::shared_ptr&lt;ProcessBase*&gt; reference;</div><div class="line"><a name="l00487"></a><span class="lineno">  487</span>&#160;</div><div class="line"><a name="l00488"></a><span class="lineno">  488</span>&#160;  std::shared_ptr&lt;Gate&gt; gate;</div><div class="line"><a name="l00489"></a><span class="lineno">  489</span>&#160;</div><div class="line"><a name="l00490"></a><span class="lineno">  490</span>&#160;  <span class="comment">// Whether or not the runtime should delete this process after it</span></div><div class="line"><a name="l00491"></a><span class="lineno">  491</span>&#160;  <span class="comment">// has terminated. No
 te that failure to spawn the process will leave</span></div><div class="line"><a name="l00492"></a><span class="lineno">  492</span>&#160;  <span class="comment">// the process unmanaged and thus it may leak!</span></div><div class="line"><a name="l00493"></a><span class="lineno">  493</span>&#160;  <span class="keywordtype">bool</span> manage = <span class="keyword">false</span>;</div><div class="line"><a name="l00494"></a><span class="lineno">  494</span>&#160;</div><div class="line"><a name="l00495"></a><span class="lineno">  495</span>&#160;  <span class="comment">// Process PID.</span></div><div class="line"><a name="l00496"></a><span class="lineno">  496</span>&#160;  <a class="code" href="structprocess_1_1UPID.html">UPID</a> pid;</div><div class="line"><a name="l00497"></a><span class="lineno">  497</span>&#160;};</div><div class="line"><a name="l00498"></a><span class="lineno">  498</span>&#160;</div><div class="line"><a name="l00499"></a><span class="lineno">  499</span>&#1
 60;</div><div class="line"><a name="l00500"></a><span class="lineno">  500</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l00501"></a><span class="lineno"><a class="line" href="classprocess_1_1Process.html">  501</a></span>&#160;<span class="keyword">class </span><a class="code" href="classprocess_1_1Process.html">Process</a> : <span class="keyword">public</span> <span class="keyword">virtual</span> <a class="code" href="classprocess_1_1ProcessBase.html">ProcessBase</a> {</div><div class="line"><a name="l00502"></a><span class="lineno">  502</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00503"></a><span class="lineno"><a class="line" href="classprocess_1_1Process.html#a919f2834843f8620784c58aee7db2371">  503</a></span>&#160;  <span class="keyword">virtual</span> <a class="code" href="classprocess_1_1Process.html#a919f2834843f8620784c58aee7db2371">~Process</a>() {}</
 div><div class="line"><a name="l00504"></a><span class="lineno">  504</span>&#160;</div><div class="line"><a name="l00510"></a><span class="lineno"><a class="line" href="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e">  510</a></span>&#160;  <a class="code" href="structprocess_1_1PID.html">PID&lt;T&gt;</a> <span class="keyword">self</span>() <span class="keyword">const</span> { <span class="keywordflow">return</span> <a class="code" href="structprocess_1_1PID.html">PID&lt;T&gt;</a>(<span class="keyword">static_cast&lt;</span><span class="keyword">const </span>T*<span class="keyword">&gt;</span>(<span class="keyword">this</span>)); }</div><div class="line"><a name="l00511"></a><span class="lineno">  511</span>&#160;</div><div class="line"><a name="l00512"></a><span class="lineno">  512</span>&#160;<span class="keyword">protected</span>:</div><div class="line"><a name="l00513"></a><span class="lineno">  513</span>&#160;  <span class="comment">// Useful typedefs for dis
 patch/delay/defer to self()/this.</span></div><div class="line"><a name="l00514"></a><span class="lineno"><a class="line" href="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e">  514</a></span>&#160;  <span class="keyword">typedef</span> T <a class="code" href="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e">Self</a>;</div><div class="line"><a name="l00515"></a><span class="lineno"><a class="line" href="classprocess_1_1Process.html#a1e9980d5d873c695d4a1749971e18cd9">  515</a></span>&#160;  <span class="keyword">typedef</span> T <a class="code" href="classprocess_1_1Process.html#a1e9980d5d873c695d4a1749971e18cd9">This</a>;</div><div class="line"><a name="l00516"></a><span class="lineno">  516</span>&#160;};</div><div class="line"><a name="l00517"></a><span class="lineno">  517</span>&#160;</div><div class="line"><a name="l00518"></a><span class="lineno">  518</span>&#160;</div><div class="line"><a name="l00539"></a><span class="lineno">  539</span>&#160
 ;<span class="keywordtype">bool</span> <a class="code" href="namespaceprocess.html#a6c9cd01950a98038b2a6df3e5066418f">initialize</a>(</div><div class="line"><a name="l00540"></a><span class="lineno">  540</span>&#160;    <span class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;std::string&gt;</a>&amp; delegate = <a class="code" href="structNone.html">None</a>(),</div><div class="line"><a name="l00541"></a><span class="lineno">  541</span>&#160;    <span class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;std::string&gt;</a>&amp; readwriteAuthenticationRealm = <a class="code" href="structNone.html">None</a>(),</div><div class="line"><a name="l00542"></a><span class="lineno">  542</span>&#160;    <span class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;std::string&gt;</a>&amp; readonlyAuthenticationRealm = <a class="code" href="structNone.html">None</a>());</div><div class="line"><a name="l00543"></a><s
 pan class="lineno">  543</span>&#160;</div><div class="line"><a name="l00544"></a><span class="lineno">  544</span>&#160;</div><div class="line"><a name="l00551"></a><span class="lineno">  551</span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespaceprocess.html#a238371634a6637198c58ea740b0890ca">finalize</a>(<span class="keywordtype">bool</span> finalize_wsa = <span class="keyword">false</span>);</div><div class="line"><a name="l00552"></a><span class="lineno">  552</span>&#160;</div><div class="line"><a name="l00553"></a><span class="lineno">  553</span>&#160;</div><div class="line"><a name="l00557"></a><span class="lineno">  557</span>&#160;std::string <a class="code" href="namespaceprocess.html#a112cf0f14ff608d490b910aab93d8e0d">absolutePath</a>(<span class="keyword">const</span> std::string&amp; <a class="code" href="namespacepath.html">path</a>);</div><div class="line"><a name="l00558"></a><span class="lineno">  558</span>&#160;</div><div class="line"><
 a name="l00559"></a><span class="lineno">  559</span>&#160;</div><div class="line"><a name="l00563"></a><span class="lineno">  563</span>&#160;<a class="code" href="classprocess_1_1network_1_1inet_1_1Address.html">network::inet::Address</a> <a class="code" href="namespaceprocess.html#afdecc57ab065ab5d354e728d0ef0ff34">address</a>();</div><div class="line"><a name="l00564"></a><span class="lineno">  564</span>&#160;</div><div class="line"><a name="l00565"></a><span class="lineno">  565</span>&#160;</div><div class="line"><a name="l00569"></a><span class="lineno">  569</span>&#160;<a class="code" href="structprocess_1_1PID.html">PID&lt;Logging&gt;</a> <a class="code" href="namespaceprocess.html#a283af87525d9611f5d27b9a7dd6b967e">logging</a>();</div><div class="line"><a name="l00570"></a><span class="lineno">  570</span>&#160;</div><div class="line"><a name="l00571"></a><span class="lineno">  571</span>&#160;</div><div class="line"><a name="l00577"></a><span class="lineno">  577</span>
 &#160;<span class="keywordtype">long</span> <a class="code" href="namespaceprocess.html#a18419acc52ca1e339e684f8d9208207e">workers</a>();</div><div class="line"><a name="l00578"></a><span class="lineno">  578</span>&#160;</div><div class="line"><a name="l00579"></a><span class="lineno">  579</span>&#160;</div><div class="line"><a name="l00587"></a><span class="lineno">  587</span>&#160;<a class="code" href="structprocess_1_1UPID.html">UPID</a> <a class="code" href="namespaceprocess.html#aff22904a83567125d3b4d0d88e5a2270">spawn</a>(<a class="code" href="classprocess_1_1ProcessBase.html">ProcessBase</a>* <a class="code" href="namespaceprocess.html">process</a>, <span class="keywordtype">bool</span> manage = <span class="keyword">false</span>);</div><div class="line"><a name="l00588"></a><span class="lineno">  588</span>&#160;</div><div class="line"><a name="l00589"></a><span class="lineno"><a class="line" href="namespaceprocess.html#aa3e3f539080a94857e07401dd26b2f8f">  589</a></span>&
 #160;<span class="keyword">inline</span> <a class="code" href="structprocess_1_1UPID.html">UPID</a> <a class="code" href="namespaceprocess.html#aff22904a83567125d3b4d0d88e5a2270">spawn</a>(<a class="code" href="classprocess_1_1ProcessBase.html">ProcessBase</a>&amp; <a class="code" href="namespaceprocess.html">process</a>, <span class="keywordtype">bool</span> manage = <span class="keyword">false</span>)</div><div class="line"><a name="l00590"></a><span class="lineno">  590</span>&#160;{</div><div class="line"><a name="l00591"></a><span class="lineno">  591</span>&#160;  <span class="keywordflow">return</span> <a class="code" href="namespaceprocess.html#aff22904a83567125d3b4d0d88e5a2270">spawn</a>(&amp;process, manage);</div><div class="line"><a name="l00592"></a><span class="lineno">  592</span>&#160;}</div><div class="line"><a name="l00593"></a><span class="lineno">  593</span>&#160;</div><div class="line"><a name="l00594"></a><span class="lineno">  594</span>&#160;<span class="key
 word">template</span> &lt;<span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l00595"></a><span class="lineno"><a class="line" href="namespaceprocess.html#a271f92d7aab3c157b237ac5c48a0f6be">  595</a></span>&#160;<a class="code" href="structprocess_1_1PID.html">PID&lt;T&gt;</a> <a class="code" href="namespaceprocess.html#aff22904a83567125d3b4d0d88e5a2270">spawn</a>(T* t, <span class="keywordtype">bool</span> manage = <span class="keyword">false</span>)</div><div class="line"><a name="l00596"></a><span class="lineno">  596</span>&#160;{</div><div class="line"><a name="l00597"></a><span class="lineno">  597</span>&#160;  <span class="comment">// We save the pid before spawn is called because it&#39;s possible that</span></div><div class="line"><a name="l00598"></a><span class="lineno">  598</span>&#160;  <span class="comment">// the process has already been deleted after spawn returns (e.g.,</span></div><div class="line"><a name="l00599"></a><span class="lineno"
 >  599</span>&#160;  <span class="comment">// if &#39;manage&#39; is true).</span></div><div class="line"><a name="l00600"></a><span class="lineno">  600</span>&#160;  <a class="code" href="structprocess_1_1PID.html">PID&lt;T&gt;</a> pid(t);</div><div class="line"><a name="l00601"></a><span class="lineno">  601</span>&#160;</div><div class="line"><a name="l00602"></a><span class="lineno">  602</span>&#160;  <span class="keywordflow">if</span> (!<a class="code" href="namespaceprocess.html#aff22904a83567125d3b4d0d88e5a2270">spawn</a>(static_cast&lt;ProcessBase*&gt;(t), manage)) {</div><div class="line"><a name="l00603"></a><span class="lineno">  603</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="structprocess_1_1PID.html">PID&lt;T&gt;</a>();</div><div class="line"><a name="l00604"></a><span class="lineno">  604</span>&#160;  }</div><div class="line"><a name="l00605"></a><span class="lineno">  605</span>&#160;</div><div class="line"><a name="l00606"></a><
 span class="lineno">  606</span>&#160;  <span class="keywordflow">return</span> pid;</div><div class="line"><a name="l00607"></a><span class="lineno">  607</span>&#160;}</div><div class="line"><a name="l00608"></a><span class="lineno">  608</span>&#160;</div><div class="line"><a name="l00609"></a><span class="lineno">  609</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l00610"></a><span class="lineno"><a class="line" href="namespaceprocess.html#a0458ac577eb50d91c829967c1d7ca3dd">  610</a></span>&#160;<a class="code" href="structprocess_1_1PID.html">PID&lt;T&gt;</a> <a class="code" href="namespaceprocess.html#aff22904a83567125d3b4d0d88e5a2270">spawn</a>(T&amp; t, <span class="keywordtype">bool</span> manage = <span class="keyword">false</span>)</div><div class="line"><a name="l00611"></a><span class="lineno">  611</span>&#160;{</div><div class="line"><a name="l00612"></a><span class="lineno">  612</spa
 n>&#160;  <span class="keywordflow">return</span> <a class="code" href="namespaceprocess.html#aff22904a83567125d3b4d0d88e5a2270">spawn</a>(&amp;t, manage);</div><div class="line"><a name="l00613"></a><span class="lineno">  613</span>&#160;}</div><div class="line"><a name="l00614"></a><span class="lineno">  614</span>&#160;</div><div class="line"><a name="l00615"></a><span class="lineno">  615</span>&#160;</div><div class="line"><a name="l00629"></a><span class="lineno">  629</span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespaceprocess.html#a20443908afa3212215166e26065349e5">terminate</a>(<span class="keyword">const</span> <a class="code" href="structprocess_1_1UPID.html">UPID</a>&amp; pid, <span class="keywordtype">bool</span> inject = <span class="keyword">true</span>);</div><div class="line"><a name="l00630"></a><span class="lineno">  630</span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespaceprocess.html#a20443908afa3212215166
 e26065349e5">terminate</a>(<span class="keyword">const</span> <a class="code" href="classprocess_1_1ProcessBase.html">ProcessBase</a>&amp; <a class="code" href="namespaceprocess.html">process</a>, <span class="keywordtype">bool</span> inject = <span class="keyword">true</span>);</div><div class="line"><a name="l00631"></a><span class="lineno">  631</span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespaceprocess.html#a20443908afa3212215166e26065349e5">terminate</a>(<span class="keyword">const</span> <a class="code" href="classprocess_1_1ProcessBase.html">ProcessBase</a>* process, <span class="keywordtype">bool</span> inject = <span class="keyword">true</span>);</div><div class="line"><a name="l00632"></a><span class="lineno">  632</span>&#160;</div><div class="line"><a name="l00633"></a><span class="lineno">  633</span>&#160;</div><div class="line"><a name="l00642"></a><span class="lineno">  642</span>&#160;<span class="keywordtype">bool</span> <a class="code
 " href="namespaceprocess.html#a07833fb41a8b0c1f18fa5485ca8c18d4">wait</a>(<span class="keyword">const</span> <a class="code" href="structprocess_1_1UPID.html">UPID</a>&amp; pid, <span class="keyword">const</span> <a class="code" href="classDuration.html">Duration</a>&amp; duration = <a class="code" href="classSeconds.html">Seconds</a>(-1));</div><div class="line"><a name="l00643"></a><span class="lineno">  643</span>&#160;<span class="keywordtype">bool</span> <a class="code" href="namespaceprocess.html#a07833fb41a8b0c1f18fa5485ca8c18d4">wait</a>(<span class="keyword">const</span> <a class="code" href="classprocess_1_1ProcessBase.html">ProcessBase</a>&amp; process, <span class="keyword">const</span> <a class="code" href="classDuration.html">Duration</a>&amp; duration = <a class="code" href="classSeconds.html">Seconds</a>(-1));</div><div class="line"><a name="l00644"></a><span class="lineno">  644</span>&#160;<span class="keywordtype">bool</span> <a class="code" href="namespaceprocess
 .html#a07833fb41a8b0c1f18fa5485ca8c18d4">wait</a>(<span class="keyword">const</span> <a class="code" href="classprocess_1_1ProcessBase.html">ProcessBase</a>* process, <span class="keyword">const</span> <a class="code" href="classDuration.html">Duration</a>&amp; duration = <a class="code" href="classSeconds.html">Seconds</a>(-1));</div><div class="line"><a name="l00645"></a><span class="lineno">  645</span>&#160;</div><div class="line"><a name="l00646"></a><span class="lineno">  646</span>&#160;</div><div class="line"><a name="l00655"></a><span class="lineno">  655</span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespaceprocess.html#a2b0f5478fa6a52497167aa994ff600d9">post</a>(<span class="keyword">const</span> <a class="code" href="structprocess_1_1UPID.html">UPID</a>&amp; to,</div><div class="line"><a name="l00656"></a><span class="lineno">  656</span>&#160;          <span class="keyword">const</span> std::string&amp; name,</div><div class="line"><a name="l0
 0657"></a><span class="lineno">  657</span>&#160;          <span class="keyword">const</span> <span class="keywordtype">char</span>* data = <span class="keyword">nullptr</span>,</div><div class="line"><a name="l00658"></a><span class="lineno">  658</span>&#160;          <span class="keywordtype">size_t</span> length = 0);</div><div class="line"><a name="l00659"></a><span class="lineno">  659</span>&#160;</div><div class="line"><a name="l00660"></a><span class="lineno">  660</span>&#160;</div><div class="line"><a name="l00661"></a><span class="lineno">  661</span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespaceprocess.html#a2b0f5478fa6a52497167aa994ff600d9">post</a>(<span class="keyword">const</span> <a class="code" href="structprocess_1_1UPID.html">UPID</a>&amp; from,</div><div class="line"><a name="l00662"></a><span class="lineno">  662</span>&#160;          <span class="keyword">const</span> <a class="code" href="structprocess_1_1UPID.html">UPID</a>&amp;
  to,</div><div class="line"><a name="l00663"></a><span class="lineno">  663</span>&#160;          <span class="keyword">const</span> std::string&amp; name,</div><div class="line"><a name="l00664"></a><span class="lineno">  664</span>&#160;          <span class="keyword">const</span> <span class="keywordtype">char</span>* data = <span class="keyword">nullptr</span>,</div><div class="line"><a name="l00665"></a><span class="lineno">  665</span>&#160;          <span class="keywordtype">size_t</span> length = 0);</div><div class="line"><a name="l00666"></a><span class="lineno">  666</span>&#160;</div><div class="line"><a name="l00667"></a><span class="lineno">  667</span>&#160;</div><div class="line"><a name="l00671"></a><span class="lineno"><a class="line" href="namespaceprocess.html#ab170f191c9401ac8aebe6c998f037e05">  671</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespaceprocess.html#a20443908afa3212215166e26065349
 e5">terminate</a>(<span class="keyword">const</span> <a class="code" href="classprocess_1_1ProcessBase.html">ProcessBase</a>&amp; process, <span class="keywordtype">bool</span> inject)</div><div class="line"><a name="l00672"></a><span class="lineno">  672</span>&#160;{</div><div class="line"><a name="l00673"></a><span class="lineno">  673</span>&#160;  <a class="code" href="namespaceprocess.html#a20443908afa3212215166e26065349e5">terminate</a>(process.<a class="code" href="classprocess_1_1ProcessBase.html#a7ff87364baa79991901b8d73dc5c5fca">self</a>(), inject);</div><div class="line"><a name="l00674"></a><span class="lineno">  674</span>&#160;}</div><div class="line"><a name="l00675"></a><span class="lineno">  675</span>&#160;</div><div class="line"><a name="l00676"></a><span class="lineno">  676</span>&#160;</div><div class="line"><a name="l00680"></a><span class="lineno"><a class="line" href="namespaceprocess.html#ad221ec78e643363af8ef18d303a2bd62">  680</a></span>&#160;<span class
 ="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespaceprocess.html#a20443908afa3212215166e26065349e5">terminate</a>(<span class="keyword">const</span> <a class="code" href="classprocess_1_1ProcessBase.html">ProcessBase</a>* process, <span class="keywordtype">bool</span> inject)</div><div class="line"><a name="l00681"></a><span class="lineno">  681</span>&#160;{</div><div class="line"><a name="l00682"></a><span class="lineno">  682</span>&#160;  <a class="code" href="namespaceprocess.html#a20443908afa3212215166e26065349e5">terminate</a>(process-&gt;<a class="code" href="classprocess_1_1ProcessBase.html#a7ff87364baa79991901b8d73dc5c5fca">self</a>(), inject);</div><div class="line"><a name="l00683"></a><span class="lineno">  683</span>&#160;}</div><div class="line"><a name="l00684"></a><span class="lineno">  684</span>&#160;</div><div class="line"><a name="l00685"></a><span class="lineno">  685</span>&#160;</div><div class="line"><a name="l00689"
 ></a><span class="lineno"><a class="line" href="namespaceprocess.html#ae8b73cb98b07f3db5ebda5086a16ca37">  689</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="namespaceprocess.html#a07833fb41a8b0c1f18fa5485ca8c18d4">wait</a>(<span class="keyword">const</span> <a class="code" href="classprocess_1_1ProcessBase.html">ProcessBase</a>&amp; process, <span class="keyword">const</span> <a class="code" href="classDuration.html">Duration</a>&amp; duration)</div><div class="line"><a name="l00690"></a><span class="lineno">  690</span>&#160;{</div><div class="line"><a name="l00691"></a><span class="lineno">  691</span>&#160;  <span class="keywordflow">return</span> <a class="code" href="namespaceprocess.html#a07833fb41a8b0c1f18fa5485ca8c18d4">process::wait</a>(process.<a class="code" href="classprocess_1_1ProcessBase.html#a7ff87364baa79991901b8d73dc5c5fca">self</a>(), duration); <span class="comment">// Explicit to disambiguate.</sp
 an></div><div class="line"><a name="l00692"></a><span class="lineno">  692</span>&#160;}</div><div class="line"><a name="l00693"></a><span class="lineno">  693</span>&#160;</div><div class="line"><a name="l00694"></a><span class="lineno">  694</span>&#160;</div><div class="line"><a name="l00698"></a><span class="lineno"><a class="line" href="namespaceprocess.html#a40ab1ce6cd5b7a2d4aebbeae60987bb1">  698</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="namespaceprocess.html#a07833fb41a8b0c1f18fa5485ca8c18d4">wait</a>(<span class="keyword">const</span> <a class="code" href="classprocess_1_1ProcessBase.html">ProcessBase</a>* process, <span class="keyword">const</span> <a class="code" href="classDuration.html">Duration</a>&amp; duration)</div><div class="line"><a name="l00699"></a><span class="lineno">  699</span>&#160;{</div><div class="line"><a name="l00700"></a><span class="lineno">  700</span>&#160;  <span class="keyword
 flow">return</span> <a class="code" href="namespaceprocess.html#a07833fb41a8b0c1f18fa5485ca8c18d4">process::wait</a>(process-&gt;<a class="code" href="classprocess_1_1ProcessBase.html#a7ff87364baa79991901b8d73dc5c5fca">self</a>(), duration); <span class="comment">// Explicit to disambiguate.</span></div><div class="line"><a name="l00701"></a><span class="lineno">  701</span>&#160;}</div><div class="line"><a name="l00702"></a><span class="lineno">  702</span>&#160;</div><div class="line"><a name="l00703"></a><span class="lineno">  703</span>&#160;</div><div class="line"><a name="l00704"></a><span class="lineno">  704</span>&#160;<span class="comment">// Per thread process pointer.</span></div><div class="line"><a name="l00705"></a><span class="lineno">  705</span>&#160;<span class="keyword">extern</span> thread_local <a class="code" href="classprocess_1_1ProcessBase.html">ProcessBase</a>* <a class="code" href="namespaceprocess.html#a38fe32525523cce698493f5825a72a32">__process__</a>;<
 /div><div class="line"><a name="l00706"></a><span class="lineno">  706</span>&#160;</div><div class="line"><a name="l00707"></a><span class="lineno">  707</span>&#160;<span class="comment">// NOTE: Methods in this namespace should only be used in tests to</span></div><div class="line"><a name="l00708"></a><span class="lineno">  708</span>&#160;<span class="comment">// inject arbitrary events.</span></div><div class="line"><a name="l00709"></a><span class="lineno"><a class="line" href="namespaceprocess_1_1inject.html">  709</a></span>&#160;<span class="keyword">namespace </span>inject {</div><div class="line"><a name="l00710"></a><span class="lineno">  710</span>&#160;</div><div class="line"><a name="l00717"></a><span class="lineno">  717</span>&#160;<span class="keywordtype">bool</span> <a class="code" href="namespaceprocess_1_1inject.html#a17e94a83c103ebde55dfd48d9a6e4988">exited</a>(<span class="keyword">const</span> <a class="code" href="structprocess_1_1UPID.html">UPID</a>&amp; 
 from, <span class="keyword">const</span> <a class="code" href="structprocess_1_1UPID.html">UPID</a>&amp; to);</div><div class="line"><a name="l00718"></a><span class="lineno">  718</span>&#160;</div><div class="line"><a name="l00719"></a><span class="lineno">  719</span>&#160;} <span class="comment">// namespace inject {</span></div><div class="line"><a name="l00720"></a><span class="lineno">  720</span>&#160;</div><div class="line"><a name="l00721"></a><span class="lineno">  721</span>&#160;} <span class="comment">// namespace process {</span></div><div class="line"><a name="l00722"></a><span class="lineno">  722</span>&#160;</div><div class="line"><a name="l00723"></a><span class="lineno">  723</span>&#160;<span class="preprocessor">#endif // __PROCESS_PROCESS_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="libprocess_2include_2process_2process_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>&#160;<span class="comment">// Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<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>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<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>&#1
 60;<span class="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<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>&#160;<span class="comment">// distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<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>&#160;<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>&#160;<span class="comment">// limitations under the License</span></div><div class="line"><a name="l00012"></a><span class="lineno">   12</
 span>&#160;</div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="preprocessor">#ifndef __PROCESS_PROCESS_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="preprocessor">#define __PROCESS_PROCESS_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;</div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="preprocessor">#include &lt;stdint.h&gt;</span></div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="preprocessor">#include &lt;memory&gt;</span></div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;<span class="preprocessor">#include &lt;map&gt;</span></div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="p
 reprocessor">#include &lt;queue&gt;</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="preprocessor">#include &lt;vector&gt;</span></div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="address_8hpp.html">process/address.hpp</a>&gt;</span></div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="3rdparty_2libprocess_2include_2process_2authenticator_8hpp.html">process/authenticator.hpp</a>&gt;</span></div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="clock_8hpp.html">process/clock.hpp</a>&gt;</span></div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<
 span class="preprocessor">#include &lt;<a class="code" href="event_8hpp.html">process/event.hpp</a>&gt;</span></div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="3rdparty_2libprocess_2include_2process_2filter_8hpp.html">process/filter.hpp</a>&gt;</span></div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="firewall_8hpp.html">process/firewall.hpp</a>&gt;</span></div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="3rdparty_2libprocess_2include_2process_2http_8hpp.html">process/http.hpp</a>&gt;</span></div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="3rdparty_2libprocess_2include_2process_2message_8hpp.html">process/mes
 sage.hpp</a>&gt;</span></div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="mime_8hpp.html">process/mime.hpp</a>&gt;</span></div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="owned_8hpp.html">process/owned.hpp</a>&gt;</span></div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="3rdparty_2libprocess_2include_2process_2pid_8hpp.html">process/pid.hpp</a>&gt;</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>&#160;<span class="preprocessor">#include &lt;<a class="code" href="duration_8hpp.html">stout/duration.hpp</a>&gt;</span></div><div class="line"><a name="l00036"></a><span class="lineno">   36<
 /span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="hashmap_8hpp.html">stout/hashmap.hpp</a>&gt;</span></div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="lambda_8hpp.html">stout/lambda.hpp</a>&gt;</span></div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="option_8hpp.html">stout/option.hpp</a>&gt;</span></div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="synchronized_8hpp.html">stout/synchronized.hpp</a>&gt;</span></div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;</div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceprocess.html">process</a> {</div><div
  class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;</div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;<span class="comment">// Forward declaration.</span></div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;<span class="keyword">class </span>EventQueue;</div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;<span class="keyword">class </span>Gate;</div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;<span class="keyword">class </span>Logging;</div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;<span class="keyword">class </span>Sequence;</div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;</div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;<span class="keyword">namespace </span>firewall {</div><div class="line"><a name="l00050"></a><span class="lin
 eno">   50</span>&#160;</div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespaceprocess_1_1firewall.html#a99a70c4d8e775bb1692693ec278d0877">install</a>(std::vector&lt;Owned&lt;FirewallRule&gt;&gt;&amp;&amp; rules);</div><div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;</div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;} <span class="comment">// namespace firewall {</span></div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;</div><div class="line"><a name="l00072"></a><span class="lineno"><a class="line" href="classprocess_1_1ProcessBase.html">   72</a></span>&#160;<span class="keyword">class </span><a class="code" href="classprocess_1_1ProcessBase.html">ProcessBase</a> : <span class="keyword">public</span> <a class="code" href="structprocess_1_1EventConsumer.html">EventConsumer</a></div><div class
 ="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;{</div><div class="line"><a name="l00074"></a><span class="lineno">  

<TRUNCATED>

[19/50] mesos-site git commit: Updated the website built from mesos SHA: 7c9c72d.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/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 764ada5..c0da05d 100644
--- a/content/api/latest/c++/posix_2os_8hpp_source.html
+++ b/content/api/latest/c++/posix_2os_8hpp_source.html
@@ -112,7 +112,7 @@
 <div class="ttc" id="namespaceos_html_a2cc6177f60b8bd36990aab876a3c3c3f"><div class="ttname"><a href="namespaceos.html#a2cc6177f60b8bd36990aab876a3c3c3f">os::setctty</a></div><div class="ttdeci">Try&lt; Nothing &gt; setctty(int fd)</div><div class="ttdef"><b>Definition:</b> os.hpp:464</div></div>
 <div class="ttc" id="classOption_html_a21358442c0fac1cc978a67a9a9089a79"><div class="ttname"><a href="classOption.html#a21358442c0fac1cc978a67a9a9089a79">Option::get</a></div><div class="ttdeci">const T &amp; get() const &amp;</div><div class="ttdef"><b>Definition:</b> option.hpp:118</div></div>
 <div class="ttc" id="namespaceos_html_add69634db977768c56f0367b4bb03cd5"><div class="ttname"><a href="namespaceos.html#add69634db977768c56f0367b4bb03cd5">os::getenv</a></div><div class="ttdeci">Option&lt; std::string &gt; getenv(const std::string &amp;key)</div><div class="ttdef"><b>Definition:</b> getenv.hpp:29</div></div>
-<div class="ttc" id="namespaceos_html_aede9f61dcb4b7d1f276302a7bce37446"><div class="ttname"><a href="namespaceos.html#aede9f61dcb4b7d1f276302a7bce37446">os::random</a></div><div class="ttdeci">int random()</div><div class="ttdef"><b>Definition:</b> os.hpp:550</div></div>
+<div class="ttc" id="namespaceos_html_aede9f61dcb4b7d1f276302a7bce37446"><div class="ttname"><a href="namespaceos.html#aede9f61dcb4b7d1f276302a7bce37446">os::random</a></div><div class="ttdeci">int random()</div><div class="ttdef"><b>Definition:</b> os.hpp:580</div></div>
 <div class="ttc" id="namespaceos_html_a079aa1b108c567735620a14ea2a2e506"><div class="ttname"><a href="namespaceos.html#a079aa1b108c567735620a14ea2a2e506">os::release</a></div><div class="ttdeci">Try&lt; Version &gt; release()</div><div class="ttdef"><b>Definition:</b> os.hpp:399</div></div>
 <div class="ttc" id="classDuration_html_a31ebb8d92dc93914cb830d70753d802b"><div class="ttname"><a href="classDuration.html#a31ebb8d92dc93914cb830d70753d802b">Duration::secs</a></div><div class="ttdeci">double secs() const </div><div class="ttdef"><b>Definition:</b> duration.hpp:49</div></div>
 <div class="ttc" id="namespaceos_html_a48c86262928f59c5c54d0cb0012e2aba"><div class="ttname"><a href="namespaceos.html#a48c86262928f59c5c54d0cb0012e2aba">os::waitpid</a></div><div class="ttdeci">Result&lt; pid_t &gt; waitpid(pid_t pid, int *status, int options)</div><div class="ttdef"><b>Definition:</b> os.hpp:141</div></div>
@@ -147,7 +147,7 @@
 <div class="ttc" id="namespaceos_html_a788e763662cf01a30bcd06baa95332bb"><div class="ttname"><a href="namespaceos.html#a788e763662cf01a30bcd06baa95332bb">os::setWindowSize</a></div><div class="ttdeci">Try&lt; Nothing &gt; setWindowSize(int fd, unsigned short rows, unsigned short columns)</div><div class="ttdef"><b>Definition:</b> os.hpp:476</div></div>
 <div class="ttc" id="3rdparty_2stout_2include_2stout_2os_2raw_2environment_8hpp_html"><div class="ttname"><a href="3rdparty_2stout_2include_2stout_2os_2raw_2environment_8hpp.html">environment.hpp</a></div></div>
 <div class="ttc" id="structos_1_1UTSInfo_html"><div class="ttname"><a href="structos_1_1UTSInfo.html">os::UTSInfo</a></div><div class="ttdef"><b>Definition:</b> os.hpp:44</div></div>
-<div class="ttc" id="namespaceos_html_a5e0295f0e3bae2bd29d86803f9293b5d"><div class="ttname"><a href="namespaceos.html#a5e0295f0e3bae2bd29d86803f9293b5d">os::gmtime_r</a></div><div class="ttdeci">tm * gmtime_r(const time_t *timep, tm *result)</div><div class="ttdef"><b>Definition:</b> os.hpp:401</div></div>
+<div class="ttc" id="namespaceos_html_a5e0295f0e3bae2bd29d86803f9293b5d"><div class="ttname"><a href="namespaceos.html#a5e0295f0e3bae2bd29d86803f9293b5d">os::gmtime_r</a></div><div class="ttdeci">tm * gmtime_r(const time_t *timep, tm *result)</div><div class="ttdef"><b>Definition:</b> os.hpp:431</div></div>
 <div class="ttc" id="structos_1_1Load_html_ac65d8819bbf8201cfa6975d853061e93"><div class="ttname"><a href="structos_1_1Load.html#ac65d8819bbf8201cfa6975d853061e93">os::Load::one</a></div><div class="ttdeci">double one</div><div class="ttdef"><b>Definition:</b> os.hpp:26</div></div>
 <div class="ttc" id="namespaceos_html_a07a766e0355221b949e5fe6fdfca63f2"><div class="ttname"><a href="namespaceos.html#a07a766e0355221b949e5fe6fdfca63f2">os::ptsname</a></div><div class="ttdeci">Try&lt; std::string &gt; ptsname(int master)</div><div class="ttdef"><b>Definition:</b> os.hpp:447</div></div>
 <div class="ttc" id="namespaceos_1_1raw_html_aad2bd3acb3ca09c75a1a1db58075f9f4"><div class="ttname"><a href="namespaceos_1_1raw.html#aad2bd3acb3ca09c75a1a1db58075f9f4">os::raw::environment</a></div><div class="ttdeci">char ** environment()</div><div class="ttdef"><b>Definition:</b> environment.hpp:66</div></div>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/rwlock_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/rwlock_8hpp_source.html b/content/api/latest/c++/rwlock_8hpp_source.html
index 076f544..67d4fd1 100644
--- a/content/api/latest/c++/rwlock_8hpp_source.html
+++ b/content/api/latest/c++/rwlock_8hpp_source.html
@@ -52,7 +52,7 @@
 <div class="title">rwlock.hpp</div>  </div>
 </div><!--header-->
 <div class="contents">
-<a href="rwlock_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>&#160;<span class="comment">// Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<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>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<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">//</sp
 an></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<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>&#160;<span class="comment">// distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<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>&#160;<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>&#160;<span class="comment">// limitations under the License</span></div><div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;</div><div class="li
 ne"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="preprocessor">#ifndef __PROCESS_RWMUTEX_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="preprocessor">#define __PROCESS_RWMUTEX_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;</div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="preprocessor">#include &lt;atomic&gt;</span></div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="preprocessor">#include &lt;memory&gt;</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="preprocessor">#include &lt;queue&gt;</span></div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="preprocessor">#include &lt;<a cl
 ass="code" href="future_8hpp.html">process/future.hpp</a>&gt;</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="owned_8hpp.html">process/owned.hpp</a>&gt;</span></div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="nothing_8hpp.html">stout/nothing.hpp</a>&gt;</span></div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="synchronized_8hpp.html">stout/synchronized.hpp</a>&gt;</span></div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;</div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<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>&#160;</div><div class="line"><a name="l00036"></a><span class="lineno"><a class="line" href="classprocess_1_1ReadWriteLock.html">   36</a></span>&#160;<span class="keyword">class </span><a class="code" href="classprocess_1_1ReadWriteLock.html">ReadWriteLock</a></div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;{</div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="classprocess_1_1ReadWriteLock.html#a2c1a84b19cb55c94833a0072bc2de379">   39</a></span>&#160;  <a class="code" href="classprocess_1_1ReadWriteLock.html#a2c1a84b19cb55c94833a0072bc2de379">ReadWriteLock</a>() : data(new Data()) {}</div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;</div><div class="line"><a name="l
 00041"></a><span class="lineno">   41</span>&#160;  <span class="comment">// TODO(bmahler): Consider returning a &#39;Locked&#39; object in the</span></div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;  <span class="comment">// future as the mechanism for unlocking, rather than exposing</span></div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;  <span class="comment">// unlocking functions for all to call.</span></div><div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="classprocess_1_1ReadWriteLock.html#af45c888bb43a25164ca4f9eacfbf139c">   44</a></span>&#160;  <a class="code" href="classprocess_1_1Future.html">Future&lt;Nothing&gt;</a> <a class="code" href="classprocess_1_1ReadWriteLock.html#af45c888bb43a25164ca4f9eacfbf139c">write_lock</a>()</div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;  {</div><div class="line"><a name="l00046"></a><span class="line
 no">   46</span>&#160;    <a class="code" href="classprocess_1_1Future.html">Future&lt;Nothing&gt;</a> future = <a class="code" href="structNothing.html">Nothing</a>();</div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;</div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;    <span class="keyword">synchronized</span> (data-&gt;lock) {</div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;      <span class="keywordflow">if</span> (!data-&gt;write_locked &amp;&amp; data-&gt;read_locked == 0u) {</div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;        data-&gt;write_locked = <span class="keyword">true</span>;</div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;      } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;        Waiter w{<a class="code" href="name
 spaceprocess_1_1io.html#ab005316d71b45c5b05de0a6234c6f8fc">Waiter::WRITE</a>};</div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;        future = w.promise.future();</div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;        data-&gt;waiters.push(std::move(w));</div><div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;      }</div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;    }</div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;</div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;    <span class="keywordflow">return</span> future;</div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;  }</div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;</div><div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="classprocess_
 1_1ReadWriteLock.html#af09e2143c4590ce6417b98e5db62a5c7">   61</a></span>&#160;  <span class="keywordtype">void</span> <a class="code" href="classprocess_1_1ReadWriteLock.html#af09e2143c4590ce6417b98e5db62a5c7">write_unlock</a>()</div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;  {</div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;    <span class="comment">// NOTE: We need to satisfy the waiter(s) futures outside the</span></div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;    <span class="comment">// critical section because it might trigger callbacks which</span></div><div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;    <span class="comment">// try to reacquire a read or write lock.</span></div><div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;    std::queue&lt;Waiter&gt; unblocked;</div><div class="line"><a name="l00067"></a>
 <span class="lineno">   67</span>&#160;</div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;    <span class="keyword">synchronized</span> (data-&gt;lock) {</div><div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;      CHECK(data-&gt;write_locked);</div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;      CHECK_EQ(data-&gt;read_locked, 0u);</div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;</div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;      data-&gt;write_locked = <span class="keyword">false</span>;</div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;</div><div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;      <span class="keywordflow">if</span> (!data-&gt;waiters.empty()) {</div><div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;        <sp
 an class="keywordflow">switch</span> (data-&gt;waiters.front().type) {</div><div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;          <span class="keywordflow">case</span> <a class="code" href="namespaceprocess_1_1io.html#aca1f059ca9f0d7360631c621debeb879">Waiter::READ</a>:</div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;            <span class="comment">// Dequeue the group of readers at the front.</span></div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;            <span class="keywordflow">while</span> (!data-&gt;waiters.empty() &amp;&amp;</div><div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;                   data-&gt;waiters.front().type == <a class="code" href="namespaceprocess_1_1io.html#aca1f059ca9f0d7360631c621debeb879">Waiter::READ</a>) {</div><div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;              unblocked.pus
 h(std::move(data-&gt;waiters.front()));</div><div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;              data-&gt;waiters.pop();</div><div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;            }</div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;</div><div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;            data-&gt;read_locked = unblocked.size();</div><div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;</div><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;            <span class="keywordflow">break</span>;</div><div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;</div><div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;          <span class="keywordflow">case</span> <a class="code" href="namespaceprocess_1_1io.html#ab005316d71b45c5b05de0a6234c6f8fc">
 Waiter::WRITE</a>:</div><div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;            unblocked.push(std::move(data-&gt;waiters.front()));</div><div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;            data-&gt;waiters.pop();</div><div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;            data-&gt;write_locked = <span class="keyword">true</span>;</div><div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;</div><div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;            CHECK_EQ(data-&gt;read_locked, 0u);</div><div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;</div><div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;            <span class="keywordflow">break</span>;</div><div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;          }</div><div class="line"><a na
 me="l00097"></a><span class="lineno">   97</span>&#160;      }</div><div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;    }</div><div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;</div><div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;    <span class="keywordflow">while</span> (!unblocked.empty()) {</div><div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;      unblocked.front().promise.set(<a class="code" href="structNothing.html">Nothing</a>());</div><div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;      unblocked.pop();</div><div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;    }</div><div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;  }</div><div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;</div><div class="line"><a name="l00106"></a><span class="lineno">  10
 6</span>&#160;  <span class="comment">// TODO(bmahler): Consider returning a &#39;Locked&#39; object in the</span></div><div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;  <span class="comment">// future as the mechanism for unlocking, rather than exposing</span></div><div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;  <span class="comment">// unlocking functions for all to call.</span></div><div class="line"><a name="l00109"></a><span class="lineno"><a class="line" href="classprocess_1_1ReadWriteLock.html#a29e6aba787b76777a262a9bd90072b4d">  109</a></span>&#160;  <a class="code" href="classprocess_1_1Future.html">Future&lt;Nothing&gt;</a> <a class="code" href="classprocess_1_1ReadWriteLock.html#a29e6aba787b76777a262a9bd90072b4d">read_lock</a>()</div><div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;  {</div><div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;    <a class="c
 ode" href="classprocess_1_1Future.html">Future&lt;Nothing&gt;</a> future = <a class="code" href="structNothing.html">Nothing</a>();</div><div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;</div><div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;    <span class="keyword">synchronized</span> (data-&gt;lock) {</div><div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;      <span class="keywordflow">if</span> (!data-&gt;write_locked &amp;&amp; data-&gt;waiters.empty()) {</div><div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;        data-&gt;read_locked++;</div><div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;      } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;        Waiter w{<a class="code" href="namespaceprocess_1_1io.html#aca1f059ca9f0d7360631c621debeb879">Waiter::READ</a
 >};</div><div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;        future = w.promise.future();</div><div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;        data-&gt;waiters.push(std::move(w));</div><div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;      }</div><div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;    }</div><div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;</div><div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;    <span class="keywordflow">return</span> future;</div><div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;  }</div><div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;</div><div class="line"><a name="l00126"></a><span class="lineno"><a class="line" href="classprocess_1_1ReadWriteLock.html#a841b5c49017a94a710df66a04f8c498e">  126</a></span>&#
 160;  <span class="keywordtype">void</span> <a class="code" href="classprocess_1_1ReadWriteLock.html#a841b5c49017a94a710df66a04f8c498e">read_unlock</a>()</div><div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;  {</div><div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;    <span class="comment">// NOTE: We need to satisfy the waiter future outside the</span></div><div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;    <span class="comment">// critical section because it might trigger callbacks which</span></div><div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;    <span class="comment">// try to reacquire a read or write lock.</span></div><div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;    <a class="code" href="classOption.html">Option&lt;Waiter&gt;</a> waiter;</div><div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;</di
 v><div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;    <span class="keyword">synchronized</span> (data-&gt;lock) {</div><div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;      CHECK(!data-&gt;write_locked);</div><div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;      CHECK_GT(data-&gt;read_locked, 0u);</div><div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;</div><div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;      data-&gt;read_locked--;</div><div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;</div><div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;      <span class="keywordflow">if</span> (data-&gt;read_locked == 0u &amp;&amp; !data-&gt;waiters.empty()) {</div><div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;        CHECK_EQ(data-&gt;waiters.front().type, <a 
 class="code" href="namespaceprocess_1_1io.html#ab005316d71b45c5b05de0a6234c6f8fc">Waiter::WRITE</a>);</div><div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;</div><div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;        waiter = std::move(data-&gt;waiters.front());</div><div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;        data-&gt;waiters.pop();</div><div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;        data-&gt;write_locked = <span class="keyword">true</span>;</div><div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;      }</div><div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;    }</div><div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;</div><div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;    <span class="keywordflow">if</span> (waiter.<a class="code
 " href="classOption.html#a4e3bf8416d95246f43c91f1b5c309323">isSome</a>()) {</div><div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;      waiter-&gt;promise.set(<a class="code" href="structNothing.html">Nothing</a>());</div><div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;    }</div><div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;  }</div><div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;</div><div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;  <span class="keyword">struct </span>Waiter</div><div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;  {</div><div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;    <span class="keyword">enum</span> { READ, WRITE } <a class="code" hr
 ef="namespacemesos_1_1internal_1_1fs.html#a2343e2642db514496ba8380776487fba">type</a>;</div><div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;    <a class="code" href="classprocess_1_1Promise.html">Promise&lt;Nothing&gt;</a> <a class="code" href="namespacemesos_1_1internal_1_1log_1_1protocol.html#a3b1f8bd7b18c51af9d1f58842950b545">promise</a>;</div><div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;  };</div><div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;</div><div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;  <span class="keyword">struct </span>Data</div><div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;  {</div><div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;    Data() : read_locked(0), write_locked(<span class="keyword">false</span>) {}</div><div class="line"><a name="l00163"></a><span class="lineno">  163</sp
 an>&#160;</div><div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;    ~Data()</div><div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;    {</div><div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;      <span class="comment">// TODO(zhitao): Fail promises?</span></div><div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;    }</div><div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;</div><div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;    <span class="comment">// The state of the lock can be either:</span></div><div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;    <span class="comment">//   (1) Unlocked: an incoming read or write grabs the lock.</span></div><div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;    <span class="comment">//</span></div><div class="line"><a na
 me="l00172"></a><span class="lineno">  172</span>&#160;    <span class="comment">//   (2) Read locked (by one or more readers): an incoming write</span></div><div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;    <span class="comment">//       will queue in the waiters. An incoming read will proceed</span></div><div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;    <span class="comment">//       if no one is waiting, otherwise it will queue.</span></div><div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;    <span class="comment">//</span></div><div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;    <span class="comment">//   (3) Write locked: incoming reads and writes will queue.</span></div><div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;</div><div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;    <span class="keywordtyp
 e">size_t</span> read_locked;</div><div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;    <span class="keywordtype">bool</span> write_locked;</div><div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;    std::queue&lt;Waiter&gt; waiters;</div><div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;</div><div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160;    <span class="comment">// Rather than use a process to serialize access to the</span></div><div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;    <span class="comment">// internal data we use a &#39;std::atomic_flag&#39;.</span></div><div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;    std::atomic_flag lock = ATOMIC_FLAG_INIT;</div><div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;  };</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>&#160;  std::shared_ptr&lt;Data&gt; data;</div><div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;};</div><div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160;</div><div class="line"><a name="l00190"></a><span class="lineno">  190</span>&#160;} <span class="comment">// namespace process {</span></div><div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160;</div><div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;<span class="preprocessor">#endif // __PROCESS_RWMUTEX_HPP__</span></div><div class="ttc" id="namespaceprocess_1_1io_html_aca1f059ca9f0d7360631c621debeb879"><div class="ttname"><a href="namespaceprocess_1_1io.html#aca1f059ca9f0d7360631c621debeb879">process::io::READ</a></div><div class="ttdeci">const short READ</div><div class="ttdoc">A possible event while polling. </div><div clas
 s="ttdef"><b>Definition:</b> io.hpp:34</div></div>
+<a href="rwlock_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>&#160;<span class="comment">// Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<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>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<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">//</sp
 an></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<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>&#160;<span class="comment">// distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<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>&#160;<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>&#160;<span class="comment">// limitations under the License</span></div><div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;</div><div class="li
 ne"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="preprocessor">#ifndef __PROCESS_RWMUTEX_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="preprocessor">#define __PROCESS_RWMUTEX_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;</div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="preprocessor">#include &lt;atomic&gt;</span></div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="preprocessor">#include &lt;memory&gt;</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="preprocessor">#include &lt;queue&gt;</span></div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="preprocessor">#include &lt;<a cl
 ass="code" href="future_8hpp.html">process/future.hpp</a>&gt;</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="owned_8hpp.html">process/owned.hpp</a>&gt;</span></div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="nothing_8hpp.html">stout/nothing.hpp</a>&gt;</span></div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="synchronized_8hpp.html">stout/synchronized.hpp</a>&gt;</span></div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;</div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<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>&#160;</div><div class="line"><a name="l00036"></a><span class="lineno"><a class="line" href="classprocess_1_1ReadWriteLock.html">   36</a></span>&#160;<span class="keyword">class </span><a class="code" href="classprocess_1_1ReadWriteLock.html">ReadWriteLock</a></div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;{</div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="classprocess_1_1ReadWriteLock.html#a2c1a84b19cb55c94833a0072bc2de379">   39</a></span>&#160;  <a class="code" href="classprocess_1_1ReadWriteLock.html#a2c1a84b19cb55c94833a0072bc2de379">ReadWriteLock</a>() : data(new Data()) {}</div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;</div><div class="line"><a name="l
 00041"></a><span class="lineno">   41</span>&#160;  <span class="comment">// TODO(bmahler): Consider returning a &#39;Locked&#39; object in the</span></div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;  <span class="comment">// future as the mechanism for unlocking, rather than exposing</span></div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;  <span class="comment">// unlocking functions for all to call.</span></div><div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="classprocess_1_1ReadWriteLock.html#af45c888bb43a25164ca4f9eacfbf139c">   44</a></span>&#160;  <a class="code" href="classprocess_1_1Future.html">Future&lt;Nothing&gt;</a> <a class="code" href="classprocess_1_1ReadWriteLock.html#af45c888bb43a25164ca4f9eacfbf139c">write_lock</a>()</div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;  {</div><div class="line"><a name="l00046"></a><span class="line
 no">   46</span>&#160;    <a class="code" href="classprocess_1_1Future.html">Future&lt;Nothing&gt;</a> future = <a class="code" href="structNothing.html">Nothing</a>();</div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;</div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;    <span class="keyword">synchronized</span> (data-&gt;lock) {</div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;      <span class="keywordflow">if</span> (!data-&gt;write_locked &amp;&amp; data-&gt;read_locked == 0u) {</div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;        data-&gt;write_locked = <span class="keyword">true</span>;</div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;      } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;        Waiter w{<a class="code" href="name
 spaceprocess_1_1io.html#ab005316d71b45c5b05de0a6234c6f8fc">Waiter::WRITE</a>};</div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;        future = w.promise.future();</div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;        data-&gt;waiters.push(std::move(w));</div><div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;      }</div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;    }</div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;</div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;    <span class="keywordflow">return</span> future;</div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;  }</div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;</div><div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="classprocess_
 1_1ReadWriteLock.html#af09e2143c4590ce6417b98e5db62a5c7">   61</a></span>&#160;  <span class="keywordtype">void</span> <a class="code" href="classprocess_1_1ReadWriteLock.html#af09e2143c4590ce6417b98e5db62a5c7">write_unlock</a>()</div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;  {</div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;    <span class="comment">// NOTE: We need to satisfy the waiter(s) futures outside the</span></div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;    <span class="comment">// critical section because it might trigger callbacks which</span></div><div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;    <span class="comment">// try to reacquire a read or write lock.</span></div><div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;    std::queue&lt;Waiter&gt; unblocked;</div><div class="line"><a name="l00067"></a>
 <span class="lineno">   67</span>&#160;</div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;    <span class="keyword">synchronized</span> (data-&gt;lock) {</div><div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;      CHECK(data-&gt;write_locked);</div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;      CHECK_EQ(data-&gt;read_locked, 0u);</div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;</div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;      data-&gt;write_locked = <span class="keyword">false</span>;</div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;</div><div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;      <span class="keywordflow">if</span> (!data-&gt;waiters.empty()) {</div><div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;        <sp
 an class="keywordflow">switch</span> (data-&gt;waiters.front().type) {</div><div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;          <span class="keywordflow">case</span> <a class="code" href="namespaceprocess_1_1io.html#aca1f059ca9f0d7360631c621debeb879">Waiter::READ</a>:</div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;            <span class="comment">// Dequeue the group of readers at the front.</span></div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;            <span class="keywordflow">while</span> (!data-&gt;waiters.empty() &amp;&amp;</div><div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;                   data-&gt;waiters.front().type == <a class="code" href="namespaceprocess_1_1io.html#aca1f059ca9f0d7360631c621debeb879">Waiter::READ</a>) {</div><div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;              unblocked.pus
 h(std::move(data-&gt;waiters.front()));</div><div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;              data-&gt;waiters.pop();</div><div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;            }</div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;</div><div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;            data-&gt;read_locked = unblocked.size();</div><div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;</div><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;            <span class="keywordflow">break</span>;</div><div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;</div><div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;          <span class="keywordflow">case</span> <a class="code" href="namespaceprocess_1_1io.html#ab005316d71b45c5b05de0a6234c6f8fc">
 Waiter::WRITE</a>:</div><div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;            unblocked.push(std::move(data-&gt;waiters.front()));</div><div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;            data-&gt;waiters.pop();</div><div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;            data-&gt;write_locked = <span class="keyword">true</span>;</div><div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;</div><div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;            CHECK_EQ(data-&gt;read_locked, 0u);</div><div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;</div><div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;            <span class="keywordflow">break</span>;</div><div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;          }</div><div class="line"><a na
 me="l00097"></a><span class="lineno">   97</span>&#160;      }</div><div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;    }</div><div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;</div><div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;    <span class="keywordflow">while</span> (!unblocked.empty()) {</div><div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;      unblocked.front().promise.set(<a class="code" href="structNothing.html">Nothing</a>());</div><div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;      unblocked.pop();</div><div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;    }</div><div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;  }</div><div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;</div><div class="line"><a name="l00106"></a><span class="lineno">  10
 6</span>&#160;  <span class="comment">// TODO(bmahler): Consider returning a &#39;Locked&#39; object in the</span></div><div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;  <span class="comment">// future as the mechanism for unlocking, rather than exposing</span></div><div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;  <span class="comment">// unlocking functions for all to call.</span></div><div class="line"><a name="l00109"></a><span class="lineno"><a class="line" href="classprocess_1_1ReadWriteLock.html#a29e6aba787b76777a262a9bd90072b4d">  109</a></span>&#160;  <a class="code" href="classprocess_1_1Future.html">Future&lt;Nothing&gt;</a> <a class="code" href="classprocess_1_1ReadWriteLock.html#a29e6aba787b76777a262a9bd90072b4d">read_lock</a>()</div><div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;  {</div><div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;    <a class="c
 ode" href="classprocess_1_1Future.html">Future&lt;Nothing&gt;</a> future = <a class="code" href="structNothing.html">Nothing</a>();</div><div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;</div><div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;    <span class="keyword">synchronized</span> (data-&gt;lock) {</div><div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;      <span class="keywordflow">if</span> (!data-&gt;write_locked &amp;&amp; data-&gt;waiters.empty()) {</div><div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;        data-&gt;read_locked++;</div><div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;      } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;        Waiter w{<a class="code" href="namespaceprocess_1_1io.html#aca1f059ca9f0d7360631c621debeb879">Waiter::READ</a
 >};</div><div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;        future = w.promise.future();</div><div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;        data-&gt;waiters.push(std::move(w));</div><div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;      }</div><div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;    }</div><div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;</div><div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;    <span class="keywordflow">return</span> future;</div><div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;  }</div><div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;</div><div class="line"><a name="l00126"></a><span class="lineno"><a class="line" href="classprocess_1_1ReadWriteLock.html#a841b5c49017a94a710df66a04f8c498e">  126</a></span>&#
 160;  <span class="keywordtype">void</span> <a class="code" href="classprocess_1_1ReadWriteLock.html#a841b5c49017a94a710df66a04f8c498e">read_unlock</a>()</div><div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;  {</div><div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;    <span class="comment">// NOTE: We need to satisfy the waiter future outside the</span></div><div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;    <span class="comment">// critical section because it might trigger callbacks which</span></div><div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;    <span class="comment">// try to reacquire a read or write lock.</span></div><div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;    <a class="code" href="classOption.html">Option&lt;Waiter&gt;</a> waiter;</div><div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;</di
 v><div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;    <span class="keyword">synchronized</span> (data-&gt;lock) {</div><div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;      CHECK(!data-&gt;write_locked);</div><div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;      CHECK_GT(data-&gt;read_locked, 0u);</div><div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;</div><div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;      data-&gt;read_locked--;</div><div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;</div><div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;      <span class="keywordflow">if</span> (data-&gt;read_locked == 0u &amp;&amp; !data-&gt;waiters.empty()) {</div><div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;        CHECK_EQ(data-&gt;waiters.front().type, <a 
 class="code" href="namespaceprocess_1_1io.html#ab005316d71b45c5b05de0a6234c6f8fc">Waiter::WRITE</a>);</div><div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;</div><div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;        waiter = std::move(data-&gt;waiters.front());</div><div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;        data-&gt;waiters.pop();</div><div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;        data-&gt;write_locked = <span class="keyword">true</span>;</div><div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;      }</div><div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;    }</div><div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;</div><div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;    <span class="keywordflow">if</span> (waiter.<a class="code
 " href="classOption.html#a4e3bf8416d95246f43c91f1b5c309323">isSome</a>()) {</div><div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;      waiter-&gt;promise.set(<a class="code" href="structNothing.html">Nothing</a>());</div><div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;    }</div><div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;  }</div><div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;</div><div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;  <span class="keyword">struct </span>Waiter</div><div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;  {</div><div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;    <span class="keyword">enum</span> { READ, WRITE } <a class="code" hr
 ef="namespacemesos_1_1internal_1_1fs.html#a2343e2642db514496ba8380776487fba">type</a>;</div><div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;    <a class="code" href="classprocess_1_1Promise.html">Promise&lt;Nothing&gt;</a> <a class="code" href="namespacemesos_1_1internal_1_1log_1_1protocol.html#a3b1f8bd7b18c51af9d1f58842950b545">promise</a>;</div><div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;  };</div><div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;</div><div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;  <span class="keyword">struct </span>Data</div><div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;  {</div><div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;    Data() : read_locked(0), write_locked(<span class="keyword">false</span>) {}</div><div class="line"><a name="l00163"></a><span class="lineno">  163</sp
 an>&#160;</div><div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;    ~Data()</div><div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;    {</div><div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;      <span class="comment">// TODO(zhitao): Fail promises?</span></div><div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;    }</div><div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;</div><div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;    <span class="comment">// The state of the lock can be either:</span></div><div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;    <span class="comment">//   (1) Unlocked: an incoming read or write grabs the lock.</span></div><div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;    <span class="comment">//</span></div><div class="line"><a na
 me="l00172"></a><span class="lineno">  172</span>&#160;    <span class="comment">//   (2) Read locked (by one or more readers): an incoming write</span></div><div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;    <span class="comment">//       will queue in the waiters. An incoming read will proceed</span></div><div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;    <span class="comment">//       if no one is waiting, otherwise it will queue.</span></div><div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;    <span class="comment">//</span></div><div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;    <span class="comment">//   (3) Write locked: incoming reads and writes will queue.</span></div><div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;</div><div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;    <span class="keywordtyp
 e">size_t</span> read_locked;</div><div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;    <span class="keywordtype">bool</span> write_locked;</div><div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;    std::queue&lt;Waiter&gt; waiters;</div><div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;</div><div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160;    <span class="comment">// Rather than use a process to serialize access to the</span></div><div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;    <span class="comment">// internal data we use a &#39;std::atomic_flag&#39;.</span></div><div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;    std::atomic_flag lock = ATOMIC_FLAG_INIT;</div><div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;  };</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>&#160;  std::shared_ptr&lt;Data&gt; data;</div><div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;};</div><div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160;</div><div class="line"><a name="l00190"></a><span class="lineno">  190</span>&#160;} <span class="comment">// namespace process {</span></div><div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160;</div><div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;<span class="preprocessor">#endif // __PROCESS_RWMUTEX_HPP__</span></div><div class="ttc" id="namespaceprocess_1_1io_html_aca1f059ca9f0d7360631c621debeb879"><div class="ttname"><a href="namespaceprocess_1_1io.html#aca1f059ca9f0d7360631c621debeb879">process::io::READ</a></div><div class="ttdeci">const short READ</div><div class="ttdoc">A possible event while polling. </div><div clas
 s="ttdef"><b>Definition:</b> io.hpp:35</div></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="classprocess_1_1ReadWriteLock_html_a29e6aba787b76777a262a9bd90072b4d"><div class="ttname"><a href="classprocess_1_1ReadWriteLock.html#a29e6aba787b76777a262a9bd90072b4d">process::ReadWriteLock::read_lock</a></div><div class="ttdeci">Future&lt; Nothing &gt; read_lock()</div><div class="ttdef"><b>Definition:</b> rwlock.hpp:109</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>
@@ -62,7 +62,7 @@
 <div class="ttc" id="classOption_html_a4e3bf8416d95246f43c91f1b5c309323"><div class="ttname"><a href="classOption.html#a4e3bf8416d95246f43c91f1b5c309323">Option::isSome</a></div><div class="ttdeci">bool isSome() const </div><div class="ttdef"><b>Definition:</b> option.hpp:115</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="classprocess_1_1ReadWriteLock_html_af45c888bb43a25164ca4f9eacfbf139c"><div class="ttname"><a href="classprocess_1_1ReadWriteLock.html#af45c888bb43a25164ca4f9eacfbf139c">process::ReadWriteLock::write_lock</a></div><div class="ttdeci">Future&lt; Nothing &gt; write_lock()</div><div class="ttdef"><b>Definition:</b> rwlock.hpp:44</div></div>
-<div class="ttc" id="namespaceprocess_1_1io_html_ab005316d71b45c5b05de0a6234c6f8fc"><div class="ttname"><a href="namespaceprocess_1_1io.html#ab005316d71b45c5b05de0a6234c6f8fc">process::io::WRITE</a></div><div class="ttdeci">const short WRITE</div><div class="ttdoc">A possible event while polling. </div><div class="ttdef"><b>Definition:</b> io.hpp:39</div></div>
+<div class="ttc" id="namespaceprocess_1_1io_html_ab005316d71b45c5b05de0a6234c6f8fc"><div class="ttname"><a href="namespaceprocess_1_1io.html#ab005316d71b45c5b05de0a6234c6f8fc">process::io::WRITE</a></div><div class="ttdeci">const short WRITE</div><div class="ttdoc">A possible event while polling. </div><div class="ttdef"><b>Definition:</b> io.hpp:40</div></div>
 <div class="ttc" id="classprocess_1_1Promise_html"><div class="ttname"><a href="classprocess_1_1Promise.html">process::Promise&lt; Nothing &gt;</a></div></div>
 <div class="ttc" id="namespacemesos_1_1internal_1_1log_1_1protocol_html_a3b1f8bd7b18c51af9d1f58842950b545"><div class="ttname"><a href="namespacemesos_1_1internal_1_1log_1_1protocol.html#a3b1f8bd7b18c51af9d1f58842950b545">mesos::internal::log::protocol::promise</a></div><div class="ttdeci">Protocol&lt; PromiseRequest, PromiseResponse &gt; promise</div></div>
 <div class="ttc" id="future_8hpp_html"><div class="ttname"><a href="future_8hpp.html">future.hpp</a></div></div>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/sandbox_8hpp.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/sandbox_8hpp.html b/content/api/latest/c++/sandbox_8hpp.html
index 492e79d..774b813 100644
--- a/content/api/latest/c++/sandbox_8hpp.html
+++ b/content/api/latest/c++/sandbox_8hpp.html
@@ -63,7 +63,7 @@
 <code>#include &lt;<a class="el" href="include_2mesos_2slave_2containerizer_8hpp_source.html">mesos/slave/containerizer.hpp</a>&gt;</code><br />
 <code>#include &lt;<a class="el" href="future_8hpp_source.html">process/future.hpp</a>&gt;</code><br />
 <code>#include &lt;<a class="el" href="owned_8hpp_source.html">process/owned.hpp</a>&gt;</code><br />
-<code>#include &lt;<a class="el" href="subprocess_8hpp_source.html">process/subprocess.hpp</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="include_2process_2subprocess_8hpp_source.html">process/subprocess.hpp</a>&gt;</code><br />
 <code>#include &lt;<a class="el" href="try_8hpp_source.html">stout/try.hpp</a>&gt;</code><br />
 <code>#include &lt;<a class="el" href="nothing_8hpp_source.html">stout/nothing.hpp</a>&gt;</code><br />
 <code>#include &lt;<a class="el" href="option_8hpp_source.html">stout/option.hpp</a>&gt;</code><br />

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/sandbox_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/sandbox_8hpp_source.html b/content/api/latest/c++/sandbox_8hpp_source.html
index 5d89c2c..e55eddc 100644
--- a/content/api/latest/c++/sandbox_8hpp_source.html
+++ b/content/api/latest/c++/sandbox_8hpp_source.html
@@ -52,10 +52,10 @@
 <div class="title">sandbox.hpp</div>  </div>
 </div><!--header-->
 <div class="contents">
-<a href="sandbox_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>&#160;<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>&#160;<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>&#160;<span class="comment">// distributed with this work for additional information</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<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>&#160;<span class="comment">// to you under the Apache License, Version 2.0 (the</span></div><div class="line"><a name="l00006"></a><span cla
 ss="lineno">    6</span>&#160;<span class="comment">// &quot;License&quot;); you may not use this file except in compliance</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<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>&#160;<span class="comment">// distribut
 ed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<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>&#160;<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>&#160;<span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;</div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="preprocessor">#ifndef __SLAVE_CONTAINER_LOGGERS_SANDBOX_HPP__</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="preprocessor">#define __SLAVE_CONTAINER_LOGGERS_SANDBOX_HPP__
 </span></div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="preprocessor">#include &lt;map&gt;</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span></div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="preprocessor">#include &lt;vector&gt;</span></div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;</div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="include_2mesos_2mesos_8hpp.html">mesos/mesos.hpp</a>&gt;</span></div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;</div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<span class="preprocessor
 ">#include &lt;<a class="code" href="slave_2container__logger_8hpp.html">mesos/slave/container_logger.hpp</a>&gt;</span></div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="include_2mesos_2slave_2containerizer_8hpp.html">mesos/slave/containerizer.hpp</a>&gt;</span></div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;</div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="future_8hpp.html">process/future.hpp</a>&gt;</span></div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="owned_8hpp.html">process/owned.hpp</a>&gt;</span></div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="subprocess_8hpp.h
 tml">process/subprocess.hpp</a>&gt;</span></div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="try_8hpp.html">stout/try.hpp</a>&gt;</span></div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="nothing_8hpp.html">stout/nothing.hpp</a>&gt;</span></div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="option_8hpp.html">stout/option.hpp</a>&gt;</span></div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;</div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacemesos.html">mesos</a> {</div><div class="line"><a na
 me="l00038"></a><span class="lineno">   38</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceinternal.html">internal</a> {</div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;<span class="keyword">namespace </span>slave {</div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;</div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;<span class="comment">// Forward declaration.</span></div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;<span class="keyword">class </span>SandboxContainerLoggerProcess;</div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;</div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;</div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;<span class="comment">// The default container logger.</span></div><div class="line"><a name
 ="l00046"></a><span class="lineno">   46</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;<span class="comment">// Containers launched through this container logger will have their</span></div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;<span class="comment">// stdout and stderr piped to the files &quot;stdout&quot; and &quot;stderr&quot;,</span></div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;<span class="comment">// respectively, in the sandbox. These logs are accessible via the</span></div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;<span class="comment">// agent&#39;s `/files` endpoint.</span></div><div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1slave_1_1SandboxContainerLogger.html">   51</a></span>&#160;<span class="keyword">class </span><a 
 class="code" href="classmesos_1_1internal_1_1slave_1_1SandboxContainerLogger.html">SandboxContainerLogger</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="l00052"></a><span class="lineno">   52</span>&#160;{</div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;  <a class="code" href="classmesos_1_1internal_1_1slave_1_1SandboxContainerLogger.html#a1b8a9a82650a01ad58e6e83a76b249e9">SandboxContainerLogger</a>();</div><div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;  <span class="keyword">virtual</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1SandboxContainerLogger.html#a49bed83196f230c48c0363464b6c2e32">~SandboxContainerLogger</a>();</div><div class="line"><a name="l00
 056"></a><span class="lineno">   56</span>&#160;</div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;  <span class="comment">// This is a noop. The sandbox container logger has nothing to initialize.</span></div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;  <span class="keyword">virtual</span> <a class="code" href="classTry.html">Try&lt;Nothing&gt;</a> <a class="code" href="classmesos_1_1internal_1_1slave_1_1SandboxContainerLogger.html#a5fbef8dfa4909eb4130c233d6cea4533">initialize</a>() <span class="keyword">override</span>;</div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;</div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;  <span class="comment">// Tells the subprocess to redirect the container&#39;s stdout and</span></div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;  <span class="comment">// stderr to separate &quot;s
 tdout&quot; and &quot;stderr&quot; files in the sandbox.</span></div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;  <span class="comment">// The `path`, `argv`, and `environment` are not changed.</span></div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;  <span class="keyword">virtual</span> <a class="code" href="classprocess_1_1Future.html">process::Future&lt;mesos::slave::ContainerIO&gt;</a> <a class="code" href="classmesos_1_1internal_1_1slave_1_1SandboxContainerLogger.html#a39b565314089f86ba74a70abb4ea9458">prepare</a>(</div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;      <span class="keyword">const</span> ContainerID&amp; containerId,</div><div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;      <span class="keyword">const</span> mesos::slave::ContainerConfig&amp; containerConfig) <span class="keyword">override</span>;</div><div class="line"><a name="l
 00066"></a><span class="lineno">   66</span>&#160;</div><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;<span class="keyword">protected</span>:</div><div class="line"><a name="l00068"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1slave_1_1SandboxContainerLogger.html#ae6d52b98a684d49fa90ea828cf8a6b8c">   68</a></span>&#160;  <a class="code" href="classprocess_1_1Owned.html">process::Owned&lt;SandboxContainerLoggerProcess&gt;</a> <a class="code" href="classmesos_1_1internal_1_1slave_1_1SandboxContainerLogger.html#ae6d52b98a684d49fa90ea828cf8a6b8c">process</a>;</div><div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;};</div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;</div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;</div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;} <span class="comment">// namespace s
 lave {</span></div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;} <span class="comment">// namespace internal {</span></div><div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;} <span class="comment">// namespace mesos {</span></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>&#160;<span class="preprocessor">#endif // __SLAVE_CONTAINER_LOGGERS_SANDBOX_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>
+<a href="sandbox_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>&#160;<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>&#160;<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>&#160;<span class="comment">// distributed with this work for additional information</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<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>&#160;<span class="comment">// to you under the Apache License, Version 2.0 (the</span></div><div class="line"><a name="l00006"></a><span cla
 ss="lineno">    6</span>&#160;<span class="comment">// &quot;License&quot;); you may not use this file except in compliance</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<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>&#160;<span class="comment">// distribut
 ed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<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>&#160;<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>&#160;<span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;</div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="preprocessor">#ifndef __SLAVE_CONTAINER_LOGGERS_SANDBOX_HPP__</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="preprocessor">#define __SLAVE_CONTAINER_LOGGERS_SANDBOX_HPP__
 </span></div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="preprocessor">#include &lt;map&gt;</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span></div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="preprocessor">#include &lt;vector&gt;</span></div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;</div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="include_2mesos_2mesos_8hpp.html">mesos/mesos.hpp</a>&gt;</span></div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;</div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<span class="preprocessor
 ">#include &lt;<a class="code" href="slave_2container__logger_8hpp.html">mesos/slave/container_logger.hpp</a>&gt;</span></div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="include_2mesos_2slave_2containerizer_8hpp.html">mesos/slave/containerizer.hpp</a>&gt;</span></div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;</div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="future_8hpp.html">process/future.hpp</a>&gt;</span></div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="owned_8hpp.html">process/owned.hpp</a>&gt;</span></div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="include_2process_
 2subprocess_8hpp.html">process/subprocess.hpp</a>&gt;</span></div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="try_8hpp.html">stout/try.hpp</a>&gt;</span></div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="nothing_8hpp.html">stout/nothing.hpp</a>&gt;</span></div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="option_8hpp.html">stout/option.hpp</a>&gt;</span></div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;</div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacemesos.html">mesos</a> {</div><div 
 class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceinternal.html">internal</a> {</div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;<span class="keyword">namespace </span>slave {</div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;</div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;<span class="comment">// Forward declaration.</span></div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;<span class="keyword">class </span>SandboxContainerLoggerProcess;</div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;</div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;</div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;<span class="comment">// The default container logger.</span></div><div cl
 ass="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;<span class="comment">// Containers launched through this container logger will have their</span></div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;<span class="comment">// stdout and stderr piped to the files &quot;stdout&quot; and &quot;stderr&quot;,</span></div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;<span class="comment">// respectively, in the sandbox. These logs are accessible via the</span></div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;<span class="comment">// agent&#39;s `/files` endpoint.</span></div><div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1slave_1_1SandboxContainerLogger.html">   51</a></span>&#160;<span class="keyword
 ">class </span><a class="code" href="classmesos_1_1internal_1_1slave_1_1SandboxContainerLogger.html">SandboxContainerLogger</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="l00052"></a><span class="lineno">   52</span>&#160;{</div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;  <a class="code" href="classmesos_1_1internal_1_1slave_1_1SandboxContainerLogger.html#a1b8a9a82650a01ad58e6e83a76b249e9">SandboxContainerLogger</a>();</div><div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;  <span class="keyword">virtual</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1SandboxContainerLogger.html#a49bed83196f230c48c0363464b6c2e32">~SandboxContainerLogger</a>();</div><div class="
 line"><a name="l00056"></a><span class="lineno">   56</span>&#160;</div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;  <span class="comment">// This is a noop. The sandbox container logger has nothing to initialize.</span></div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;  <span class="keyword">virtual</span> <a class="code" href="classTry.html">Try&lt;Nothing&gt;</a> <a class="code" href="classmesos_1_1internal_1_1slave_1_1SandboxContainerLogger.html#a5fbef8dfa4909eb4130c233d6cea4533">initialize</a>() <span class="keyword">override</span>;</div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;</div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;  <span class="comment">// Tells the subprocess to redirect the container&#39;s stdout and</span></div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;  <span class="comment">// stderr t
 o separate &quot;stdout&quot; and &quot;stderr&quot; files in the sandbox.</span></div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;  <span class="comment">// The `path`, `argv`, and `environment` are not changed.</span></div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;  <span class="keyword">virtual</span> <a class="code" href="classprocess_1_1Future.html">process::Future&lt;mesos::slave::ContainerIO&gt;</a> <a class="code" href="classmesos_1_1internal_1_1slave_1_1SandboxContainerLogger.html#a39b565314089f86ba74a70abb4ea9458">prepare</a>(</div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;      <span class="keyword">const</span> ContainerID&amp; containerId,</div><div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;      <span class="keyword">const</span> mesos::slave::ContainerConfig&amp; containerConfig) <span class="keyword">override</span>;</div><div class
 ="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;</div><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;<span class="keyword">protected</span>:</div><div class="line"><a name="l00068"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1slave_1_1SandboxContainerLogger.html#ae6d52b98a684d49fa90ea828cf8a6b8c">   68</a></span>&#160;  <a class="code" href="classprocess_1_1Owned.html">process::Owned&lt;SandboxContainerLoggerProcess&gt;</a> <a class="code" href="classmesos_1_1internal_1_1slave_1_1SandboxContainerLogger.html#ae6d52b98a684d49fa90ea828cf8a6b8c">process</a>;</div><div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;};</div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;</div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;</div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;} <span class="comme
 nt">// namespace slave {</span></div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;} <span class="comment">// namespace internal {</span></div><div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;} <span class="comment">// namespace mesos {</span></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>&#160;<span class="preprocessor">#endif // __SLAVE_CONTAINER_LOGGERS_SANDBOX_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="classmesos_1_1internal_1_1slave_1_1SandboxContainerLogger_html_ae6d52b98a684d49fa90ea828cf8a6b8c"><div class="ttname"><a href="classmesos_1_1internal_1_1slave_1_1SandboxContainerLogger.html#ae6d52b98a684d49fa90ea828cf8a6b8c">mesos::internal::slave::SandboxContainerLogger::process</a></div><div class="ttdeci">process::Owned&lt; SandboxContainerLoggerProcess &gt; process</div><div class="ttdef"><b>Definition:</b> sandbox.hpp:68</div></div>
-<div class="ttc" id="subprocess_8hpp_html"><div class="ttname"><a href="subprocess_8hpp.html">subprocess.hpp</a></div></div>
 <div class="ttc" id="classmesos_1_1internal_1_1slave_1_1SandboxContainerLogger_html_a39b565314089f86ba74a70abb4ea9458"><div class="ttname"><a href="classmesos_1_1internal_1_1slave_1_1SandboxContainerLogger.html#a39b565314089f86ba74a70abb4ea9458">mesos::internal::slave::SandboxContainerLogger::prepare</a></div><div class="ttdeci">virtual process::Future&lt; mesos::slave::ContainerIO &gt; prepare(const ContainerID &amp;containerId, const mesos::slave::ContainerConfig &amp;containerConfig) override</div></div>
+<div class="ttc" id="include_2process_2subprocess_8hpp_html"><div class="ttname"><a href="include_2process_2subprocess_8hpp.html">subprocess.hpp</a></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="classmesos_1_1internal_1_1slave_1_1SandboxContainerLogger_html"><div class="ttname"><a href="classmesos_1_1internal_1_1slave_1_1SandboxContainerLogger.html">mesos::internal::slave::SandboxContainerLogger</a></div><div class="ttdef"><b>Definition:</b> sandbox.hpp:51</div></div>
 <div class="ttc" id="classmesos_1_1internal_1_1slave_1_1SandboxContainerLogger_html_a1b8a9a82650a01ad58e6e83a76b249e9"><div class="ttname"><a href="classmesos_1_1internal_1_1slave_1_1SandboxContainerLogger.html#a1b8a9a82650a01ad58e6e83a76b249e9">mesos::internal::slave::SandboxContainerLogger::SandboxContainerLogger</a></div><div class="ttdeci">SandboxContainerLogger()</div></div>


[39/50] mesos-site git commit: Updated the website built from mesos SHA: 7c9c72d.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/docker_2docker_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/docker_2docker_8hpp_source.html b/content/api/latest/c++/docker_2docker_8hpp_source.html
index e10c4fc..41a1142 100644
--- a/content/api/latest/c++/docker_2docker_8hpp_source.html
+++ b/content/api/latest/c++/docker_2docker_8hpp_source.html
@@ -52,7 +52,7 @@
 <div class="title">docker.hpp</div>  </div>
 </div><!--header-->
 <div class="contents">
-<a href="docker_2docker_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>&#160;<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>&#160;<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>&#160;<span class="comment">// distributed with this work for additional information</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<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>&#160;<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>&#160;<span class="comment">// &quot;License&quot;); you may not use this file except in compliance</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<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>&#160;<span class="comment">// di
 stributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<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>&#160;<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>&#160;<span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;</div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="preprocessor">#ifndef __DOCKER_HPP__</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="preprocessor">#define __DOCKER_HPP__</span></div><div class="line"><a name="l00
 019"></a><span class="lineno">   19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="preprocessor">#include &lt;map&gt;</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="preprocessor">#include &lt;mutex&gt;</span></div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span></div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="preprocessor">#include &lt;utility&gt;</span></div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="preprocessor">#include &lt;vector&gt;</span></div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;</div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="future_8hpp.html"
 >process/future.hpp</a>&gt;</span></div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="owned_8hpp.html">process/owned.hpp</a>&gt;</span></div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="subprocess_8hpp.html">process/subprocess.hpp</a>&gt;</span></div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;</div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="duration_8hpp.html">stout/duration.hpp</a>&gt;</span></div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="json_8hpp.html">stout/json.hpp</a>&gt;</span></div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;<span
  class="preprocessor">#include &lt;<a class="code" href="none_8hpp.html">stout/none.hpp</a>&gt;</span></div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="nothing_8hpp.html">stout/nothing.hpp</a>&gt;</span></div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="option_8hpp.html">stout/option.hpp</a>&gt;</span></div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="path_8hpp.html">stout/path.hpp</a>&gt;</span></div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="3rdparty_2stout_2include_2stout_2version_8hpp.html">stout/version.hpp</a>&gt;</span></div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#16
 0;</div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="rm_8hpp.html">stout/os/rm.hpp</a>&gt;</span></div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;</div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="resources_8hpp.html">mesos/resources.hpp</a>&quot;</span></div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;</div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="src_2messages_2flags_8hpp.html">messages/flags.hpp</a>&quot;</span></div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;</div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;<span class="comment">// OS-specific default pref
 ix to be used for the DOCKER_HOST environment</span></div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;<span class="comment">// variable. Note that on Linux, the default prefix is the only prefix</span></div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;<span class="comment">// available; only Windows supports multiple prefixes.</span></div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;<span class="comment">// TODO(hausdorff): Add support for the Windows `tcp://` prefix as well.</span></div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;<span class="preprocessor">#ifdef __WINDOWS__</span></div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;constexpr <span class="keywordtype">char</span> <a class="code" href="docker_2docker_8hpp.html#aaa33f928061d14ba4d30c9d242ab3af6">DEFAULT_DOCKER_HOST_PREFIX</a>[] = <span class="stringlitera
 l">&quot;npipe://&quot;</span>;</div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="docker_2docker_8hpp.html#aaa33f928061d14ba4d30c9d242ab3af6">   51</a></span>&#160;constexpr <span class="keywordtype">char</span> <a class="code" href="docker_2docker_8hpp.html#aaa33f928061d14ba4d30c9d242ab3af6">DEFAULT_DOCKER_HOST_PREFIX</a>[] = <span class="stringliteral">&quot;unix://&quot;</span>;</div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;<span class="preprocessor">#endif // __WINDOWS__</span></div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;</div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;<span class="comment">// Abstraction for working with Docker (modeled on CLI).</span></div><div class="line"><a name="l00055"></a><span class="lin
 eno">   55</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;<span class="comment">// TODO(benh): Make futures returned by functions be discardable.</span></div><div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="classDocker.html">   57</a></span>&#160;<span class="keyword">class </span><a class="code" href="classDocker.html">Docker</a></div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;{</div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;  <span class="comment">// Create Docker abstraction and optionally validate docker.</span></div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;  <span class="keyword">static</span> <a class="code" href="classTry.html">Try&lt;proces
 s::Owned&lt;Docker&gt;</a>&gt; <a class="code" href="classDocker.html#a370c1d613e35cc8b8e393dc8c83876e6">create</a>(</div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;      <span class="keyword">const</span> std::string&amp; <a class="code" href="namespacepath.html">path</a>,</div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;      <span class="keyword">const</span> std::string&amp; socket,</div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;      <span class="keywordtype">bool</span> <a class="code" href="namespaceappc_1_1spec.html#a1f003511d7ad7c4792223d0b11b60f62">validate</a> = <span class="keyword">true</span>,</div><div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;      <span class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;JSON::Object&gt;</a>&amp; config = <a class="code" href="structNone.html">None</a>());</div><div class=
 "line"><a name="l00066"></a><span class="lineno">   66</span>&#160;</div><div class="line"><a name="l00067"></a><span class="lineno"><a class="line" href="classDocker.html#abf91637f3f62b14134f06987e2d6cf16">   67</a></span>&#160;  <span class="keyword">virtual</span> <a class="code" href="classDocker.html#abf91637f3f62b14134f06987e2d6cf16">~Docker</a>() {}</div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;</div><div class="line"><a name="l00069"></a><span class="lineno"><a class="line" href="structDocker_1_1Device.html">   69</a></span>&#160;  <span class="keyword">struct </span><a class="code" href="structDocker_1_1Device.html">Device</a></div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;  {</div><div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="structDocker_1_1Device.html#aae6d15031248e229009ba54e7897ec81">   71</a></span>&#160;    <a class="code" href="classPath.html">Path</a> <a cla
 ss="code" href="structDocker_1_1Device.html#aae6d15031248e229009ba54e7897ec81">hostPath</a>;</div><div class="line"><a name="l00072"></a><span class="lineno"><a class="line" href="structDocker_1_1Device.html#a6d9a10b7266815d0e38624401fcee248">   72</a></span>&#160;    <a class="code" href="classPath.html">Path</a> <a class="code" href="structDocker_1_1Device.html#a6d9a10b7266815d0e38624401fcee248">containerPath</a>;</div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;</div><div class="line"><a name="l00074"></a><span class="lineno"><a class="line" href="structDocker_1_1Device_1_1Access.html">   74</a></span>&#160;    <span class="keyword">struct </span><a class="code" href="structDocker_1_1Device_1_1Access.html">Access</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"><a class="line" href="structDocker_1_1Device_1_1Access.html#aaf338c2ce317697079
 99e451d72b2072">   76</a></span>&#160;      <a class="code" href="structDocker_1_1Device_1_1Access.html#aaf338c2ce31769707999e451d72b2072">Access</a>() : <a class="code" href="structDocker_1_1Device_1_1Access.html#ab4a1a1a34181c1b542803ba637b3640b">read</a>(false), <a class="code" href="structDocker_1_1Device_1_1Access.html#a50be7cc67a985ab3fbc1a119e7c18bb6">write</a>(false), <a class="code" href="structDocker_1_1Device_1_1Access.html#a454de7a52e5aeae079b6487eaa8e993f">mknod</a>(false) {}</div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;</div><div class="line"><a name="l00078"></a><span class="lineno"><a class="line" href="structDocker_1_1Device_1_1Access.html#ab4a1a1a34181c1b542803ba637b3640b">   78</a></span>&#160;      <span class="keywordtype">bool</span> <a class="code" href="structDocker_1_1Device_1_1Access.html#ab4a1a1a34181c1b542803ba637b3640b">read</a>;</div><div class="line"><a name="l00079"></a><span class="lineno"><a class="line" href="s
 tructDocker_1_1Device_1_1Access.html#a50be7cc67a985ab3fbc1a119e7c18bb6">   79</a></span>&#160;      <span class="keywordtype">bool</span> <a class="code" href="structDocker_1_1Device_1_1Access.html#a50be7cc67a985ab3fbc1a119e7c18bb6">write</a>;</div><div class="line"><a name="l00080"></a><span class="lineno"><a class="line" href="structDocker_1_1Device_1_1Access.html#a454de7a52e5aeae079b6487eaa8e993f">   80</a></span>&#160;      <span class="keywordtype">bool</span> <a class="code" href="structDocker_1_1Device_1_1Access.html#a454de7a52e5aeae079b6487eaa8e993f">mknod</a>;</div><div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;    } <a class="code" href="structDocker_1_1Device.html#aba8dd66fc4f724c34d896f8e87cce72e">access</a>;</div><div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;  };</div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;</div><div class="line"><a name="l00084"></a><span class="lineno
 "><a class="line" href="structDocker_1_1PortMapping.html">   84</a></span>&#160;  <span class="keyword">struct </span><a class="code" href="structDocker_1_1PortMapping.html">PortMapping</a></div><div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;  {</div><div class="line"><a name="l00086"></a><span class="lineno"><a class="line" href="structDocker_1_1PortMapping.html#a83397b57136d2d1801ff776e05e8aaee">   86</a></span>&#160;    uint32_t <a class="code" href="structDocker_1_1PortMapping.html#a83397b57136d2d1801ff776e05e8aaee">hostPort</a>;</div><div class="line"><a name="l00087"></a><span class="lineno"><a class="line" href="structDocker_1_1PortMapping.html#a5f73ec1d00e9bebe33b963a5f0bf04dc">   87</a></span>&#160;    uint32_t <a class="code" href="structDocker_1_1PortMapping.html#a5f73ec1d00e9bebe33b963a5f0bf04dc">containerPort</a>;</div><div class="line"><a name="l00088"></a><span class="lineno"><a class="line" href="structDocker_1_1PortMapping.html#a2af6ba
 4b5d848dacd369567906b127fc">   88</a></span>&#160;    <a class="code" href="classOption.html">Option&lt;std::string&gt;</a> <a class="code" href="structDocker_1_1PortMapping.html#a2af6ba4b5d848dacd369567906b127fc">protocol</a>;</div><div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;  };</div><div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;</div><div class="line"><a name="l00091"></a><span class="lineno"><a class="line" href="classDocker_1_1Container.html">   91</a></span>&#160;  <span class="keyword">class </span><a class="code" href="classDocker_1_1Container.html">Container</a></div><div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;  {</div><div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;  <span class="keyword">public</span>:</div><div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;    <span class="keyword">static</span> <a class="code" href=
 "classTry.html">Try&lt;Container&gt;</a> <a class="code" href="classDocker.html#a370c1d613e35cc8b8e393dc8c83876e6">create</a>(</div><div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;        <span class="keyword">const</span> std::string&amp; output);</div><div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;</div><div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;    <span class="comment">// Returns the docker inspect output.</span></div><div class="line"><a name="l00098"></a><span class="lineno"><a class="line" href="classDocker_1_1Container.html#a3c7827975fc6182997b44752c96ec1df">   98</a></span>&#160;    <span class="keyword">const</span> std::string <a class="code" href="classDocker_1_1Container.html#a3c7827975fc6182997b44752c96ec1df">output</a>;</div><div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;</div><div class="line"><a name="l00100"></a><span class="lineno">  100</
 span>&#160;    <span class="comment">// Returns the ID of the container.</span></div><div class="line"><a name="l00101"></a><span class="lineno"><a class="line" href="classDocker_1_1Container.html#a2d8c2defc4769ffe5374b269e46780cd">  101</a></span>&#160;    <span class="keyword">const</span> std::string <a class="code" href="classDocker_1_1Container.html#a2d8c2defc4769ffe5374b269e46780cd">id</a>;</div><div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;</div><div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;    <span class="comment">// Returns the name of the container.</span></div><div class="line"><a name="l00104"></a><span class="lineno"><a class="line" href="classDocker_1_1Container.html#a2d653bf9d523e3c35536b3c56d8abdce">  104</a></span>&#160;    <span class="keyword">const</span> std::string <a class="code" href="classDocker_1_1Container.html#a2d653bf9d523e3c35536b3c56d8abdce">name</a>;</div><div class="line"><a name="l0010
 5"></a><span class="lineno">  105</span>&#160;</div><div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;    <span class="comment">// Returns the pid of the container, or None if the container is</span></div><div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;    <span class="comment">// not running.</span></div><div class="line"><a name="l00108"></a><span class="lineno"><a class="line" href="classDocker_1_1Container.html#a825f1f81694908ea0d47a889f6cb71ea">  108</a></span>&#160;    <span class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;pid_t&gt;</a> <a class="code" href="classDocker_1_1Container.html#a825f1f81694908ea0d47a889f6cb71ea">pid</a>;</div><div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;</div><div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;    <span class="comment">// Returns if the container has already started. This field is</span></
 div><div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;    <span class="comment">// needed since pid is empty when the container terminates.</span></div><div class="line"><a name="l00112"></a><span class="lineno"><a class="line" href="classDocker_1_1Container.html#a3bb01922d502d092b8be21cef3a2c45c">  112</a></span>&#160;    <span class="keyword">const</span> <span class="keywordtype">bool</span> <a class="code" href="classDocker_1_1Container.html#a3bb01922d502d092b8be21cef3a2c45c">started</a>;</div><div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;</div><div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;    <span class="comment">// Returns the IPv4 address of the container, or `None()` if no</span></div><div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;    <span class="comment">// IPv4 address has been assigned.</span></div><div class="line"><a name="l00116"></a><span class=
 "lineno"><a class="line" href="classDocker_1_1Container.html#a3f16c086b28059796d404e040612a8a2">  116</a></span>&#160;    <span class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;std::string&gt;</a> <a class="code" href="classDocker_1_1Container.html#a3f16c086b28059796d404e040612a8a2">ipAddress</a>;</div><div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;</div><div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;    <span class="comment">// Returns the IPv6 address of the container, or `None()` if no</span></div><div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;    <span class="comment">// IPv6 address has been assigned.</span></div><div class="line"><a name="l00120"></a><span class="lineno"><a class="line" href="classDocker_1_1Container.html#a78062b6302fdb628685c36a4b9e13e43">  120</a></span>&#160;    <span class="keyword">const</span> <a class="code" href="classOption.html">
 Option&lt;std::string&gt;</a> <a class="code" href="classDocker_1_1Container.html#a78062b6302fdb628685c36a4b9e13e43">ip6Address</a>;</div><div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;</div><div class="line"><a name="l00122"></a><span class="lineno"><a class="line" href="classDocker_1_1Container.html#a90c09ee24a831bd1c053234e51e66544">  122</a></span>&#160;    <span class="keyword">const</span> std::vector&lt;Device&gt; <a class="code" href="classDocker_1_1Container.html#a90c09ee24a831bd1c053234e51e66544">devices</a>;</div><div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;</div><div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;    <span class="comment">// Returns the DNS nameservers set by &quot;--dns&quot; option.</span></div><div class="line"><a name="l00125"></a><span class="lineno"><a class="line" href="classDocker_1_1Container.html#a434939f30a9e9119fd06c54b81e117d3">  125</a></span>&#160;   
  <span class="keyword">const</span> std::vector&lt;std::string&gt; <a class="code" href="classDocker_1_1Container.html#a434939f30a9e9119fd06c54b81e117d3">dns</a>;</div><div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;</div><div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;    <span class="comment">// Returns the DNS options set by &quot;--dns-option&quot; option.</span></div><div class="line"><a name="l00128"></a><span class="lineno"><a class="line" href="classDocker_1_1Container.html#adb6b9484d8ccab9cf108594617d0b3ea">  128</a></span>&#160;    <span class="keyword">const</span> std::vector&lt;std::string&gt; <a class="code" href="classDocker_1_1Container.html#adb6b9484d8ccab9cf108594617d0b3ea">dnsOptions</a>;</div><div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;</div><div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;    <span class="comment">// Returns the DNS search d
 omains set by &quot;--dns-search&quot; option.</span></div><div class="line"><a name="l00131"></a><span class="lineno"><a class="line" href="classDocker_1_1Container.html#a57b751988fd965a91bcff284bba745a9">  131</a></span>&#160;    <span class="keyword">const</span> std::vector&lt;std::string&gt; <a class="code" href="classDocker_1_1Container.html#a57b751988fd965a91bcff284bba745a9">dnsSearch</a>;</div><div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;</div><div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;  <span class="keyword">private</span>:</div><div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;    <a class="code" href="classDocker_1_1Container.html">Container</a>(</div><div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;        <span class="keyword">const</span> std::string&amp; _output,</div><div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;
         <span class="keyword">const</span> std::string&amp; _id,</div><div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;        <span class="keyword">const</span> std::string&amp; _name,</div><div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;        <span class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;pid_t&gt;</a>&amp; _pid,</div><div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;        <span class="keywordtype">bool</span> _started,</div><div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;        <span class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;std::string&gt;</a>&amp; _ipAddress,</div><div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;        <span class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;std::string&gt;</a>&amp; _ip6Address,</div><div class
 ="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;        <span class="keyword">const</span> std::vector&lt;Device&gt;&amp; _devices,</div><div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;        <span class="keyword">const</span> std::vector&lt;std::string&gt;&amp; _dns,</div><div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;        <span class="keyword">const</span> std::vector&lt;std::string&gt;&amp; _dnsOptions,</div><div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;        <span class="keyword">const</span> std::vector&lt;std::string&gt;&amp; _dnsSearch)</div><div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;      : output(_output),</div><div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;        id(_id),</div><div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;        name(_name),</div><div class=
 "line"><a name="l00149"></a><span class="lineno">  149</span>&#160;        pid(_pid),</div><div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;        started(_started),</div><div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;        ipAddress(_ipAddress),</div><div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;        ip6Address(_ip6Address),</div><div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;        devices(_devices),</div><div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;        dns(_dns),</div><div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;        dnsOptions(_dnsOptions),</div><div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;        dnsSearch(_dnsSearch) {}</div><div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;  };</div><div class="line"><a name="l00158"
 ></a><span class="lineno">  158</span>&#160;</div><div class="line"><a name="l00159"></a><span class="lineno"><a class="line" href="classDocker_1_1Image.html">  159</a></span>&#160;  <span class="keyword">class </span><a class="code" href="classDocker_1_1Image.html">Image</a></div><div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;  {</div><div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;  <span class="keyword">public</span>:</div><div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;    <span class="keyword">static</span> <a class="code" href="classTry.html">Try&lt;Image&gt;</a> <a class="code" href="classDocker.html#a370c1d613e35cc8b8e393dc8c83876e6">create</a>(<span class="keyword">const</span> <a class="code" href="structJSON_1_1Object.html">JSON::Object</a>&amp; <a class="code" href="namespacemesos_1_1internal.html#a3752d85ef726065c6c1b946eef1ba87a">json</a>);</div><div class="line"><a name="l00163"
 ></a><span class="lineno">  163</span>&#160;</div><div class="line"><a name="l00164"></a><span class="lineno"><a class="line" href="classDocker_1_1Image.html#a43aec521773705fa0148bacdc493e5a9">  164</a></span>&#160;    <a class="code" href="classOption.html">Option&lt;std::vector&lt;std::string&gt;</a>&gt; <a class="code" href="classDocker_1_1Image.html#a43aec521773705fa0148bacdc493e5a9">entrypoint</a>;</div><div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;</div><div class="line"><a name="l00166"></a><span class="lineno"><a class="line" href="classDocker_1_1Image.html#a1f2babd3821e80ddf36c1f129528d5ef">  166</a></span>&#160;    <a class="code" href="classOption.html">Option&lt;std::map&lt;std::string, std::string&gt;</a>&gt; <a class="code" href="classDocker_1_1Image.html#a1f2babd3821e80ddf36c1f129528d5ef">environment</a>;</div><div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;</div><div class="line"><a name="l00168"></a><span
  class="lineno">  168</span>&#160;  <span class="keyword">private</span>:</div><div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;    <a class="code" href="classDocker_1_1Image.html">Image</a>(<span class="keyword">const</span> <a class="code" href="classOption.html">Option</a>&lt;std::vector&lt;std::string&gt;&gt;&amp; _entrypoint,</div><div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;          <span class="keyword">const</span> <a class="code" href="classOption.html">Option</a>&lt;std::map&lt;std::string, std::string&gt;&gt;&amp; _environment)</div><div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;      : entrypoint(_entrypoint),</div><div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;        environment(_environment) {}</div><div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;  };</div><div class="line"><a name="l00174"></a><span class="lineno">
   174</span>&#160;</div><div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;  <span class="comment">// See https://docs.docker.com/engine/reference/run for a complete</span></div><div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;  <span class="comment">// explanation of each option.</span></div><div class="line"><a name="l00177"></a><span class="lineno"><a class="line" href="classDocker_1_1RunOptions.html">  177</a></span>&#160;  <span class="keyword">class </span><a class="code" href="classDocker_1_1RunOptions.html">RunOptions</a></div><div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;  {</div><div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;  <span class="keyword">public</span>:</div><div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;    <span class="keyword">static</span> <a class="code" href="classTry.html">Try&lt;RunOptions&gt;</a> <a class="
 code" href="classDocker.html#a370c1d613e35cc8b8e393dc8c83876e6">create</a>(</div><div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;        <span class="keyword">const</span> mesos::ContainerInfo&amp; containerInfo,</div><div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160;        <span class="keyword">const</span> mesos::CommandInfo&amp; commandInfo,</div><div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;        <span class="keyword">const</span> std::string&amp; containerName,</div><div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;        <span class="keyword">const</span> std::string&amp; sandboxDirectory,</div><div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;        <span class="keyword">const</span> std::string&amp; mappedDirectory,</div><div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;        <span class="keyword"
 >const</span> <a class="code" href="classOption.html">Option&lt;mesos::Resources&gt;</a>&amp; resources = <a class="code" href="structNone.html">None</a>(),</div><div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;        <span class="keywordtype">bool</span> enableCfsQuota = <span class="keyword">false</span>,</div><div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;        <span class="keyword">const</span> <a class="code" href="classOption.html">Option</a>&lt;std::map&lt;std::string, std::string&gt;&gt;&amp; env = <a class="code" href="structNone.html">None</a>(),</div><div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160;        <span class="keyword">const</span> <a class="code" href="classOption.html">Option</a>&lt;std::vector&lt;Device&gt;&gt;&amp; devices = <a class="code" href="structNone.html">None</a>(),</div><div class="line"><a name="l00190"></a><span class="lineno">  190</span>&#160;        <spa
 n class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;mesos::internal::ContainerDNSInfo&gt;</a>&amp; defaultContainerDNS = <a class="code" href="structNone.html">None</a>()); <span class="comment">// NOLINT(whitespace/line_length)</span></div><div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160;</div><div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;    <span class="comment">// &quot;--privileged&quot; option.</span></div><div class="line"><a name="l00193"></a><span class="lineno"><a class="line" href="classDocker_1_1RunOptions.html#a33f18cefbc3ca182e25e11864aaf6b7c">  193</a></span>&#160;    <span class="keywordtype">bool</span> <a class="code" href="classDocker_1_1RunOptions.html#a33f18cefbc3ca182e25e11864aaf6b7c">privileged</a>;</div><div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#160;</div><div class="line"><a name="l00195"></a><span class="lineno">  195</span>&#160;    <spa
 n class="comment">// &quot;--cpu-shares&quot; option.</span></div><div class="line"><a name="l00196"></a><span class="lineno"><a class="line" href="classDocker_1_1RunOptions.html#a9e9766db7938907f2c817285a23e7da4">  196</a></span>&#160;    <a class="code" href="classOption.html">Option&lt;uint64_t&gt;</a> <a class="code" href="classDocker_1_1RunOptions.html#a9e9766db7938907f2c817285a23e7da4">cpuShares</a>;</div><div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;</div><div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160;    <span class="comment">// &quot;--cpu-quota&quot; option.</span></div><div class="line"><a name="l00199"></a><span class="lineno"><a class="line" href="classDocker_1_1RunOptions.html#a38e3dcda8fe4518da90882bf7c3c4fa6">  199</a></span>&#160;    <a class="code" href="classOption.html">Option&lt;uint64_t&gt;</a> <a class="code" href="classDocker_1_1RunOptions.html#a38e3dcda8fe4518da90882bf7c3c4fa6">cpuQuota</a>;</div
 ><div class="line"><a name="l00200"></a><span class="lineno">  200</span>&#160;</div><div class="line"><a name="l00201"></a><span class="lineno">  201</span>&#160;    <span class="comment">// &quot;--memory&quot; option.</span></div><div class="line"><a name="l00202"></a><span class="lineno"><a class="line" href="classDocker_1_1RunOptions.html#a3646ddc4c72adc0ca32892889ecaaf42">  202</a></span>&#160;    <a class="code" href="classOption.html">Option&lt;Bytes&gt;</a> <a class="code" href="classDocker_1_1RunOptions.html#a3646ddc4c72adc0ca32892889ecaaf42">memory</a>;</div><div class="line"><a name="l00203"></a><span class="lineno">  203</span>&#160;</div><div class="line"><a name="l00204"></a><span class="lineno">  204</span>&#160;    <span class="comment">// Environment variable overrides. These overrides will be passed</span></div><div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160;    <span class="comment">// to docker container through &quot;--env-file&quo
 t; option.</span></div><div class="line"><a name="l00206"></a><span class="lineno"><a class="line" href="classDocker_1_1RunOptions.html#a755d1afbb3adbf654734d77834c2a5a6">  206</a></span>&#160;    std::map&lt;std::string, std::string&gt; <a class="code" href="classDocker_1_1RunOptions.html#a755d1afbb3adbf654734d77834c2a5a6">env</a>;</div><div class="line"><a name="l00207"></a><span class="lineno">  207</span>&#160;</div><div class="line"><a name="l00208"></a><span class="lineno">  208</span>&#160;    <span class="comment">// &quot;--volume&quot; option.</span></div><div class="line"><a name="l00209"></a><span class="lineno"><a class="line" href="classDocker_1_1RunOptions.html#ab3f8493699e9598e9f8cccf21370a446">  209</a></span>&#160;    std::vector&lt;std::string&gt; <a class="code" href="classDocker_1_1RunOptions.html#ab3f8493699e9598e9f8cccf21370a446">volumes</a>;</div><div class="line"><a name="l00210"></a><span class="lineno">  210</span>&#160;</div><div class="line"><a name="l00
 211"></a><span class="lineno">  211</span>&#160;    <span class="comment">// &quot;--volume-driver&quot; option.</span></div><div class="line"><a name="l00212"></a><span class="lineno"><a class="line" href="classDocker_1_1RunOptions.html#a7423333c41f76267f5d5d7471598df2e">  212</a></span>&#160;    <a class="code" href="classOption.html">Option&lt;std::string&gt;</a> <a class="code" href="classDocker_1_1RunOptions.html#a7423333c41f76267f5d5d7471598df2e">volumeDriver</a>;</div><div class="line"><a name="l00213"></a><span class="lineno">  213</span>&#160;</div><div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160;    <span class="comment">// &quot;--network&quot; option.</span></div><div class="line"><a name="l00215"></a><span class="lineno"><a class="line" href="classDocker_1_1RunOptions.html#a220a2058369e4c4c0470c2af55bd70b0">  215</a></span>&#160;    <a class="code" href="classOption.html">Option&lt;std::string&gt;</a> <a class="code" href="classDocker_1_1Run
 Options.html#a220a2058369e4c4c0470c2af55bd70b0">network</a>;</div><div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#160;</div><div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160;    <span class="comment">// &quot;--hostname&quot; option.</span></div><div class="line"><a name="l00218"></a><span class="lineno"><a class="line" href="classDocker_1_1RunOptions.html#aaec598bf7739b0ebfbe35910dc9ebcd1">  218</a></span>&#160;    <a class="code" href="classOption.html">Option&lt;std::string&gt;</a> <a class="code" href="classDocker_1_1RunOptions.html#aaec598bf7739b0ebfbe35910dc9ebcd1">hostname</a>;</div><div class="line"><a name="l00219"></a><span class="lineno">  219</span>&#160;</div><div class="line"><a name="l00220"></a><span class="lineno">  220</span>&#160;    <span class="comment">// &quot;--dns&quot; option.</span></div><div class="line"><a name="l00221"></a><span class="lineno"><a class="line" href="classDocker_1_1RunOptions.html#a2b7
 4b9166bedf91ee6095aaf0f360ec1">  221</a></span>&#160;    std::vector&lt;std::string&gt; <a class="code" href="classDocker_1_1RunOptions.html#a2b74b9166bedf91ee6095aaf0f360ec1">dns</a>;</div><div class="line"><a name="l00222"></a><span class="lineno">  222</span>&#160;</div><div class="line"><a name="l00223"></a><span class="lineno">  223</span>&#160;    <span class="comment">// &quot;--dns-search&quot; option.</span></div><div class="line"><a name="l00224"></a><span class="lineno"><a class="line" href="classDocker_1_1RunOptions.html#a63a9cb71e8f2d710c2fa42d8ba40c819">  224</a></span>&#160;    std::vector&lt;std::string&gt; <a class="code" href="classDocker_1_1RunOptions.html#a63a9cb71e8f2d710c2fa42d8ba40c819">dnsSearch</a>;</div><div class="line"><a name="l00225"></a><span class="lineno">  225</span>&#160;</div><div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;    <span class="comment">// &quot;--dns-opt&quot; option.</span></div><div class="line"><a name
 ="l00227"></a><span class="lineno"><a class="line" href="classDocker_1_1RunOptions.html#ad5224b97473b64a722903ae1fba7da6e">  227</a></span>&#160;    std::vector&lt;std::string&gt; <a class="code" href="classDocker_1_1RunOptions.html#ad5224b97473b64a722903ae1fba7da6e">dnsOpt</a>;</div><div class="line"><a name="l00228"></a><span class="lineno">  228</span>&#160;</div><div class="line"><a name="l00229"></a><span class="lineno">  229</span>&#160;    <span class="comment">// Port mappings for &quot;-p&quot; option.</span></div><div class="line"><a name="l00230"></a><span class="lineno"><a class="line" href="classDocker_1_1RunOptions.html#ae237a5dab57584fae5f4dfb6ebebad82">  230</a></span>&#160;    std::vector&lt;PortMapping&gt; <a class="code" href="classDocker_1_1RunOptions.html#ae237a5dab57584fae5f4dfb6ebebad82">portMappings</a>;</div><div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160;</div><div class="line"><a name="l00232"></a><span class="lineno">  232</s
 pan>&#160;    <span class="comment">// &quot;--device&quot; option.</span></div><div class="line"><a name="l00233"></a><span class="lineno"><a class="line" href="classDocker_1_1RunOptions.html#ac50c34a9f1f091f506e46b4c42cbc223">  233</a></span>&#160;    std::vector&lt;Device&gt; <a class="code" href="classDocker_1_1RunOptions.html#ac50c34a9f1f091f506e46b4c42cbc223">devices</a>;</div><div class="line"><a name="l00234"></a><span class="lineno">  234</span>&#160;</div><div class="line"><a name="l00235"></a><span class="lineno">  235</span>&#160;    <span class="comment">// &quot;--entrypoint&quot; option.</span></div><div class="line"><a name="l00236"></a><span class="lineno"><a class="line" href="classDocker_1_1RunOptions.html#a60d3e2000dd5ab9edf5f7b8a8286746c">  236</a></span>&#160;    <a class="code" href="classOption.html">Option&lt;std::string&gt;</a> <a class="code" href="classDocker_1_1RunOptions.html#a60d3e2000dd5ab9edf5f7b8a8286746c">entrypoint</a>;</div><div class="line"><a n
 ame="l00237"></a><span class="lineno">  237</span>&#160;</div><div class="line"><a name="l00238"></a><span class="lineno">  238</span>&#160;    <span class="comment">// &quot;--name&quot; option.</span></div><div class="line"><a name="l00239"></a><span class="lineno"><a class="line" href="classDocker_1_1RunOptions.html#a0602b9e86eddf481d959af3a0b90d6b0">  239</a></span>&#160;    <a class="code" href="classOption.html">Option&lt;std::string&gt;</a> <a class="code" href="classDocker_1_1RunOptions.html#a0602b9e86eddf481d959af3a0b90d6b0">name</a>;</div><div class="line"><a name="l00240"></a><span class="lineno">  240</span>&#160;</div><div class="line"><a name="l00241"></a><span class="lineno">  241</span>&#160;    <span class="comment">// Additional docker options passed through containerizer.</span></div><div class="line"><a name="l00242"></a><span class="lineno"><a class="line" href="classDocker_1_1RunOptions.html#a048706a19cef73f4e674424c996e5c89">  242</a></span>&#160;    std::vect
 or&lt;std::string&gt; <a class="code" href="classDocker_1_1RunOptions.html#a048706a19cef73f4e674424c996e5c89">additionalOptions</a>;</div><div class="line"><a name="l00243"></a><span class="lineno">  243</span>&#160;</div><div class="line"><a name="l00244"></a><span class="lineno">  244</span>&#160;    <span class="comment">// &quot;IMAGE[:TAG|@DIGEST]&quot; part of docker run.</span></div><div class="line"><a name="l00245"></a><span class="lineno"><a class="line" href="classDocker_1_1RunOptions.html#a984870e15fbad2697a42f013258a6d93">  245</a></span>&#160;    std::string <a class="code" href="classDocker_1_1RunOptions.html#a984870e15fbad2697a42f013258a6d93">image</a>;</div><div class="line"><a name="l00246"></a><span class="lineno">  246</span>&#160;</div><div class="line"><a name="l00247"></a><span class="lineno">  247</span>&#160;    <span class="comment">// Arguments for docker run.</span></div><div class="line"><a name="l00248"></a><span class="lineno"><a class="line" href="cla
 ssDocker_1_1RunOptions.html#a2a59bd841ae0bb5b77b83639b61e42ec">  248</a></span>&#160;    std::vector&lt;std::string&gt; <a class="code" href="classDocker_1_1RunOptions.html#a2a59bd841ae0bb5b77b83639b61e42ec">arguments</a>;</div><div class="line"><a name="l00249"></a><span class="lineno">  249</span>&#160;  };</div><div class="line"><a name="l00250"></a><span class="lineno">  250</span>&#160;</div><div class="line"><a name="l00251"></a><span class="lineno">  251</span>&#160;  <span class="comment">// Performs &#39;docker run IMAGE&#39;. Returns the exit status of the</span></div><div class="line"><a name="l00252"></a><span class="lineno">  252</span>&#160;  <span class="comment">// container. Note that currently the exit status may correspond</span></div><div class="line"><a name="l00253"></a><span class="lineno">  253</span>&#160;  <span class="comment">// to the exit code from a failure of the docker client or daemon</span></div><div class="line"><a name="l00254"></a><span class="l
 ineno">  254</span>&#160;  <span class="comment">// rather than the container. Docker &gt;= 1.10 [1] uses the following</span></div><div class="line"><a name="l00255"></a><span class="lineno">  255</span>&#160;  <span class="comment">// exit statuses inherited from &#39;chroot&#39;:</span></div><div class="line"><a name="l00256"></a><span class="lineno">  256</span>&#160;  <span class="comment">//     125 if the error is with Docker daemon itself.</span></div><div class="line"><a name="l00257"></a><span class="lineno">  257</span>&#160;  <span class="comment">//     126 if the contained command cannot be invoked.</span></div><div class="line"><a name="l00258"></a><span class="lineno">  258</span>&#160;  <span class="comment">//     127 if the contained command cannot be found.</span></div><div class="line"><a name="l00259"></a><span class="lineno">  259</span>&#160;  <span class="comment">//     Exit code of contained command otherwise.</span></div><div class="line"><a name="l00260"
 ></a><span class="lineno">  260</span>&#160;  <span class="comment">//</span></div><div class="line"><a name="l00261"></a><span class="lineno">  261</span>&#160;  <span class="comment">// [1]: https://github.com/docker/docker/pull/14012</span></div><div class="line"><a name="l00262"></a><span class="lineno">  262</span>&#160;  <span class="keyword">virtual</span> <a class="code" href="classprocess_1_1Future.html">process::Future&lt;Option&lt;int&gt;</a>&gt; <a class="code" href="classDocker.html#a4c921c0018b3ca12ad726617d2938710">run</a>(</div><div class="line"><a name="l00263"></a><span class="lineno">  263</span>&#160;      <span class="keyword">const</span> <a class="code" href="classDocker_1_1RunOptions.html">RunOptions</a>&amp; options,</div><div class="line"><a name="l00264"></a><span class="lineno">  264</span>&#160;      <span class="keyword">const</span> <a class="code" href="classprocess_1_1Subprocess_1_1IO.html">process::Subprocess::IO</a>&amp; _stdout =</div><div class="
 line"><a name="l00265"></a><span class="lineno">  265</span>&#160;        <a class="code" href="classprocess_1_1Subprocess.html#aaa6e1b76ef54ed6db34d595811122ce0">process::Subprocess::FD</a>(<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#abd165ee6474b5b75bf075842fff13a04">STDOUT_FILENO</a>),</div><div class="line"><a name="l00266"></a><span class="lineno">  266</span>&#160;      <span class="keyword">const</span> <a class="code" href="classprocess_1_1Subprocess_1_1IO.html">process::Subprocess::IO</a>&amp; _stderr =</div><div class="line"><a name="l00267"></a><span class="lineno">  267</span>&#160;        <a class="code" href="classprocess_1_1Subprocess.html#aaa6e1b76ef54ed6db34d595811122ce0">process::Subprocess::FD</a>(<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ae2fe1725bb5e9823d089c46b9ed5266e">STDERR_FILENO</a>)) <span class="keyword">const</span>;</div><div class="line"><a name="l00268"></a><span class="lineno">  268</span>&
 #160;</div><div class="line"><a name="l00269"></a><span class="lineno">  269</span>&#160;  <span class="comment">// Returns the current docker version.</span></div><div class="line"><a name="l00270"></a><span class="lineno">  270</span>&#160;  <span class="keyword">virtual</span> <a class="code" href="classprocess_1_1Future.html">process::Future&lt;Version&gt;</a> <a class="code" href="classDocker.html#ac1d7d1dd254601751fe8af8048734345">version</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00271"></a><span class="lineno">  271</span>&#160;</div><div class="line"><a name="l00272"></a><span class="lineno">  272</span>&#160;  <span class="comment">// Performs &#39;docker stop -t TIMEOUT CONTAINER&#39;. If remove is true then a rm -f</span></div><div class="line"><a name="l00273"></a><span class="lineno">  273</span>&#160;  <span class="comment">// will be called when stop failed, otherwise a failure is returned. The</span></div><div class="line"><a name="l0
 0274"></a><span class="lineno">  274</span>&#160;  <span class="comment">// timeout parameter will be passed through to docker and is the amount of</span></div><div class="line"><a name="l00275"></a><span class="lineno">  275</span>&#160;  <span class="comment">// time for docker to wait after stopping a container before killing it.</span></div><div class="line"><a name="l00276"></a><span class="lineno">  276</span>&#160;  <span class="comment">// A value of zero (the default value) is the same as issuing a</span></div><div class="line"><a name="l00277"></a><span class="lineno">  277</span>&#160;  <span class="comment">// &#39;docker kill CONTAINER&#39;.</span></div><div class="line"><a name="l00278"></a><span class="lineno">  278</span>&#160;  <span class="keyword">virtual</span> <a class="code" href="classprocess_1_1Future.html">process::Future&lt;Nothing&gt;</a> <a class="code" href="classDocker.html#a4f45c8632608059b07157a65033474fc">stop</a>(</div><div class="line"><a name="l00
 279"></a><span class="lineno">  279</span>&#160;      <span class="keyword">const</span> std::string&amp; containerName,</div><div class="line"><a name="l00280"></a><span class="lineno">  280</span>&#160;      <span class="keyword">const</span> <a class="code" href="classDuration.html">Duration</a>&amp; timeout = <a class="code" href="classSeconds.html">Seconds</a>(0),</div><div class="line"><a name="l00281"></a><span class="lineno">  281</span>&#160;      <span class="keywordtype">bool</span> <span class="keyword">remove</span> = <span class="keyword">false</span>) <span class="keyword">const</span>;</div><div class="line"><a name="l00282"></a><span class="lineno">  282</span>&#160;</div><div class="line"><a name="l00283"></a><span class="lineno">  283</span>&#160;  <span class="comment">// Performs &#39;docker kill --signal=&lt;signal&gt; CONTAINER&#39;.</span></div><div class="line"><a name="l00284"></a><span class="lineno">  284</span>&#160;  <span class="keyword">virtual</span>
  <a class="code" href="classprocess_1_1Future.html">process::Future&lt;Nothing&gt;</a> <a class="code" href="classDocker.html#a3b46502ea75be07f46e5e92acaea7917">kill</a>(</div><div class="line"><a name="l00285"></a><span class="lineno">  285</span>&#160;      <span class="keyword">const</span> std::string&amp; containerName,</div><div class="line"><a name="l00286"></a><span class="lineno">  286</span>&#160;      <span class="keywordtype">int</span> signal) <span class="keyword">const</span>;</div><div class="line"><a name="l00287"></a><span class="lineno">  287</span>&#160;</div><div class="line"><a name="l00288"></a><span class="lineno">  288</span>&#160;  <span class="comment">// Performs &#39;docker rm (-f) CONTAINER&#39;.</span></div><div class="line"><a name="l00289"></a><span class="lineno">  289</span>&#160;  <span class="keyword">virtual</span> <a class="code" href="classprocess_1_1Future.html">process::Future&lt;Nothing&gt;</a> <a class="code" href="classDocker.html#afd1dd8
 dc67fd3d111164ff80f90761f4">rm</a>(</div><div class="line"><a name="l00290"></a><span class="lineno">  290</span>&#160;      <span class="keyword">const</span> std::string&amp; containerName,</div><div class="line"><a name="l00291"></a><span class="lineno">  291</span>&#160;      <span class="keywordtype">bool</span> force = <span class="keyword">false</span>) <span class="keyword">const</span>;</div><div class="line"><a name="l00292"></a><span class="lineno">  292</span>&#160;</div><div class="line"><a name="l00293"></a><span class="lineno">  293</span>&#160;  <span class="comment">// Performs &#39;docker inspect CONTAINER&#39;. If retryInterval is set,</span></div><div class="line"><a name="l00294"></a><span class="lineno">  294</span>&#160;  <span class="comment">// we will keep retrying inspect until the container is started or</span></div><div class="line"><a name="l00295"></a><span class="lineno">  295</span>&#160;  <span class="comment">// the future is discarded.</span></div
 ><div class="line"><a name="l00296"></a><span class="lineno">  296</span>&#160;  <span class="keyword">virtual</span> <a class="code" href="classprocess_1_1Future.html">process::Future&lt;Container&gt;</a> <a class="code" href="classDocker.html#a3be28ab0231c0fefaf839661b790c457">inspect</a>(</div><div class="line"><a name="l00297"></a><span class="lineno">  297</span>&#160;      <span class="keyword">const</span> std::string&amp; containerName,</div><div class="line"><a name="l00298"></a><span class="lineno">  298</span>&#160;      <span class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;Duration&gt;</a>&amp; retryInterval = <a class="code" href="structNone.html">None</a>()) <span class="keyword">const</span>;</div><div class="line"><a name="l00299"></a><span class="lineno">  299</span>&#160;</div><div class="line"><a name="l00300"></a><span class="lineno">  300</span>&#160;  <span class="comment">// Performs &#39;docker ps (-a)&#39;.</span></div><div cla
 ss="line"><a name="l00301"></a><span class="lineno">  301</span>&#160;  <span class="keyword">virtual</span> <a class="code" href="classprocess_1_1Future.html">process::Future&lt;std::vector&lt;Container&gt;</a>&gt; <a class="code" href="classDocker.html#a5ed360ee69fa51d583742bdf1e76e2c0">ps</a>(</div><div class="line"><a name="l00302"></a><span class="lineno">  302</span>&#160;      <span class="keywordtype">bool</span> all = <span class="keyword">false</span>,</div><div class="line"><a name="l00303"></a><span class="lineno">  303</span>&#160;      <span class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;std::string&gt;</a>&amp; <a class="code" href="namespaceos_1_1libraries_1_1Library.html#ab0e1a0e311049b6d685de1068e8f4690">prefix</a> = <a class="code" href="structNone.html">None</a>()) <span class="keyword">const</span>;</div><div class="line"><a name="l00304"></a><span class="lineno">  304</span>&#160;</div><div class="line"><a name="l00305"></a><span
  class="lineno">  305</span>&#160;  <span class="keyword">virtual</span> <a class="code" href="classprocess_1_1Future.html">process::Future&lt;Image&gt;</a> <a class="code" href="classDocker.html#ad4131f2a6b66ab4661339c51d20d812d">pull</a>(</div><div class="line"><a name="l00306"></a><span class="lineno">  306</span>&#160;      <span class="keyword">const</span> std::string&amp; directory,</div><div class="line"><a name="l00307"></a><span class="lineno">  307</span>&#160;      <span class="keyword">const</span> std::string&amp; <a class="code" href="namespacemesos_1_1uri_1_1docker.html#abbd9f55734f0b832bc5a87c3ee5d449e">image</a>,</div><div class="line"><a name="l00308"></a><span class="lineno">  308</span>&#160;      <span class="keywordtype">bool</span> force = <span class="keyword">false</span>) <span class="keyword">const</span>;</div><div class="line"><a name="l00309"></a><span class="lineno">  309</span>&#160;</div><div class="line"><a name="l00310"></a><span class="lineno">  
 310</span>&#160;  <span class="comment">// Validate current docker version is not less than minVersion.</span></div><div class="line"><a name="l00311"></a><span class="lineno">  311</span>&#160;  <span class="keyword">virtual</span> <a class="code" href="classTry.html">Try&lt;Nothing&gt;</a> <a class="code" href="classDocker.html#ac0a745d178d4607acca6097a9cb33a5f">validateVersion</a>(<span class="keyword">const</span> <a class="code" href="structVersion.html">Version</a>&amp; minVersion) <span class="keyword">const</span>;</div><div class="line"><a name="l00312"></a><span class="lineno">  312</span>&#160;</div><div class="line"><a name="l00313"></a><span class="lineno"><a class="line" href="classDocker.html#a4d4e8921b4acbd88c5eea3914e20b033">  313</a></span>&#160;  <span class="keyword">virtual</span> std::string <a class="code" href="classDocker.html#a4d4e8921b4acbd88c5eea3914e20b033">getPath</a>()</div><div class="line"><a name="l00314"></a><span class="lineno">  314</span>&#160; 
  {</div><div class="line"><a name="l00315"></a><span class="lineno">  315</span>&#160;    <span class="keywordflow">return</span> path;</div><div class="line"><a name="l00316"></a><span class="lineno">  316</span>&#160;  }</div><div class="line"><a name="l00317"></a><span class="lineno">  317</span>&#160;</div><div class="line"><a name="l00318"></a><span class="lineno"><a class="line" href="classDocker.html#ab615a0824c63169d3ff5e1124ac2889a">  318</a></span>&#160;  <span class="keyword">virtual</span> std::string <a class="code" href="classDocker.html#ab615a0824c63169d3ff5e1124ac2889a">getSocket</a>()</div><div class="line"><a name="l00319"></a><span class="lineno">  319</span>&#160;  {</div><div class="line"><a name="l00320"></a><span class="lineno">  320</span>&#160;    <span class="keywordflow">return</span> socket;</div><div class="line"><a name="l00321"></a><span class="lineno">  321</span>&#160;  }</div><div class="line"><a name="l00322"></a><span class="lineno">  322</span>&#
 160;</div><div class="line"><a name="l00323"></a><span class="lineno">  323</span>&#160;<span class="keyword">protected</span>:</div><div class="line"><a name="l00324"></a><span class="lineno">  324</span>&#160;  <span class="comment">// Uses the specified path to the Docker CLI tool.</span></div><div class="line"><a name="l00325"></a><span class="lineno"><a class="line" href="classDocker.html#a9e7459c5e36794e871a8019603b6beed">  325</a></span>&#160;  <a class="code" href="classDocker.html#a9e7459c5e36794e871a8019603b6beed">Docker</a>(<span class="keyword">const</span> std::string&amp; _path,</div><div class="line"><a name="l00326"></a><span class="lineno">  326</span>&#160;         <span class="keyword">const</span> std::string&amp; _socket,</div><div class="line"><a name="l00327"></a><span class="lineno">  327</span>&#160;         <span class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;JSON::Object&gt;</a>&amp; _config)</div><div class="line"><a name="
 l00328"></a><span class="lineno">  328</span>&#160;       : path(_path),</div><div class="line"><a name="l00329"></a><span class="lineno">  329</span>&#160;         socket(<a class="code" href="docker_2docker_8hpp.html#aaa33f928061d14ba4d30c9d242ab3af6">DEFAULT_DOCKER_HOST_PREFIX</a> + _socket),</div><div class="line"><a name="l00330"></a><span class="lineno">  330</span>&#160;         config(_config) {}</div><div class="line"><a name="l00331"></a><span class="lineno">  331</span>&#160;</div><div class="line"><a name="l00332"></a><span class="lineno">  332</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00333"></a><span class="lineno">  333</span>&#160;  <span class="keyword">static</span> <a class="code" href="classprocess_1_1Future.html">process::Future&lt;Version&gt;</a> _version(</div><div class="line"><a name="l00334"></a><span class="lineno">  334</span>&#160;      <span class="keyword">const</span> std::string&amp; cmd,</div><div class="line
 "><a name="l00335"></a><span class="lineno">  335</span>&#160;      <span class="keyword">const</span> <a class="code" href="classprocess_1_1Subprocess.html">process::Subprocess</a>&amp; s);</div><div class="line"><a name="l00336"></a><span class="lineno">  336</span>&#160;</div><div class="line"><a name="l00337"></a><span class="lineno">  337</span>&#160;  <span class="keyword">static</span> <a class="code" href="classprocess_1_1Future.html">process::Future&lt;Version&gt;</a> __version(</div><div class="line"><a name="l00338"></a><span class="lineno">  338</span>&#160;      <span class="keyword">const</span> <a class="code" href="classprocess_1_1Future.html">process::Future&lt;std::string&gt;</a>&amp; output);</div><div class="line"><a name="l00339"></a><span class="lineno">  339</span>&#160;</div><div class="line"><a name="l00340"></a><span class="lineno">  340</span>&#160;  <span class="keyword">static</span> <a class="code" href="classprocess_1_1Future.html">process::Future&lt;N
 othing&gt;</a> _stop(</div><div class="line"><a name="l00341"></a><span class="lineno">  341</span>&#160;      <span class="keyword">const</span> <a class="code" href="classDocker.html">Docker</a>&amp; <a class="code" href="namespacedocker.html">docker</a>,</div><div class="line"><a name="l00342"></a><span class="lineno">  342</span>&#160;      <span class="keyword">const</span> std::string&amp; containerName,</div><div class="line"><a name="l00343"></a><span class="lineno">  343</span>&#160;      <span class="keyword">const</span> std::string&amp; cmd,</div><div class="line"><a name="l00344"></a><span class="lineno">  344</span>&#160;      <span class="keyword">const</span> <a class="code" href="classprocess_1_1Subprocess.html">process::Subprocess</a>&amp; s,</div><div class="line"><a name="l00345"></a><span class="lineno">  345</span>&#160;      <span class="keywordtype">bool</span> <span class="keyword">remove</span>);</div><div class="line"><a name="l00346"></a><span class="line
 no">  346</span>&#160;</div><div class="line"><a name="l00347"></a><span class="lineno">  347</span>&#160;  <span class="keyword">static</span> <span class="keywordtype">void</span> _inspect(</div><div class="line"><a name="l00348"></a><span class="lineno">  348</span>&#160;      <span class="keyword">const</span> std::string&amp; cmd,</div><div class="line"><a name="l00349"></a><span class="lineno">  349</span>&#160;      <span class="keyword">const</span> <a class="code" href="classprocess_1_1Owned.html">process::Owned</a>&lt;<a class="code" href="classprocess_1_1Promise.html">process::Promise&lt;Container&gt;</a>&gt;&amp; <a class="code" href="namespacemesos_1_1internal_1_1log_1_1protocol.html#a3b1f8bd7b18c51af9d1f58842950b545">promise</a>,</div><div class="line"><a name="l00350"></a><span class="lineno">  350</span>&#160;      <span class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;Duration&gt;</a>&amp; retryInterval,</div><div class="line"><a name="
 l00351"></a><span class="lineno">  351</span>&#160;      std::shared_ptr&lt;std::pair&lt;lambda::function&lt;<span class="keywordtype">void</span>()&gt;, std::mutex&gt;&gt;</div><div class="line"><a name="l00352"></a><span class="lineno">  352</span>&#160;        callback);</div><div class="line"><a name="l00353"></a><span class="lineno">  353</span>&#160;</div><div class="line"><a name="l00354"></a><span class="lineno">  354</span>&#160;  <span class="keyword">static</span> <span class="keywordtype">void</span> __inspect(</div><div class="line"><a name="l00355"></a><span class="lineno">  355</span>&#160;      <span class="keyword">const</span> std::string&amp; cmd,</div><div class="line"><a name="l00356"></a><span class="lineno">  356</span>&#160;      <span class="keyword">const</span> <a class="code" href="classprocess_1_1Owned.html">process::Owned</a>&lt;<a class="code" href="classprocess_1_1Promise.html">process::Promise&lt;Container&gt;</a>&gt;&amp; <a class="code" href="names
 pacemesos_1_1internal_1_1log_1_1protocol.html#a3b1f8bd7b18c51af9d1f58842950b545">promise</a>,</div><div class="line"><a name="l00357"></a><span class="lineno">  357</span>&#160;      <span class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;Duration&gt;</a>&amp; retryInterval,</div><div class="line"><a name="l00358"></a><span class="lineno">  358</span>&#160;      <a class="code" href="classprocess_1_1Future.html">process::Future&lt;std::string&gt;</a> output,</div><div class="line"><a name="l00359"></a><span class="lineno">  359</span>&#160;      <span class="keyword">const</span> <a class="code" href="classprocess_1_1Subprocess.html">process::Subprocess</a>&amp; s,</div><div class="line"><a name="l00360"></a><span class="lineno">  360</span>&#160;      std::shared_ptr&lt;std::pair&lt;lambda::function&lt;<span class="keywordtype">void</span>()&gt;, std::mutex&gt;&gt;</div><div class="line"><a name="l00361"></a><span class="lineno">  361</span>&#160;      
   callback);</div><div class="line"><a name="l00362"></a><span class="lineno">  362</span>&#160;</div><div class="line"><a name="l00363"></a><span class="lineno">  363</span>&#160;  <span class="keyword">static</span> <span class="keywordtype">void</span> ___inspect(</div><div class="line"><a name="l00364"></a><span class="lineno">  364</span>&#160;      <span class="keyword">const</span> std::string&amp; cmd,</div><div class="line"><a name="l00365"></a><span class="lineno">  365</span>&#160;      <span class="keyword">const</span> <a class="code" href="classprocess_1_1Owned.html">process::Owned</a>&lt;<a class="code" href="classprocess_1_1Promise.html">process::Promise&lt;Container&gt;</a>&gt;&amp; <a class="code" href="namespacemesos_1_1internal_1_1log_1_1protocol.html#a3b1f8bd7b18c51af9d1f58842950b545">promise</a>,</div><div class="line"><a name="l00366"></a><span class="lineno">  366</span>&#160;      <span class="keyword">const</span> <a class="code" href="classOption.html">Opt
 ion&lt;Duration&gt;</a>&amp; retryInterval,</div><div class="line"><a name="l00367"></a><span class="lineno">  367</span>&#160;      <span class="keyword">const</span> <a class="code" href="classprocess_1_1Future.html">process::Future&lt;std::string&gt;</a>&amp; output,</div><div class="line"><a name="l00368"></a><span class="lineno">  368</span>&#160;      std::shared_ptr&lt;std::pair&lt;lambda::function&lt;<span class="keywordtype">void</span>()&gt;, std::mutex&gt;&gt;</div><div class="line"><a name="l00369"></a><span class="lineno">  369</span>&#160;        callback);</div><div class="line"><a name="l00370"></a><span class="lineno">  370</span>&#160;</div><div class="line"><a name="l00371"></a><span class="lineno">  371</span>&#160;  <span class="keyword">static</span> <a class="code" href="classprocess_1_1Future.html">process::Future&lt;std::vector&lt;Container&gt;</a>&gt; _ps(</div><div class="line"><a name="l00372"></a><span class="lineno">  372</span>&#160;      <span class="
 keyword">const</span> <a class="code" href="classDocker.html">Docker</a>&amp; docker,</div><div class="line"><a name="l00373"></a><span class="lineno">  373</span>&#160;      <span class="keyword">const</span> std::string&amp; cmd,</div><div class="line"><a name="l00374"></a><span class="lineno">  374</span>&#160;      <span class="keyword">const</span> <a class="code" href="classprocess_1_1Subprocess.html">process::Subprocess</a>&amp; s,</div><div class="line"><a name="l00375"></a><span class="lineno">  375</span>&#160;      <span class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;std::string&gt;</a>&amp; <a class="code" href="namespaceos_1_1libraries_1_1Library.html#ab0e1a0e311049b6d685de1068e8f4690">prefix</a>,</div><div class="line"><a name="l00376"></a><span class="lineno">  376</span>&#160;      <a class="code" href="classprocess_1_1Future.html">process::Future&lt;std::string&gt;</a> output);</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>&#160;  <span class="keyword">static</span> <a class="code" href="classprocess_1_1Future.html">process::Future&lt;std::vector&lt;Container&gt;</a>&gt; __ps(</div><div class="line"><a name="l00379"></a><span class="lineno">  379</span>&#160;      <span class="keyword">const</span> <a class="code" href="classDocker.html">Docker</a>&amp; docker,</div><div class="line"><a name="l00380"></a><span class="lineno">  380</span>&#160;      <span class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;std::string&gt;</a>&amp; prefix,</div><div class="line"><a name="l00381"></a><span class="lineno">  381</span>&#160;      <span class="keyword">const</span> std::string&amp; output);</div><div class="line"><a name="l00382"></a><span class="lineno">  382</span>&#160;</div><div class="line"><a name="l00383"></a><span class="lineno">  383</span>&#160;  <span class="keyword">
 static</span> <span class="keywordtype">void</span> inspectBatches(</div><div class="line"><a name="l00384"></a><span class="lineno">  384</span>&#160;      <a class="code" href="classprocess_1_1Owned.html">process::Owned</a>&lt;std::vector&lt;Docker::Container&gt;&gt; containers,</div><div class="line"><a name="l00385"></a><span class="lineno">  385</span>&#160;      <a class="code" href="classprocess_1_1Owned.html">process::Owned</a>&lt;std::vector&lt;std::string&gt;&gt; lines,</div><div class="line"><a name="l00386"></a><span class="lineno">  386</span>&#160;      <a class="code" href="classprocess_1_1Owned.html">process::Owned</a>&lt;<a class="code" href="classprocess_1_1Promise.html">process::Promise</a>&lt;std::vector&lt;Docker::Container&gt;&gt;&gt; <a class="code" href="namespacemesos_1_1internal_1_1log_1_1protocol.html#a3b1f8bd7b18c51af9d1f58842950b545">promise</a>,</div><div class="line"><a name="l00387"></a><span class="lineno">  387</span>&#160;      <span class="keyword
 ">const</span> <a class="code" href="classDocker.html">Docker</a>&amp; docker,</div><div class="line"><a name="l00388"></a><span class="lineno">  388</span>&#160;      <span class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;std::string&gt;</a>&amp; prefix);</div><div class="line"><a name="l00389"></a><span class="lineno">  389</span>&#160;</div><div class="line"><a name="l00390"></a><span class="lineno">  390</span>&#160;  <span class="keyword">static</span> std::vector&lt;process::Future&lt;Docker::Container&gt;&gt; createInspectBatch(</div><div class="line"><a name="l00391"></a><span class="lineno">  391</span>&#160;      <a class="code" href="classprocess_1_1Owned.html">process::Owned</a>&lt;std::vector&lt;std::string&gt;&gt; lines,</div><div class="line"><a name="l00392"></a><span class="lineno">  392</span>&#160;      <span class="keyword">const</span> <a class="code" href="classDocker.html">Docker</a>&amp; docker,</div><div class="line"><a name="l0
 0393"></a><span class="lineno">  393</span>&#160;      <span class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;std::string&gt;</a>&amp; prefix);</div><div class="line"><a name="l00394"></a><span class="lineno">  394</span>&#160;</div><div class="line"><a name="l00395"></a><span class="lineno">  395</span>&#160;  <span class="keyword">static</span> <a class="code" href="classprocess_1_1Future.html">process::Future&lt;Image&gt;</a> _pull(</div><div class="line"><a name="l00396"></a><span class="lineno">  396</span>&#160;      <span class="keyword">const</span> <a class="code" href="classDocker.html">Docker</a>&amp; docker,</div><div class="line"><a name="l00397"></a><span class="lineno">  397</span>&#160;      <span class="keyword">const</span> <a class="code" href="classprocess_1_1Subprocess.html">process::Subprocess</a>&amp; s,</div><div class="line"><a name="l00398"></a><span class="lineno">  398</span>&#160;      <span class="keyword">const</span> std:
 :string&amp; directory,</div><div class="line"><a name="l00399"></a><span class="lineno">  399</span>&#160;      <span class="keyword">const</span> std::string&amp; <a class="code" href="namespacemesos_1_1uri_1_1docker.html#abbd9f55734f0b832bc5a87c3ee5d449e">image</a>,</div><div class="line"><a name="l00400"></a><span class="lineno">  400</span>&#160;      <span class="keyword">const</span> std::string&amp; path,</div><div class="line"><a name="l00401"></a><span class="lineno">  401</span>&#160;      <span class="keyword">const</span> std::string&amp; socket,</div><div class="line"><a name="l00402"></a><span class="lineno">  402</span>&#160;      <span class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;JSON::Object&gt;</a>&amp; config,</div><div class="line"><a name="l00403"></a><span class="lineno">  403</span>&#160;      <a class="code" href="classprocess_1_1Future.html">process::Future&lt;std::string&gt;</a> output);</div><div class="line"><a name="l00
 404"></a><span class="lineno">  404</span>&#160;</div><div class="line"><a name="l00405"></a><span class="lineno">  405</span>&#160;  <span class="keyword">static</span> <a class="code" href="classprocess_1_1Future.html">process::Future&lt;Image&gt;</a> __pull(</div><div class="line"><a name="l00406"></a><span class="lineno">  406</span>&#160;      <span class="keyword">const</span> <a class="code" href="classDocker.html">Docker</a>&amp; docker,</div><div class="line"><a name="l00407"></a><span class="lineno">  407</span>&#160;      <span class="keyword">const</span> std::string&amp; directory,</div><div class="line"><a name="l00408"></a><span class="lineno">  408</span>&#160;      <span class="keyword">const</span> std::string&amp; image,</div><div class="line"><a name="l00409"></a><span class="lineno">  409</span>&#160;      <span class="keyword">const</span> std::string&amp; path,</div><div class="line"><a name="l00410"></a><span class="lineno">  410</span>&#160;      <span class
 ="keyword">const</span> std::string&amp; socket,</div><div class="line"><a name="l00411"></a><span class="lineno">  411</span>&#160;      <span class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;JSON::Object&gt;</a>&amp; config);</div><div class="line"><a name="l00412"></a><span class="lineno">  412</span>&#160;</div><div class="line"><a name="l00413"></a><span class="lineno">  413</span>&#160;  <span class="keyword">static</span> <a class="code" href="classprocess_1_1Future.html">process::Future&lt;Image&gt;</a> ___pull(</div><div class="line"><a name="l00414"></a><span class="lineno">  414</span>&#160;      <span class="keyword">const</span> <a class="code" href="classDocker.html">Docker</a>&amp; docker,</div><div class="line"><a name="l00415"></a><span class="lineno">  415</span>&#160;      <span class="keyword">const</span> <a class="code" href="classprocess_1_1Subprocess.html">process::Subprocess</a>&amp; s,</div><div class="line"><a name="l00416"></
 a><span class="lineno">  416</span>&#160;      <span class="keyword">const</span> std::string&amp; cmd,</div><div class="line"><a name="l00417"></a><span class="lineno">  417</span>&#160;      <span class="keyword">const</span> std::string&amp; directory,</div><div class="line"><a name="l00418"></a><span class="lineno">  418</span>&#160;      <span class="keyword">const</span> std::string&amp; image);</div><div class="line"><a name="l00419"></a><span class="lineno">  419</span>&#160;</div><div class="line"><a name="l00420"></a><span class="lineno">  420</span>&#160;  <span class="keyword">static</span> <a class="code" href="classprocess_1_1Future.html">process::Future&lt;Image&gt;</a> ____pull(</div><div class="line"><a name="l00421"></a><span class="lineno">  421</span>&#160;      <span class="keyword">const</span> std::string&amp; output);</div><div class="line"><a name="l00422"></a><span class="lineno">  422</span>&#160;</div><div class="line"><a name="l00423"></a><span class="li
 neno">  423</span>&#160;  <span class="keyword">static</span> <span class="keywordtype">void</span> pullDiscarded(</div><div class="line"><a name="l00424"></a><span class="lineno">  424</span>&#160;      <span class="keyword">const</span> <a class="code" href="classprocess_1_1Subprocess.html">process::Subprocess</a>&amp; s,</div><div class="line"><a name="l00425"></a><span class="lineno">  425</span>&#160;      <span class="keyword">const</span> std::string&amp; cmd);</div><div class="line"><a name="l00426"></a><span class="lineno">  426</span>&#160;</div><div class="line"><a name="l00427"></a><span class="lineno">  427</span>&#160;  <span class="keyword">const</span> std::string path;</div><div class="line"><a name="l00428"></a><span class="lineno">  428</span>&#160;  <span class="keyword">const</span> std::string socket;</div><div class="line"><a name="l00429"></a><span class="lineno">  429</span>&#160;  <span class="keyword">const</span> <a class="code" href="classOption.html">Op
 tion&lt;JSON::Object&gt;</a> config;</div><div class="line"><a name="l00430"></a><span class="lineno">  430</span>&#160;};</div><div class="line"><a name="l00431"></a><span class="lineno">  431</span>&#160;</div><div class="line"><a name="l00432"></a><span class="lineno">  432</span>&#160;<span class="preprocessor">#endif // __DOCKER_HPP__</span></div><div class="ttc" id="classDocker_1_1Image_html_a43aec521773705fa0148bacdc493e5a9"><div class="ttname"><a href="classDocker_1_1Image.html#a43aec521773705fa0148bacdc493e5a9">Docker::Image::entrypoint</a></div><div class="ttdeci">Option&lt; std::vector&lt; std::string &gt; &gt; entrypoint</div><div class="ttdef"><b>Definition:</b> docker.hpp:164</div></div>
+<a href="docker_2docker_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>&#160;<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>&#160;<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>&#160;<span class="comment">// distributed with this work for additional information</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<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>&#160;<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>&#160;<span class="comment">// &quot;License&quot;); you may not use this file except in compliance</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<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>&#160;<span class="comment">// di
 stributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<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>&#160;<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>&#160;<span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;</div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="preprocessor">#ifndef __DOCKER_HPP__</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="preprocessor">#define __DOCKER_HPP__</span></div><div class="line"><a name="l00
 019"></a><span class="lineno">   19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="preprocessor">#include &lt;map&gt;</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="preprocessor">#include &lt;mutex&gt;</span></div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span></div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="preprocessor">#include &lt;utility&gt;</span></div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="preprocessor">#include &lt;vector&gt;</span></div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;</div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="future_8hpp.html"
 >process/future.hpp</a>&gt;</span></div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="owned_8hpp.html">process/owned.hpp</a>&gt;</span></div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="include_2process_2subprocess_8hpp.html">process/subprocess.hpp</a>&gt;</span></div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;</div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="duration_8hpp.html">stout/duration.hpp</a>&gt;</span></div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="json_8hpp.html">stout/json.hpp</a>&gt;</span></div><div class="line"><a name="l00032"></a><span class="lineno">   32
 </span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="none_8hpp.html">stout/none.hpp</a>&gt;</span></div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="nothing_8hpp.html">stout/nothing.hpp</a>&gt;</span></div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="option_8hpp.html">stout/option.hpp</a>&gt;</span></div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="path_8hpp.html">stout/path.hpp</a>&gt;</span></div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="3rdparty_2stout_2include_2stout_2version_8hpp.html">stout/version.hpp</a>&gt;</span></div><div class="line"><a name="l00037"></a><span class="lineno
 ">   37</span>&#160;</div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="rm_8hpp.html">stout/os/rm.hpp</a>&gt;</span></div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;</div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="resources_8hpp.html">mesos/resources.hpp</a>&quot;</span></div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;</div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="src_2messages_2flags_8hpp.html">messages/flags.hpp</a>&quot;</span></div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;</div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;<span class="comment">// OS-spe
 cific default prefix to be used for the DOCKER_HOST environment</span></div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;<span class="comment">// variable. Note that on Linux, the default prefix is the only prefix</span></div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;<span class="comment">// available; only Windows supports multiple prefixes.</span></div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;<span class="comment">// TODO(hausdorff): Add support for the Windows `tcp://` prefix as well.</span></div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;<span class="preprocessor">#ifdef __WINDOWS__</span></div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;constexpr <span class="keywordtype">char</span> <a class="code" href="docker_2docker_8hpp.html#aaa33f928061d14ba4d30c9d242ab3af6">DEFAULT_DOCKER_HOST_PREFIX</a>[] = <span c
 lass="stringliteral">&quot;npipe://&quot;</span>;</div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="docker_2docker_8hpp.html#aaa33f928061d14ba4d30c9d242ab3af6">   51</a></span>&#160;constexpr <span class="keywordtype">char</span> <a class="code" href="docker_2docker_8hpp.html#aaa33f928061d14ba4d30c9d242ab3af6">DEFAULT_DOCKER_HOST_PREFIX</a>[] = <span class="stringliteral">&quot;unix://&quot;</span>;</div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;<span class="preprocessor">#endif // __WINDOWS__</span></div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;</div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;<span class="comment">// Abstraction for working with Docker (modeled on CLI).</span></div><div class="line"><a name="l00055"></
 a><span class="lineno">   55</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;<span class="comment">// TODO(benh): Make futures returned by functions be discardable.</span></div><div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="classDocker.html">   57</a></span>&#160;<span class="keyword">class </span><a class="code" href="classDocker.html">Docker</a></div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;{</div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;  <span class="comment">// Create Docker abstraction and optionally validate docker.</span></div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;  <span class="keyword">static</span> <a class="code" href="classTry.h
 tml">Try&lt;process::Owned&lt;Docker&gt;</a>&gt; <a class="code" href="classDocker.html#a370c1d613e35cc8b8e393dc8c83876e6">create</a>(</div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;      <span class="keyword">const</span> std::string&amp; <a class="code" href="namespacepath.html">path</a>,</div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;      <span class="keyword">const</span> std::string&

<TRUNCATED>

[02/50] mesos-site git commit: Updated the website built from mesos SHA: 7c9c72d.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/windows_2write_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/windows_2write_8hpp_source.html b/content/api/latest/c++/windows_2write_8hpp_source.html
index 4585f04..26b5647 100644
--- a/content/api/latest/c++/windows_2write_8hpp_source.html
+++ b/content/api/latest/c++/windows_2write_8hpp_source.html
@@ -52,7 +52,7 @@
 <div class="title">write.hpp</div>  </div>
 </div><!--header-->
 <div class="contents">
-<a href="windows_2write_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>&#160;<span class="comment">// Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<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>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<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>&#160;<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>&#160;<span class="comment">// distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<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>&#160;<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>&#160;<span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;</div><div cla
 ss="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="preprocessor">#ifndef __STOUT_OS_WINDOWS_WRITE_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="preprocessor">#define __STOUT_OS_WINDOWS_WRITE_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;</div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="nothing_8hpp.html">stout/nothing.hpp</a>&gt;</span></div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="try_8hpp.html">stout/try.hpp</a>&gt;</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="unreachable_8hpp.html">stout/unreachable.hpp</a>&gt;</span></div><div class="line">
 <a name="l00019"></a><span class="lineno">   19</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html">stout/windows.hpp</a>&gt;</span></div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;</div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="overlapped_8hpp.html">stout/internal/windows/overlapped.hpp</a>&gt;</span></div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="int__fd_8hpp.html">stout/os/int_fd.hpp</a>&gt;</span></div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="stout_2include_2stout_2os_2socket_8hpp.html">stout/os/sock
 et.hpp</a>&gt;</span></div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;</div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<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>&#160;</div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="comment">// Asynchronous write on a overlapped int_fd. Returns `Error` on fatal errors,</span></div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="comment">// `None()` on a successful pending IO operation or number of bytes written on</span></div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="comment">// a successful IO operation that finished immediately.</span></div><div class="line"><a name="l00031"></a><span class="lineno"><a class="line" href=
 "namespaceos.html#a1af52685ba3e8fe8676af86cd16a1eb8">   31</a></span>&#160;<span class="keyword">inline</span> <a class="code" href="classResult.html">Result&lt;size_t&gt;</a> <a class="code" href="namespaceos.html#a1af52685ba3e8fe8676af86cd16a1eb8">write_async</a>(</div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;    <span class="keyword">const</span> <a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a>&amp; fd,</div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;    <span class="keyword">const</span> <span class="keywordtype">void</span>* data,</div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;    <span class="keywordtype">size_t</span> <a class="code" href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">size</a>,</div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;    OVERLAPPED* overlapped)</div><div class=
 "line"><a name="l00036"></a><span class="lineno">   36</span>&#160;{</div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;  CHECK_LE(size, UINT_MAX);</div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;  <span class="keywordflow">switch</span> (fd.type()) {</div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;    <span class="keywordflow">case</span> <a class="code" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5ad09c4cb1265f1772bb757a7af277b49f">WindowsFD::Type::HANDLE</a>: {</div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;      DWORD bytes;</div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;      <span class="keyword">const</span> <span class="keywordtype">bool</span> success =</div><div class="line"><a name="l00043"></a><spa
 n class="lineno">   43</span>&#160;        ::WriteFile(fd, data, static_cast&lt;DWORD&gt;(size), &amp;bytes, overlapped);</div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;</div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;      <a class="code" href="namespaceinternal_1_1windows.html#a4ed4d1bae6b01fb85f8e6fad0b10599d">return ::internal::windows::process_async_io_result</a>(success, bytes);</div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;    }</div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;    <span class="keywordflow">case</span> <a class="code" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5a75fbea08c09e684e6b3f3961761354fa">WindowsFD::Type::SOCKET</a>: {</div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;      static_assert(</div><div class="line"><a name="l00049"></a><span class="lineno">   49</s
 pan>&#160;          std::is_same&lt;OVERLAPPED, WSAOVERLAPPED&gt;::value,</div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;          <span class="stringliteral">&quot;Expected `WSAOVERLAPPED` to be of type `OVERLAPPED`.&quot;</span>);</div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;</div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;      <span class="comment">// Note that it&#39;s okay to allocate this on the stack, since the WinSock</span></div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;      <span class="comment">// providers must copy the WSABUF to their internal buffers. See</span></div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;      <span class="comment">// https://msdn.microsoft.com/en-us/library/windows/desktop/ms741688(v=vs.85).aspx // NOLINT(whitespace/line_length)</span></div><div class="line"><a name="
 l00055"></a><span class="lineno">   55</span>&#160;      WSABUF buf = {</div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;        <span class="keyword">static_cast&lt;</span>u_long<span class="keyword">&gt;</span>(<a class="code" href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">size</a>),</div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;        static_cast&lt;char*&gt;(const_cast&lt;void*&gt;(data))</div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;      };</div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;</div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;      DWORD bytes;</div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;      <span class="keyword">const</span> <span class="keywordtype">int</span> result =</div><div class="line"><a name="l00062"></a><span class="linen
 o">   62</span>&#160;        ::WSASend(fd, &amp;buf, 1, &amp;bytes, 0, overlapped, <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;</div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;      <a class="code" href="namespaceinternal_1_1windows.html#a4ed4d1bae6b01fb85f8e6fad0b10599d">return ::internal::windows::process_async_io_result</a>(result == 0, bytes);</div><div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;    }</div><div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;  }</div><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;</div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;  <a class="code" href="unreachable_8hpp.html#a0bc63b24b654ca433be7b97a3edde132">UNREACHABLE</a>();</div><div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;}</div><
 div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;</div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;</div><div class="line"><a name="l00072"></a><span class="lineno"><a class="line" href="namespaceos.html#a73da9d49515dfff761c4887c3d6032c0">   72</a></span>&#160;<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.html#a73da9d49515dfff761c4887c3d6032c0">write</a>(<span class="keyword">const</span> <a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a>&amp; fd, <span class="keyword">const</span> <span class="keywordtype">void</span>* data, <span class="keywordtype">size_t</span> <a class="code" href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">size</a>)</div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;{</div><d
 iv class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;  CHECK_LE(size, INT_MAX);</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>&#160;  <span class="keywordflow">switch</span> (fd.type()) {</div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;    <span class="keywordflow">case</span> <a class="code" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5ad09c4cb1265f1772bb757a7af277b49f">WindowsFD::Type::HANDLE</a>: {</div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;      <span class="comment">// Handle non-overlapped case. We just use the regular `WriteFile` since</span></div><div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;      <span class="comment">// seekable overlapped files require an offset, which we don&#39;t track.</span></div><div class=
 "line"><a name="l00080"></a><span class="lineno">   80</span>&#160;      <span class="keywordflow">if</span> (!fd.is_overlapped()) {</div><div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;        DWORD bytes;</div><div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;        <span class="keyword">const</span> BOOL result =</div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;          ::WriteFile(fd, data, static_cast&lt;DWORD&gt;(size), &amp;bytes, <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;</div><div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;        <span class="keywordflow">if</span> (result == FALSE) {</div><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;          <span class="comment">// Indicates an error, but we can&#39;t return a `WindowsError`.</span></div
 ><div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;          <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;        }</div><div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;</div><div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;        <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a894c4d58faeee7675b9e7e8244de1386">ssize_t</a><span class="keyword">&gt;</span>(bytes);</div><div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;      }</div><div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;</div><div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;      <span class="comment">// Asynchronous handle, we can use the `write_async` function</sp
 an></div><div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;      <span class="comment">// and then wait on the overlapped object for a synchronous write.</span></div><div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;      <a class="code" href="classTry.html">Try&lt;OVERLAPPED&gt;</a> overlapped_ =</div><div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;        <a class="code" href="namespaceinternal_1_1windows.html#a388bd9a30ab487f5d035e542187e379a">::internal::windows::init_overlapped_for_sync_io</a>();</div><div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;</div><div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;      <span class="keywordflow">if</span> (overlapped_.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;        <sp
 an class="keywordflow">return</span> -1;</div><div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;      }</div><div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;</div><div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;      OVERLAPPED overlapped = overlapped_.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>();</div><div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;      <a class="code" href="classResult.html">Result&lt;size_t&gt;</a> result = <a class="code" href="namespaceos.html#a1af52685ba3e8fe8676af86cd16a1eb8">write_async</a>(fd, data, size, &amp;overlapped);</div><div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;</div><div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;      <span class="keywordflow">if</span> (result.<a class="code" href="classResult.html#aeca16ad17d299ad885c9b46c83b12a
 3d">isError</a>()) {</div><div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;        <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;      }</div><div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;</div><div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;      <span class="keywordflow">if</span> (result.<a class="code" href="classResult.html#a85eaa52037223d71092e65701c166562">isSome</a>()) {</div><div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;        <span class="keywordflow">return</span> result.<a class="code" href="classResult.html#aedf79f3b14dcda5791b84a64ada4d412">get</a>();</div><div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;      }</div><div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;</div><div class="line"><a name="l00113"></a><
 span class="lineno">  113</span>&#160;      <span class="comment">// IO is pending, so wait for the overlapped object.</span></div><div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;      DWORD bytes;</div><div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;      <span class="keyword">const</span> BOOL wait_success =</div><div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;        ::GetOverlappedResult(fd, &amp;overlapped, &amp;bytes, TRUE);</div><div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;</div><div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;      <span class="keywordflow">if</span> (wait_success == FALSE) {</div><div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;        <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;      }</div><div c
 lass="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;</div><div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;      <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a894c4d58faeee7675b9e7e8244de1386">ssize_t</a><span class="keyword">&gt;</span>(bytes);</div><div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;    }</div><div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;    <span class="keywordflow">case</span> <a class="code" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5a75fbea08c09e684e6b3f3961761354fa">WindowsFD::Type::SOCKET</a>: {</div><div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;      <a class="code" href="namespacenet.html#aa0a46766b4aca53ea50e1921567ddb40">return ::send</a>(fd, (<span class="keyword">const</span> <span c
 lass="keywordtype">char</span>*)data, static_cast&lt;int&gt;(size), 0);</div><div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;    }</div><div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;  }</div><div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;</div><div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;  <a class="code" href="unreachable_8hpp.html#a0bc63b24b654ca433be7b97a3edde132">UNREACHABLE</a>();</div><div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;}</div><div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;</div><div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;} <span class="comment">// namespace os {</span></div><div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;</div><div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;</div><div cla
 ss="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;<span class="preprocessor">#endif // __STOUT_OS_WINDOWS_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>
+<a href="windows_2write_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>&#160;<span class="comment">// Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<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>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<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>&#160;<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>&#160;<span class="comment">// distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<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>&#160;<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>&#160;<span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;</div><div cla
 ss="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="preprocessor">#ifndef __STOUT_OS_WINDOWS_WRITE_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="preprocessor">#define __STOUT_OS_WINDOWS_WRITE_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;</div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="nothing_8hpp.html">stout/nothing.hpp</a>&gt;</span></div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="try_8hpp.html">stout/try.hpp</a>&gt;</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="unreachable_8hpp.html">stout/unreachable.hpp</a>&gt;</span></div><div class="line">
 <a name="l00019"></a><span class="lineno">   19</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html">stout/windows.hpp</a>&gt;</span></div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;</div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="overlapped_8hpp.html">stout/internal/windows/overlapped.hpp</a>&gt;</span></div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="int__fd_8hpp.html">stout/os/int_fd.hpp</a>&gt;</span></div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="stout_2include_2stout_2os_2socket_8hpp.html">stout/os/sock
 et.hpp</a>&gt;</span></div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;</div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<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>&#160;</div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="comment">// Asynchronous write on a overlapped int_fd. Returns `Error` on fatal errors,</span></div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="comment">// `None()` on a successful pending IO operation or number of bytes written on</span></div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="comment">// a successful IO operation that finished immediately.</span></div><div class="line"><a name="l00031"></a><span class="lineno"><a class="line" href=
 "namespaceos.html#a1af52685ba3e8fe8676af86cd16a1eb8">   31</a></span>&#160;<span class="keyword">inline</span> <a class="code" href="classResult.html">Result&lt;size_t&gt;</a> <a class="code" href="namespaceos.html#a1af52685ba3e8fe8676af86cd16a1eb8">write_async</a>(</div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;    <span class="keyword">const</span> <a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a>&amp; fd,</div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;    <span class="keyword">const</span> <span class="keywordtype">void</span>* data,</div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;    <span class="keywordtype">size_t</span> <a class="code" href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">size</a>,</div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;    OVERLAPPED* overlapped)</div><div class=
 "line"><a name="l00036"></a><span class="lineno">   36</span>&#160;{</div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;  CHECK_LE(size, UINT_MAX);</div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;  <span class="keywordflow">switch</span> (fd.type()) {</div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;    <span class="keywordflow">case</span> <a class="code" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5ad09c4cb1265f1772bb757a7af277b49f">WindowsFD::Type::HANDLE</a>: {</div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;      DWORD bytes;</div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;      <span class="keyword">const</span> <span class="keywordtype">bool</span> success =</div><div class="line"><a name="l00043"></a><spa
 n class="lineno">   43</span>&#160;        ::WriteFile(fd, data, static_cast&lt;DWORD&gt;(size), &amp;bytes, overlapped);</div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;</div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;      <a class="code" href="namespaceinternal_1_1windows.html#a4ed4d1bae6b01fb85f8e6fad0b10599d">return ::internal::windows::process_async_io_result</a>(success, bytes);</div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;    }</div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;    <span class="keywordflow">case</span> <a class="code" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5a75fbea08c09e684e6b3f3961761354fa">WindowsFD::Type::SOCKET</a>: {</div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;      static_assert(</div><div class="line"><a name="l00049"></a><span class="lineno">   49</s
 pan>&#160;          std::is_same&lt;OVERLAPPED, WSAOVERLAPPED&gt;::value,</div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;          <span class="stringliteral">&quot;Expected `WSAOVERLAPPED` to be of type `OVERLAPPED`.&quot;</span>);</div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;</div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;      <span class="comment">// Note that it&#39;s okay to allocate this on the stack, since the WinSock</span></div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;      <span class="comment">// providers must copy the WSABUF to their internal buffers. See</span></div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;      <span class="comment">// https://msdn.microsoft.com/en-us/library/windows/desktop/ms741688(v=vs.85).aspx // NOLINT(whitespace/line_length)</span></div><div class="line"><a name="
 l00055"></a><span class="lineno">   55</span>&#160;      WSABUF buf = {</div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;        <span class="keyword">static_cast&lt;</span>u_long<span class="keyword">&gt;</span>(<a class="code" href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">size</a>),</div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;        static_cast&lt;char*&gt;(const_cast&lt;void*&gt;(data))</div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;      };</div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;</div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;      DWORD bytes;</div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;      <span class="keyword">const</span> <span class="keywordtype">int</span> result =</div><div class="line"><a name="l00062"></a><span class="linen
 o">   62</span>&#160;        ::WSASend(fd, &amp;buf, 1, &amp;bytes, 0, overlapped, <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;</div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;      <a class="code" href="namespaceinternal_1_1windows.html#a4ed4d1bae6b01fb85f8e6fad0b10599d">return ::internal::windows::process_async_io_result</a>(result == 0, bytes);</div><div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;    }</div><div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;  }</div><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;</div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;  <a class="code" href="unreachable_8hpp.html#a0bc63b24b654ca433be7b97a3edde132">UNREACHABLE</a>();</div><div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;}</div><
 div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;</div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;</div><div class="line"><a name="l00072"></a><span class="lineno"><a class="line" href="namespaceos.html#a73da9d49515dfff761c4887c3d6032c0">   72</a></span>&#160;<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.html#a73da9d49515dfff761c4887c3d6032c0">write</a>(<span class="keyword">const</span> <a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a>&amp; fd, <span class="keyword">const</span> <span class="keywordtype">void</span>* data, <span class="keywordtype">size_t</span> <a class="code" href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">size</a>)</div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;{</div><d
 iv class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;  CHECK_LE(size, INT_MAX);</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>&#160;  <span class="keywordflow">switch</span> (fd.type()) {</div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;    <span class="keywordflow">case</span> <a class="code" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5ad09c4cb1265f1772bb757a7af277b49f">WindowsFD::Type::HANDLE</a>: {</div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;      <span class="comment">// Handle non-overlapped case. We just use the regular `WriteFile` since</span></div><div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;      <span class="comment">// seekable overlapped files require an offset, which we don&#39;t track.</span></div><div class=
 "line"><a name="l00080"></a><span class="lineno">   80</span>&#160;      <span class="keywordflow">if</span> (!fd.is_overlapped()) {</div><div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;        DWORD bytes;</div><div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;        <span class="keyword">const</span> BOOL result =</div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;          ::WriteFile(fd, data, static_cast&lt;DWORD&gt;(size), &amp;bytes, <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;</div><div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;        <span class="keywordflow">if</span> (result == FALSE) {</div><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;          <span class="comment">// Indicates an error, but we can&#39;t return a `WindowsError`.</span></div
 ><div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;          <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;        }</div><div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;</div><div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;        <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a894c4d58faeee7675b9e7e8244de1386">ssize_t</a><span class="keyword">&gt;</span>(bytes);</div><div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;      }</div><div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;</div><div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;      <span class="comment">// Asynchronous handle, we can use the `write_async` function</sp
 an></div><div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;      <span class="comment">// and then wait on the overlapped object for a synchronous write.</span></div><div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;      <a class="code" href="classTry.html">Try&lt;OVERLAPPED&gt;</a> overlapped_ =</div><div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;        <a class="code" href="namespaceinternal_1_1windows.html#a388bd9a30ab487f5d035e542187e379a">::internal::windows::init_overlapped_for_sync_io</a>();</div><div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;</div><div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;      <span class="keywordflow">if</span> (overlapped_.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;        <sp
 an class="keywordflow">return</span> -1;</div><div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;      }</div><div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;</div><div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;      OVERLAPPED overlapped = overlapped_.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>();</div><div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;      <a class="code" href="classResult.html">Result&lt;size_t&gt;</a> result = <a class="code" href="namespaceos.html#a1af52685ba3e8fe8676af86cd16a1eb8">write_async</a>(fd, data, size, &amp;overlapped);</div><div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;</div><div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;      <span class="keywordflow">if</span> (result.<a class="code" href="classResult.html#aeca16ad17d299ad885c9b46c83b12a
 3d">isError</a>()) {</div><div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;        <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;      }</div><div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;</div><div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;      <span class="keywordflow">if</span> (result.<a class="code" href="classResult.html#a85eaa52037223d71092e65701c166562">isSome</a>()) {</div><div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;        <span class="keywordflow">return</span> result.<a class="code" href="classResult.html#aedf79f3b14dcda5791b84a64ada4d412">get</a>();</div><div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;      }</div><div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;</div><div class="line"><a name="l00113"></a><
 span class="lineno">  113</span>&#160;      <span class="comment">// IO is pending, so wait for the overlapped object.</span></div><div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;      DWORD bytes;</div><div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;      <span class="keyword">const</span> BOOL wait_success =</div><div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;        ::GetOverlappedResult(fd, &amp;overlapped, &amp;bytes, TRUE);</div><div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;</div><div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;      <span class="keywordflow">if</span> (wait_success == FALSE) {</div><div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;        <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;      }</div><div c
 lass="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;</div><div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;      <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a894c4d58faeee7675b9e7e8244de1386">ssize_t</a><span class="keyword">&gt;</span>(bytes);</div><div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;    }</div><div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;    <span class="keywordflow">case</span> <a class="code" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5a75fbea08c09e684e6b3f3961761354fa">WindowsFD::Type::SOCKET</a>: {</div><div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;      <a class="code" href="namespaceprocess_1_1windows.html#a04c64346155d34517acdf8b587162868">return ::send</a>(fd, (<span class="keyword">const
 </span> <span class="keywordtype">char</span>*)data, static_cast&lt;int&gt;(size), 0);</div><div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;    }</div><div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;  }</div><div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;</div><div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;  <a class="code" href="unreachable_8hpp.html#a0bc63b24b654ca433be7b97a3edde132">UNREACHABLE</a>();</div><div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;}</div><div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;</div><div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;} <span class="comment">// namespace os {</span></div><div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;</div><div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160
 ;</div><div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;<span class="preprocessor">#endif // __STOUT_OS_WINDOWS_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="namespaceos_1_1stat_html_a7a116891923bc8b5d8c50f78da8657be"><div class="ttname"><a href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">os::stat::size</a></div><div class="ttdeci">Try&lt; Bytes &gt; size(const std::string &amp;path, const FollowSymlink follow=FollowSymlink::FOLLOW_SYMLINK)</div><div class="ttdef"><b>Definition:</b> stat.hpp:121</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 &amp; get()&amp;</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 &amp;fd, const void *data, size_t size)</div><div class="ttdef"><b>Definition:</b> write.hpp:72</div></div>
@@ -65,7 +65,6 @@
 <div class="ttc" id="classos_1_1WindowsFD_html_ac0377db41e1c167339c97dbd69c79ae5a75fbea08c09e684e6b3f3961761354fa"><div class="ttname"><a href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5a75fbea08c09e684e6b3f3961761354fa">os::WindowsFD::Type::SOCKET</a></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="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_aa0a46766b4aca53ea50e1921567ddb40"><div class="ttname"><a href="namespacenet.html#aa0a46766b4aca53ea50e1921567ddb40">net::send</a></div><div class="ttdeci">ssize_t send(const int_fd &amp;fd, const void *buf, size_t len, int flags)</div><div class="ttdef"><b>Definition:</b> socket.hpp:159</div></div>
 <div class="ttc" id="namespaceos_html_a1af52685ba3e8fe8676af86cd16a1eb8"><div class="ttname"><a href="namespaceos.html#a1af52685ba3e8fe8676af86cd16a1eb8">os::write_async</a></div><div class="ttdeci">Result&lt; size_t &gt; write_async(const int_fd &amp;fd, const void *data, size_t size, OVERLAPPED *overlapped)</div><div class="ttdef"><b>Definition:</b> write.hpp:31</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="classResult_html_aedf79f3b14dcda5791b84a64ada4d412"><div class="ttname"><a href="classResult.html#aedf79f3b14dcda5791b84a64ada4d412">Result::get</a></div><div class="ttdeci">const T &amp; get() const </div><div class="ttdef"><b>Definition:</b> result.hpp:115</div></div>
@@ -78,6 +77,7 @@
 <div class="ttc" id="classResult_html_aeca16ad17d299ad885c9b46c83b12a3d"><div class="ttname"><a href="classResult.html#aeca16ad17d299ad885c9b46c83b12a3d">Result::isError</a></div><div class="ttdeci">bool isError() const </div><div class="ttdef"><b>Definition:</b> result.hpp:113</div></div>
 <div class="ttc" id="int__fd_8hpp_html_aea4dbda01c90455f158ffa9b924c2f07"><div class="ttname"><a href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a></div><div class="ttdeci">int int_fd</div><div class="ttdef"><b>Definition:</b> int_fd.hpp:35</div></div>
 <div class="ttc" id="unreachable_8hpp_html"><div class="ttname"><a href="unreachable_8hpp.html">unreachable.hpp</a></div></div>
+<div class="ttc" id="namespaceprocess_1_1windows_html_a04c64346155d34517acdf8b587162868"><div class="ttname"><a href="namespaceprocess_1_1windows.html#a04c64346155d34517acdf8b587162868">process::windows::send</a></div><div class="ttdeci">Future&lt; size_t &gt; send(const int_fd &amp;fd, const void *buf, size_t size)</div></div>
 </div><!-- fragment --></div><!-- contents -->
 <!-- start footer part -->
 <hr class="footer"/><address class="footer"><small>


[22/50] mesos-site git commit: Updated the website built from mesos SHA: 7c9c72d.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/memory__test__helper_8hpp.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/memory__test__helper_8hpp.html b/content/api/latest/c++/memory__test__helper_8hpp.html
index 4eac804..3898f7b 100644
--- a/content/api/latest/c++/memory__test__helper_8hpp.html
+++ b/content/api/latest/c++/memory__test__helper_8hpp.html
@@ -55,7 +55,7 @@
 <div class="title">memory_test_helper.hpp File Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
-<div class="textblock"><code>#include &lt;<a class="el" href="subprocess_8hpp_source.html">process/subprocess.hpp</a>&gt;</code><br />
+<div class="textblock"><code>#include &lt;<a class="el" href="include_2process_2subprocess_8hpp_source.html">process/subprocess.hpp</a>&gt;</code><br />
 <code>#include &lt;<a class="el" href="bytes_8hpp_source.html">stout/bytes.hpp</a>&gt;</code><br />
 <code>#include &lt;<a class="el" href="option_8hpp_source.html">stout/option.hpp</a>&gt;</code><br />
 <code>#include &lt;<a class="el" href="subcommand_8hpp_source.html">stout/subcommand.hpp</a>&gt;</code><br />

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/memory__test__helper_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/memory__test__helper_8hpp_source.html b/content/api/latest/c++/memory__test__helper_8hpp_source.html
index 327b6d5..0723ec2 100644
--- a/content/api/latest/c++/memory__test__helper_8hpp_source.html
+++ b/content/api/latest/c++/memory__test__helper_8hpp_source.html
@@ -52,14 +52,14 @@
 <div class="title">memory_test_helper.hpp</div>  </div>
 </div><!--header-->
 <div class="contents">
-<a href="memory__test__helper_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>&#160;<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>&#160;<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>&#160;<span class="comment">// distributed with this work for additional information</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<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>&#160;<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>&#160;<span class="comment">// &quot;License&quot;); you may not use this file except in compliance</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<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>&#160;<span class="comment"
 >// distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<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>&#160;<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>&#160;<span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;</div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="preprocessor">#ifndef __MEMORY_TEST_HELPER_HPP__</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="preprocessor">#define __MEMORY_TEST_HELPER_HPP__</span></div>
 <div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="subprocess_8hpp.html">process/subprocess.hpp</a>&gt;</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;</div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="bytes_8hpp.html">stout/bytes.hpp</a>&gt;</span></div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="option_8hpp.html">stout/option.hpp</a>&gt;</span></div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="subcommand_8hpp.html">stout/subcommand.hpp</a>&gt;</span></div><div class="line"><a name="l00025
 "></a><span class="lineno">   25</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="try_8hpp.html">stout/try.hpp</a>&gt;</span></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>&#160;<span class="keyword">namespace </span><a class="code" href="namespacemesos.html">mesos</a> {</div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceinternal.html">internal</a> {</div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="keyword">namespace </span>tests {</div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;</div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="comment">// The abstraction for controlling the memory usage of a subprocess.</span></div><d
 iv class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;<span class="comment">// TODO(chzhcn): Currently, this helper is only supposed to be used by</span></div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;<span class="comment">// one thread. Consider making it thread safe.</span></div><div class="line"><a name="l00034"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1tests_1_1MemoryTestHelper.html">   34</a></span>&#160;<span class="keyword">class </span><a class="code" href="classmesos_1_1internal_1_1tests_1_1MemoryTestHelper.html">MemoryTestHelper</a> : <span class="keyword">public</span> <a class="code" href="classSubcommand.html">Subcommand</a></div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;{</div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00037"></a><span class="
 lineno"><a class="line" href="classmesos_1_1internal_1_1tests_1_1MemoryTestHelper.html#aa5dad9a209f238aa7d65dde34d8e5c2d">   37</a></span>&#160;  <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> <a class="code" href="classmesos_1_1internal_1_1tests_1_1MemoryTestHelper.html#aa5dad9a209f238aa7d65dde34d8e5c2d">NAME</a>[];</div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1tests_1_1MemoryTestHelper.html#ae280d4f92d5a8e97a79adaed2a7abcf0">   39</a></span>&#160;  <a class="code" href="classmesos_1_1internal_1_1tests_1_1MemoryTestHelper.html#ae280d4f92d5a8e97a79adaed2a7abcf0">MemoryTestHelper</a>() : <a class="code" href="classSubcommand.html">Subcommand</a>(NAME) {}</div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;  <span class="keyword">virtual</span> 
 <a class="code" href="classmesos_1_1internal_1_1tests_1_1MemoryTestHelper.html#a32c6b1ef064ede21de324efdd47dc921">~MemoryTestHelper</a>();</div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;</div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;  <span class="comment">// Spawns a subprocess.</span></div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;  <span class="comment">// TODO(chzhcn): Consider returning a future instead of blocking.</span></div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;  <a class="code" href="classTry.html">Try&lt;Nothing&gt;</a> <a class="code" href="classmesos_1_1internal_1_1tests_1_1MemoryTestHelper.html#a845ef8e61ce21226e4717685d7f95463">spawn</a>();</div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;</div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;  <span class="co
 mment">// Kill and reap the subprocess if exists.</span></div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;  <span class="comment">// TODO(chzhcn): Consider returning a future instead of blocking.</span></div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;  <span class="keywordtype">void</span> <a class="code" href="classmesos_1_1internal_1_1tests_1_1MemoryTestHelper.html#adc29f6b3d28eb25bbf433fe6eeea4b43">cleanup</a>();</div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;</div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;  <span class="comment">// Returns the pid of the subprocess.</span></div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;  <a class="code" href="classTry.html">Try&lt;pid_t&gt;</a> <a class="code" href="classmesos_1_1internal_1_1tests_1_1MemoryTestHelper.html#a503b2ac86325c300400661654abf064c">pid</a>();</div
 ><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;</div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;  <span class="comment">// Allocate and lock specified page-aligned anonymous memory (RSS)</span></div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;  <span class="comment">// in the subprocess. It uses mlock and memset to make sure</span></div><div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;  <span class="comment">// allocated memory is mapped.</span></div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;  <span class="comment">// TODO(chzhcn): Consider returning a future instead of blocking.</span></div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;  <a class="code" href="classTry.html">Try&lt;Nothing&gt;</a> <a class="code" href="classmesos_1_1internal_1_1tests_1_1MemoryTestHelper.html#ab33a4ec1bdc1
 97fca39d2a8285e868f2">increaseRSS</a>(<span class="keyword">const</span> <a class="code" href="classBytes.html">Bytes</a>&amp; <a class="code" href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">size</a>);</div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;</div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;  <span class="comment">// This function attempts to generate requested size of page cache</span></div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;  <span class="comment">// in the subprocess by using a small buffer and writing it to disk</span></div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;  <span class="comment">// multiple times.</span></div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;  <span class="comment">// TODO(chzhcn): Consider returning a future instead of blocking.</span></div><div class="
 line"><a name="l00063"></a><span class="lineno">   63</span>&#160;  <a class="code" href="classTry.html">Try&lt;Nothing&gt;</a> <a class="code" href="classmesos_1_1internal_1_1tests_1_1MemoryTestHelper.html#a49cb28aaf92bfdcfe17320735214451b">increasePageCache</a>(<span class="keyword">const</span> <a class="code" href="classBytes.html">Bytes</a>&amp; size = <a class="code" href="bytes_8hpp.html#a5d8fe3ccbf9cafff06846c05b3ca864b">Megabytes</a>(1));</div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;</div><div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;<span class="keyword">protected</span>:</div><div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;  <span class="comment">// The main function of the subprocess. It runs in a loop and</span></div><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;  <span class="comment">// executes commands passed from stdin.</span></div><di
 v class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classmesos_1_1internal_1_1tests_1_1MemoryTestHelper.html#ade2cd702f1351d1de330086ae8639a70">execute</a>();</div><div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;</div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;  <a class="code" href="classTry.html">Try&lt;Nothing&gt;</a> requestAndWait(<span class="keyword">const</span> std::string&amp; <a class="code" href="namespaceprocess_1_1http.html#ad8f400b5e54038df7e5662ec35da05fa">request</a>);</div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;</div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;  <a class="code" href="classOpt
 ion.html">Option&lt;process::Subprocess&gt;</a> s;</div><div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;};</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>&#160;} <span class="comment">// namespace tests {</span></div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;} <span class="comment">// namespace internal {</span></div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;} <span class="comment">// namespace mesos {</span></div><div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;</div><div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;<span class="preprocessor">#endif // __MEMORY_TEST_HELPER_HPP__</span></div><div class="ttc" id="classOption_html"><div class="ttname"><a href="classOption.html">Option&lt; process::Subprocess &gt;</a>
 </div></div>
+<a href="memory__test__helper_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>&#160;<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>&#160;<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>&#160;<span class="comment">// distributed with this work for additional information</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<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>&#160;<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>&#160;<span class="comment">// &quot;License&quot;); you may not use this file except in compliance</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<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>&#160;<span class="comment"
 >// distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<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>&#160;<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>&#160;<span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;</div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="preprocessor">#ifndef __MEMORY_TEST_HELPER_HPP__</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="preprocessor">#define __MEMORY_TEST_HELPER_HPP__</span></div>
 <div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="include_2process_2subprocess_8hpp.html">process/subprocess.hpp</a>&gt;</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;</div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="bytes_8hpp.html">stout/bytes.hpp</a>&gt;</span></div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="option_8hpp.html">stout/option.hpp</a>&gt;</span></div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="subcommand_8hpp.html">stout/subcommand.hpp</a>&gt;</span></div><div class="lin
 e"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="try_8hpp.html">stout/try.hpp</a>&gt;</span></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>&#160;<span class="keyword">namespace </span><a class="code" href="namespacemesos.html">mesos</a> {</div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceinternal.html">internal</a> {</div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="keyword">namespace </span>tests {</div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;</div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="comment">// The abstraction for controlling the memory usage of a subproce
 ss.</span></div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;<span class="comment">// TODO(chzhcn): Currently, this helper is only supposed to be used by</span></div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;<span class="comment">// one thread. Consider making it thread safe.</span></div><div class="line"><a name="l00034"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1tests_1_1MemoryTestHelper.html">   34</a></span>&#160;<span class="keyword">class </span><a class="code" href="classmesos_1_1internal_1_1tests_1_1MemoryTestHelper.html">MemoryTestHelper</a> : <span class="keyword">public</span> <a class="code" href="classSubcommand.html">Subcommand</a></div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;{</div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00037"
 ></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1tests_1_1MemoryTestHelper.html#aa5dad9a209f238aa7d65dde34d8e5c2d">   37</a></span>&#160;  <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> <a class="code" href="classmesos_1_1internal_1_1tests_1_1MemoryTestHelper.html#aa5dad9a209f238aa7d65dde34d8e5c2d">NAME</a>[];</div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1tests_1_1MemoryTestHelper.html#ae280d4f92d5a8e97a79adaed2a7abcf0">   39</a></span>&#160;  <a class="code" href="classmesos_1_1internal_1_1tests_1_1MemoryTestHelper.html#ae280d4f92d5a8e97a79adaed2a7abcf0">MemoryTestHelper</a>() : <a class="code" href="classSubcommand.html">Subcommand</a>(NAME) {}</div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;  <span class="keywor
 d">virtual</span> <a class="code" href="classmesos_1_1internal_1_1tests_1_1MemoryTestHelper.html#a32c6b1ef064ede21de324efdd47dc921">~MemoryTestHelper</a>();</div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;</div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;  <span class="comment">// Spawns a subprocess.</span></div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;  <span class="comment">// TODO(chzhcn): Consider returning a future instead of blocking.</span></div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;  <a class="code" href="classTry.html">Try&lt;Nothing&gt;</a> <a class="code" href="classmesos_1_1internal_1_1tests_1_1MemoryTestHelper.html#a845ef8e61ce21226e4717685d7f95463">spawn</a>();</div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;</div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160
 ;  <span class="comment">// Kill and reap the subprocess if exists.</span></div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;  <span class="comment">// TODO(chzhcn): Consider returning a future instead of blocking.</span></div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;  <span class="keywordtype">void</span> <a class="code" href="classmesos_1_1internal_1_1tests_1_1MemoryTestHelper.html#adc29f6b3d28eb25bbf433fe6eeea4b43">cleanup</a>();</div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;</div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;  <span class="comment">// Returns the pid of the subprocess.</span></div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;  <a class="code" href="classTry.html">Try&lt;pid_t&gt;</a> <a class="code" href="classmesos_1_1internal_1_1tests_1_1MemoryTestHelper.html#a503b2ac86325c300400661654abf064
 c">pid</a>();</div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;</div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;  <span class="comment">// Allocate and lock specified page-aligned anonymous memory (RSS)</span></div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;  <span class="comment">// in the subprocess. It uses mlock and memset to make sure</span></div><div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;  <span class="comment">// allocated memory is mapped.</span></div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;  <span class="comment">// TODO(chzhcn): Consider returning a future instead of blocking.</span></div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;  <a class="code" href="classTry.html">Try&lt;Nothing&gt;</a> <a class="code" href="classmesos_1_1internal_1_1tests_1_1MemoryTestHelper.
 html#ab33a4ec1bdc197fca39d2a8285e868f2">increaseRSS</a>(<span class="keyword">const</span> <a class="code" href="classBytes.html">Bytes</a>&amp; <a class="code" href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">size</a>);</div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;</div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;  <span class="comment">// This function attempts to generate requested size of page cache</span></div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;  <span class="comment">// in the subprocess by using a small buffer and writing it to disk</span></div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;  <span class="comment">// multiple times.</span></div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;  <span class="comment">// TODO(chzhcn): Consider returning a future instead of blocking.</span>
 </div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;  <a class="code" href="classTry.html">Try&lt;Nothing&gt;</a> <a class="code" href="classmesos_1_1internal_1_1tests_1_1MemoryTestHelper.html#a49cb28aaf92bfdcfe17320735214451b">increasePageCache</a>(<span class="keyword">const</span> <a class="code" href="classBytes.html">Bytes</a>&amp; size = <a class="code" href="bytes_8hpp.html#a5d8fe3ccbf9cafff06846c05b3ca864b">Megabytes</a>(1));</div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;</div><div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;<span class="keyword">protected</span>:</div><div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;  <span class="comment">// The main function of the subprocess. It runs in a loop and</span></div><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;  <span class="comment">// executes commands passed from stdi
 n.</span></div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classmesos_1_1internal_1_1tests_1_1MemoryTestHelper.html#ade2cd702f1351d1de330086ae8639a70">execute</a>();</div><div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;</div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;  <a class="code" href="classTry.html">Try&lt;Nothing&gt;</a> requestAndWait(<span class="keyword">const</span> std::string&amp; <a class="code" href="namespaceprocess_1_1http.html#ad8f400b5e54038df7e5662ec35da05fa">request</a>);</div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;</div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;  <a class="co
 de" href="classOption.html">Option&lt;process::Subprocess&gt;</a> s;</div><div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;};</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>&#160;} <span class="comment">// namespace tests {</span></div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;} <span class="comment">// namespace internal {</span></div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;} <span class="comment">// namespace mesos {</span></div><div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;</div><div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;<span class="preprocessor">#endif // __MEMORY_TEST_HELPER_HPP__</span></div><div class="ttc" id="classOption_html"><div class="ttname"><a href="classOption.html">Option&lt; process::S
 ubprocess &gt;</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&lt; Bytes &gt; size(const std::string &amp;path, const FollowSymlink follow=FollowSymlink::FOLLOW_SYMLINK)</div><div class="ttdef"><b>Definition:</b> stat.hpp:121</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&lt; Response &gt; request(const Request &amp;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</a></div><div class="ttdef"><b>Definition:</b> check.hpp:33</div></div>
 <div class="ttc" id="classmesos_1_1internal_1_1tests_1_1MemoryTestHelper_html_ade2cd702f1351d1de330086ae8639a70"><div class="ttname"><a href="classmesos_1_1internal_1_1tests_1_1MemoryTestHelper.html#ade2cd702f1351d1de330086ae8639a70">mesos::internal::tests::MemoryTestHelper::execute</a></div><div class="ttdeci">virtual int execute()</div></div>
 <div class="ttc" id="classmesos_1_1internal_1_1tests_1_1MemoryTestHelper_html_aa5dad9a209f238aa7d65dde34d8e5c2d"><div class="ttname"><a href="classmesos_1_1internal_1_1tests_1_1MemoryTestHelper.html#aa5dad9a209f238aa7d65dde34d8e5c2d">mesos::internal::tests::MemoryTestHelper::NAME</a></div><div class="ttdeci">static const char NAME[]</div><div class="ttdef"><b>Definition:</b> memory_test_helper.hpp:37</div></div>
-<div class="ttc" id="subprocess_8hpp_html"><div class="ttname"><a href="subprocess_8hpp.html">subprocess.hpp</a></div></div>
 <div class="ttc" id="bytes_8hpp_html_a5d8fe3ccbf9cafff06846c05b3ca864b"><div class="ttname"><a href="bytes_8hpp.html#a5d8fe3ccbf9cafff06846c05b3ca864b">Megabytes</a></div><div class="ttdeci">constexpr Bytes Megabytes(uint64_t value)</div><div class="ttdef"><b>Definition:</b> bytes.hpp:123</div></div>
+<div class="ttc" id="include_2process_2subprocess_8hpp_html"><div class="ttname"><a href="include_2process_2subprocess_8hpp.html">subprocess.hpp</a></div></div>
 <div class="ttc" id="classmesos_1_1internal_1_1tests_1_1MemoryTestHelper_html_ae280d4f92d5a8e97a79adaed2a7abcf0"><div class="ttname"><a href="classmesos_1_1internal_1_1tests_1_1MemoryTestHelper.html#ae280d4f92d5a8e97a79adaed2a7abcf0">mesos::internal::tests::MemoryTestHelper::MemoryTestHelper</a></div><div class="ttdeci">MemoryTestHelper()</div><div class="ttdef"><b>Definition:</b> memory_test_helper.hpp:39</div></div>
 <div class="ttc" id="classmesos_1_1internal_1_1tests_1_1MemoryTestHelper_html_a845ef8e61ce21226e4717685d7f95463"><div class="ttname"><a href="classmesos_1_1internal_1_1tests_1_1MemoryTestHelper.html#a845ef8e61ce21226e4717685d7f95463">mesos::internal::tests::MemoryTestHelper::spawn</a></div><div class="ttdeci">Try&lt; Nothing &gt; spawn()</div></div>
 <div class="ttc" id="classSubcommand_html"><div class="ttname"><a href="classSubcommand.html">Subcommand</a></div><div class="ttdef"><b>Definition:</b> subcommand.hpp:41</div></div>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/namespacemembers_a.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/namespacemembers_a.html b/content/api/latest/c++/namespacemembers_a.html
index b8ef3a1..7608ff7 100644
--- a/content/api/latest/c++/namespacemembers_a.html
+++ b/content/api/latest/c++/namespacemembers_a.html
@@ -95,6 +95,7 @@
 <li>accept()
 : <a class="el" href="namespacenet.html#ae830b749f06b2b6d2ed9c42ecb1763d7">net</a>
 , <a class="el" href="namespaceprocess_1_1network.html#aa05dd9eea0c1e4d3d49e2fc049c1a446">process::network</a>
+, <a class="el" href="namespaceprocess_1_1windows.html#a1f34e4ee3092afe93c37c170430c03f5">process::windows</a>
 </li>
 <li>access()
 : <a class="el" href="namespaceos.html#a426a9c189f65b7e3f63e16eb11ec73c3">os</a>
@@ -104,7 +105,7 @@
 , <a class="el" href="namespacemesos_1_1internal_1_1tests_1_1v1_1_1scheduler.html#ae3e0f014f4e41c4deeff4d6c0e148663">mesos::internal::tests::v1::scheduler</a>
 </li>
 <li>ACTION_P()
-: <a class="el" href="namespacemesos_1_1internal_1_1tests.html#aedefb539485255be5a1e684d2c35513e">mesos::internal::tests</a>
+: <a class="el" href="namespacemesos_1_1internal_1_1tests.html#acec23b946fa51e72d1f6b4331ad56e8c">mesos::internal::tests</a>
 , <a class="el" href="namespacemesos_1_1internal_1_1tests_1_1v1_1_1scheduler.html#a8e89b9cea175d555034b042fee28d6b8">mesos::internal::tests::v1::scheduler</a>
 </li>
 <li>ACTION_P2()
@@ -198,13 +199,13 @@
 : <a class="el" href="namespaceos.html#a706dc9d1287978f358a9a23b77037fb0">os</a>
 </li>
 <li>async()
-: <a class="el" href="namespaceprocess.html#a9a7ae46e9f2d15e3fcd2bff8c87204c9">process</a>
+: <a class="el" href="namespaceprocess.html#a92b69ab22f734498cfe8cf6edd92fd2a">process</a>
 </li>
 <li>async_watcher
 : <a class="el" href="namespaceprocess.html#abde24dee21e5f3c5110d36020c9f8d89">process</a>
 </li>
 <li>attach()
-: <a class="el" href="namespacerouting_1_1filter_1_1internal.html#a65ca143d4e951198b3ed448d5696cc2a">routing::filter::internal</a>
+: <a class="el" href="namespacerouting_1_1filter_1_1internal.html#a3ae22bb34cae1ea9e5d0a30cafeb0d4f">routing::filter::internal</a>
 </li>
 <li>AttributeList
 : <a class="el" href="namespaceinternal_1_1windows.html#a57ccac11227b87ed48b2798ebc1c5e04">internal::windows</a>
@@ -241,7 +242,7 @@
 : <a class="el" href="namespacemesos.html#a1cf38910e9883f2375ee724671784e27">mesos</a>
 </li>
 <li>await()
-: <a class="el" href="namespaceprocess.html#a9d64abf575bde6dc82f9d915b33743c8">process</a>
+: <a class="el" href="namespaceprocess.html#a4e2dd66121c628a77b57766a7a276838">process</a>
 , <a class="el" href="namespaceprocess_1_1internal.html#a45915c2c6b7aea85b1c9a726158f19fc">process::internal</a>
 </li>
 <li>awaited()

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/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 c141b4d..dc44df3 100644
--- a/content/api/latest/c++/namespacemembers_c.html
+++ b/content/api/latest/c++/namespacemembers_c.html
@@ -271,6 +271,7 @@
 : <a class="el" href="namespacenet.html#ad810412a39640d3db31448c8ce7b280b">net</a>
 , <a class="el" href="namespaceprocess_1_1http.html#a54e53c8006298fe99e3fb5f55c0e8c41">process::http</a>
 , <a class="el" href="namespaceprocess_1_1network.html#a502d62f6f908591b8677c90341af28cc">process::network</a>
+, <a class="el" href="namespaceprocess_1_1windows.html#a5afdaeaeb57343d0aca728b74dcd3f71">process::windows</a>
 </li>
 <li>construct()
 : <a class="el" href="namespacemesos_1_1uri.html#a4bbf8b5e900159cbe1f4f311ce26fb63">mesos::uri</a>
@@ -451,7 +452,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#ae06a22b6660e2f3d3e6b66c032f5963b">mesos::internal::tests::internal</a>
+: <a class="el" href="namespacemesos_1_1internal_1_1tests_1_1internal.html#afc0baf70c6610ce0ccce0e556a4727cf">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>
@@ -521,7 +522,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>
@@ -558,7 +559,7 @@
 : <a class="el" href="namespacemesos_1_1internal_1_1protobuf.html#a0a8d385223ec86f5b9431a8a67dac151">mesos::internal::protobuf</a>
 </li>
 <li>createPersistentVolume()
-: <a class="el" href="namespacemesos_1_1internal_1_1tests_1_1common.html#ab3f6f80401c5645318402940ca2121ce">mesos::internal::tests::common</a>
+: <a class="el" href="namespacemesos_1_1internal_1_1tests_1_1common.html#afd8335a177e8bfe417b4668da9e161ac">mesos::internal::tests::common</a>
 , <a class="el" href="namespacemesos_1_1internal_1_1tests_1_1internal.html#a983767ec82f466f6b7c00b18aff1fa3a">mesos::internal::tests::internal</a>
 , <a class="el" href="namespacemesos_1_1internal_1_1tests_1_1v1.html#a5781795d2ad97feb34a5ff805fad1bec">mesos::internal::tests::v1</a>
 </li>
@@ -569,7 +570,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#a858856c5b332d277d20be66515b44e19">mesos::internal::master::quota</a>
+: <a class="el" href="namespacemesos_1_1internal_1_1master_1_1quota.html#a771e86d8a90e4839be7549ae1b388e1a">mesos::internal::master::quota</a>
 </li>
 <li>createRange()
 : <a class="el" href="namespacemesos_1_1internal_1_1tests.html#aa3baef77e9071163d2e2dfb2b48798c1">mesos::internal::tests</a>
@@ -610,7 +611,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/09fd0301/content/api/latest/c++/namespacemembers_func_a.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/namespacemembers_func_a.html b/content/api/latest/c++/namespacemembers_func_a.html
index 255e2eb..55329e7 100644
--- a/content/api/latest/c++/namespacemembers_func_a.html
+++ b/content/api/latest/c++/namespacemembers_func_a.html
@@ -95,6 +95,7 @@
 <li>accept()
 : <a class="el" href="namespacenet.html#ae830b749f06b2b6d2ed9c42ecb1763d7">net</a>
 , <a class="el" href="namespaceprocess_1_1network.html#aa05dd9eea0c1e4d3d49e2fc049c1a446">process::network</a>
+, <a class="el" href="namespaceprocess_1_1windows.html#a1f34e4ee3092afe93c37c170430c03f5">process::windows</a>
 </li>
 <li>access()
 : <a class="el" href="namespaceos.html#a426a9c189f65b7e3f63e16eb11ec73c3">os</a>
@@ -104,7 +105,7 @@
 , <a class="el" href="namespacemesos_1_1internal_1_1tests_1_1v1_1_1scheduler.html#ae3e0f014f4e41c4deeff4d6c0e148663">mesos::internal::tests::v1::scheduler</a>
 </li>
 <li>ACTION_P()
-: <a class="el" href="namespacemesos_1_1internal_1_1tests.html#aedefb539485255be5a1e684d2c35513e">mesos::internal::tests</a>
+: <a class="el" href="namespacemesos_1_1internal_1_1tests.html#acec23b946fa51e72d1f6b4331ad56e8c">mesos::internal::tests</a>
 , <a class="el" href="namespacemesos_1_1internal_1_1tests_1_1v1_1_1scheduler.html#a8e89b9cea175d555034b042fee28d6b8">mesos::internal::tests::v1::scheduler</a>
 </li>
 <li>ACTION_P2()
@@ -144,7 +145,7 @@
 </li>
 <li>append()
 : <a class="el" href="namespaceprotobuf.html#aa693e51d8d57a50543a7c2fb686a3ab3">protobuf</a>
-, <a class="el" href="namespacestrings_1_1internal.html#a98e3542d098140d417fcb3d6e35836a0">strings::internal</a>
+, <a class="el" href="namespacestrings_1_1internal.html#ae013029d60b66f6980085f55a27c00e7">strings::internal</a>
 </li>
 <li>appendPaths()
 : <a class="el" href="namespaceos_1_1libraries.html#a980d85a5e6c3980841696f8774283b39">os::libraries</a>
@@ -165,10 +166,10 @@
 : <a class="el" href="namespaceos.html#a706dc9d1287978f358a9a23b77037fb0">os</a>
 </li>
 <li>async()
-: <a class="el" href="namespaceprocess.html#a92b69ab22f734498cfe8cf6edd92fd2a">process</a>
+: <a class="el" href="namespaceprocess.html#a9a7ae46e9f2d15e3fcd2bff8c87204c9">process</a>
 </li>
 <li>attach()
-: <a class="el" href="namespacerouting_1_1filter_1_1internal.html#a4147e528ed5b27b16f0afd9eedc5085b">routing::filter::internal</a>
+: <a class="el" href="namespacerouting_1_1filter_1_1internal.html#a3ae22bb34cae1ea9e5d0a30cafeb0d4f">routing::filter::internal</a>
 </li>
 <li>AUTHENTICATION()
 : <a class="el" href="namespaceprocess.html#af11700c40575d7826e6e820896ab7023">process</a>
@@ -180,7 +181,7 @@
 : <a class="el" href="namespacemesos.html#a1cf38910e9883f2375ee724671784e27">mesos</a>
 </li>
 <li>await()
-: <a class="el" href="namespaceprocess.html#a4e2dd66121c628a77b57766a7a276838">process</a>
+: <a class="el" href="namespaceprocess.html#a9d64abf575bde6dc82f9d915b33743c8">process</a>
 , <a class="el" href="namespaceprocess_1_1internal.html#a45915c2c6b7aea85b1c9a726158f19fc">process::internal</a>
 </li>
 <li>awaited()

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/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 76165a1..c976cfe 100644
--- a/content/api/latest/c++/namespacemembers_func_c.html
+++ b/content/api/latest/c++/namespacemembers_func_c.html
@@ -185,6 +185,7 @@
 : <a class="el" href="namespacenet.html#ad810412a39640d3db31448c8ce7b280b">net</a>
 , <a class="el" href="namespaceprocess_1_1http.html#a54e53c8006298fe99e3fb5f55c0e8c41">process::http</a>
 , <a class="el" href="namespaceprocess_1_1network.html#a502d62f6f908591b8677c90341af28cc">process::network</a>
+, <a class="el" href="namespaceprocess_1_1windows.html#a5afdaeaeb57343d0aca728b74dcd3f71">process::windows</a>
 </li>
 <li>construct()
 : <a class="el" href="namespacemesos_1_1uri.html#a4bbf8b5e900159cbe1f4f311ce26fb63">mesos::uri</a>
@@ -328,7 +329,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>
@@ -398,7 +399,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#a670c20d9dcd273993b028edc3c79f6a1">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>
@@ -435,7 +436,7 @@
 : <a class="el" href="namespacemesos_1_1internal_1_1protobuf.html#a0a8d385223ec86f5b9431a8a67dac151">mesos::internal::protobuf</a>
 </li>
 <li>createPersistentVolume()
-: <a class="el" href="namespacemesos_1_1internal_1_1tests_1_1common.html#ab3f6f80401c5645318402940ca2121ce">mesos::internal::tests::common</a>
+: <a class="el" href="namespacemesos_1_1internal_1_1tests_1_1common.html#afd8335a177e8bfe417b4668da9e161ac">mesos::internal::tests::common</a>
 , <a class="el" href="namespacemesos_1_1internal_1_1tests_1_1internal.html#a983767ec82f466f6b7c00b18aff1fa3a">mesos::internal::tests::internal</a>
 , <a class="el" href="namespacemesos_1_1internal_1_1tests_1_1v1.html#a5781795d2ad97feb34a5ff805fad1bec">mesos::internal::tests::v1</a>
 </li>
@@ -446,13 +447,13 @@
 : <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#a858856c5b332d277d20be66515b44e19">mesos::internal::master::quota</a>
+: <a class="el" href="namespacemesos_1_1internal_1_1master_1_1quota.html#a771e86d8a90e4839be7549ae1b388e1a">mesos::internal::master::quota</a>
 </li>
 <li>createRange()
 : <a class="el" href="namespacemesos_1_1internal_1_1tests.html#aa3baef77e9071163d2e2dfb2b48798c1">mesos::internal::tests</a>
 </li>
 <li>createRequest()
-: <a class="el" href="namespaceprocess_1_1http.html#af2b66a0484ac2a6448270526c854251c">process::http</a>
+: <a class="el" href="namespaceprocess_1_1http.html#ad368a8449dbf9bc0bd6cec4a8a3532f1">process::http</a>
 </li>
 <li>createReservedResource()
 : <a class="el" href="namespacemesos_1_1internal_1_1tests_1_1common.html#a9faf1357ddbd892de9f2673ae1f1b8ca">mesos::internal::tests::common</a>
@@ -500,7 +501,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#ae7baced1ecb23a4fffbd6d7cf1ac90ce">mesos::internal::protobuf</a>
+: <a class="el" href="namespacemesos_1_1internal_1_1protobuf.html#a9568ffade693b25df978d5512b079ab3">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/09fd0301/content/api/latest/c++/namespacemembers_func_i.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/namespacemembers_func_i.html b/content/api/latest/c++/namespacemembers_func_i.html
index dd03ab9..c94edf0 100644
--- a/content/api/latest/c++/namespacemembers_func_i.html
+++ b/content/api/latest/c++/namespacemembers_func_i.html
@@ -168,6 +168,10 @@
 <li>io_wait_time_recursive()
 : <a class="el" href="namespacecgroups_1_1blkio_1_1cfq.html#add688181241530f0a30d4c7e5520a4d5">cgroups::blkio::cfq</a>
 </li>
+<li>is_async()
+: <a class="el" href="namespaceprocess_1_1io_1_1internal.html#a2291f1f69f4bdf80f3b114c493eb1e37">process::io::internal</a>
+, <a class="el" href="namespaceprocess_1_1io.html#ada6541d78cad2ecc225be8a26662c748">process::io</a>
+</li>
 <li>is_inprogress_error()
 : <a class="el" href="namespacenet.html#a6d996e15b39630257af8d8a0379c7f7a">net</a>
 </li>
@@ -220,7 +224,7 @@
 : <a class="el" href="namespacemesos_1_1roles.html#a70ebdbe08b14acfb4ef2571ce909cc86">mesos::roles</a>
 </li>
 <li>isTerminalState()
-: <a class="el" href="namespacemesos_1_1internal_1_1protobuf.html#ade777537955dc212aea80866edd089f3">mesos::internal::protobuf</a>
+: <a class="el" href="namespacemesos_1_1internal_1_1protobuf.html#aa31907fb62769822a77c06ffbf10451f">mesos::internal::protobuf</a>
 </li>
 <li>isUp()
 : <a class="el" href="namespacerouting_1_1link.html#a7d1c8b69ea1c451975f9275fd11466e3">routing::link</a>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/namespacemembers_func_p.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/namespacemembers_func_p.html b/content/api/latest/c++/namespacemembers_func_p.html
index ce0f6ec..94cb0cc 100644
--- a/content/api/latest/c++/namespacemembers_func_p.html
+++ b/content/api/latest/c++/namespacemembers_func_p.html
@@ -174,7 +174,7 @@
 : <a class="el" href="namespaceos.html#a3fc3402e6d83c2e2f1dc680d77489a29">os</a>
 </li>
 <li>pids()
-: <a class="el" href="namespaceos.html#abdecf7ea8278e2d8b2110ecd2e8ca0ec">os</a>
+: <a class="el" href="namespaceos.html#a42af1cab63434cedf2b698cd6f49f073">os</a>
 , <a class="el" href="namespaceproc.html#a810141e1502dd8b9a7a410da6caf7ed7">proc</a>
 </li>
 <li>pipe()
@@ -198,12 +198,16 @@
 <li>post()
 : <a class="el" href="namespaceprocess_1_1http.html#a0fd44430515dd0fed35dd5715bb104c9">process::http</a>
 , <a class="el" href="namespaceprocess_1_1http_1_1streaming.html#ae8a18c7263d4aefb7b1973c12590c688">process::http::streaming</a>
-, <a class="el" href="namespaceprocess.html#a39beeddfda71dd96bf6a5c4b59481c5d">process</a>
+, <a class="el" href="namespaceprocess.html#a2b0f5478fa6a52497167aa994ff600d9">process</a>
 </li>
 <li>prepare()
 : <a class="el" href="namespacecgroups.html#a4bf20862574beb5b0f9af7799489866f">cgroups</a>
 , <a class="el" href="namespacemesos_1_1internal_1_1fs_1_1chroot.html#a3c224bd1aaafda45a323c3d84f8cc85a">mesos::internal::fs::chroot</a>
 </li>
+<li>prepare_async()
+: <a class="el" href="namespaceprocess_1_1io_1_1internal.html#a9458b24220892124c2112b3fe85e585e">process::io::internal</a>
+, <a class="el" href="namespaceprocess_1_1io.html#a9db94d84fb44b21fb669ade7c6a82114">process::io</a>
+</li>
 <li>process()
 : <a class="el" href="namespaceos.html#acd11eaf54627e394ca79979ee884f6c4">os</a>
 </li>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/namespacemembers_func_r.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/namespacemembers_func_r.html b/content/api/latest/c++/namespacemembers_func_r.html
index 158ecfd..12785aa 100644
--- a/content/api/latest/c++/namespacemembers_func_r.html
+++ b/content/api/latest/c++/namespacemembers_func_r.html
@@ -100,7 +100,9 @@
 , <a class="el" href="namespacemesos_1_1internal_1_1credentials.html#a137c93d60149616181a10e9f39986f7f">mesos::internal::credentials</a>
 , <a class="el" href="namespacemesos_1_1internal_1_1slave_1_1state.html#adeb89c1623e8d5af457b5b130aceac1d">mesos::internal::slave::state</a>
 , <a class="el" href="namespaceos.html#aa1d97ff0a93229e1fe6b33e3e2d567f7">os</a>
+, <a class="el" href="namespaceprocess_1_1io_1_1internal.html#ac0a90b8abf47098e5a57d90e744a42a8">process::io::internal</a>
 , <a class="el" href="namespaceprocess_1_1io.html#ad1290a283a4d16068acfef3903bfd88b">process::io</a>
+, <a class="el" href="namespaceprocess_1_1windows.html#a7436ed89e84ff3415987de0ca9428d08">process::windows</a>
 , <a class="el" href="namespaceprotobuf.html#a2120146c620b72d4e1e3ae47bdacb1b3">protobuf</a>
 </li>
 <li>read&lt; Resources &gt;()
@@ -133,6 +135,7 @@
 </li>
 <li>recv()
 : <a class="el" href="namespacenet.html#ae1804e10c81f5743b459eeae1f6a701a">net</a>
+, <a class="el" href="namespaceprocess_1_1windows.html#a37fde6f31c2f9838a18cf83c2c865134">process::windows</a>
 </li>
 <li>redirect()
 : <a class="el" href="namespaceprocess_1_1io.html#ab9c4a52a88fcc9983438e391643424ca">process::io</a>
@@ -188,7 +191,7 @@
 : <a class="el" href="namespaceprocess_1_1http.html#ad8f400b5e54038df7e5662ec35da05fa">process::http</a>
 </li>
 <li>requestDelete()
-: <a class="el" href="namespaceprocess_1_1http.html#a1443ad581d0388a87013f0284906c2b3">process::http</a>
+: <a class="el" href="namespaceprocess_1_1http.html#aa37acfb70e0b901b6f10c3d4a9b33c95">process::http</a>
 </li>
 <li>reregisterSlave()
 : <a class="el" href="namespacemesos_1_1internal_1_1master_1_1validation_1_1master_1_1message.html#aa161808296e305b8b17479f2f7b70fa4">mesos::internal::master::validation::master::message</a>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/namespacemembers_func_s.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/namespacemembers_func_s.html b/content/api/latest/c++/namespacemembers_func_s.html
index a00ebd3..13e3305 100644
--- a/content/api/latest/c++/namespacemembers_func_s.html
+++ b/content/api/latest/c++/namespacemembers_func_s.html
@@ -104,9 +104,11 @@
 </li>
 <li>send()
 : <a class="el" href="namespacenet.html#aa0a46766b4aca53ea50e1921567ddb40">net</a>
+, <a class="el" href="namespaceprocess_1_1windows.html#a04c64346155d34517acdf8b587162868">process::windows</a>
 </li>
 <li>sendfile()
 : <a class="el" href="namespaceos.html#a625f02f99e88345b3e8f59223d7aa237">os</a>
+, <a class="el" href="namespaceprocess_1_1windows.html#afc59f27e725b5feb12f76e1c008ba767">process::windows</a>
 </li>
 <li>sendfile_async()
 : <a class="el" href="namespaceos.html#ad8eec8c973d58ad0db1a7b6d81e77e96">os</a>
@@ -215,7 +217,7 @@
 </li>
 <li>size()
 : <a class="el" href="namespacefs.html#a60a9e5ca4119866d80691ce3c4701dc9">fs</a>
-, <a class="el" href="namespaceos_1_1stat.html#af7fab12f2f4bf8ec51d5791202d41abc">os::stat</a>
+, <a class="el" href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">os::stat</a>
 </li>
 <li>sleep()
 : <a class="el" href="namespaceos.html#ab2b826c68a25af9e9ef47c570c36e137">os</a>
@@ -224,15 +226,15 @@
 : <a class="el" href="namespaceprocess_1_1metrics.html#ae84bcc44d0cc377941ccab88b9cecdc7">process::metrics</a>
 </li>
 <li>socket()
-: <a class="el" href="namespacenet.html#a4cfca6331034dc0a6dc6077fc048843b">net</a>
+: <a class="el" href="namespacenet.html#a1a28d65fc659da0fd236f2641cd07f8d">net</a>
 , <a class="el" href="namespacerouting.html#aee51d4e36a57bab7d6ada56e15467370">routing</a>
 </li>
 <li>soft_limit_in_bytes()
-: <a class="el" href="namespacecgroups_1_1memory.html#a8773afb0ceff81705f1579585333f9fd">cgroups::memory</a>
+: <a class="el" href="namespacecgroups_1_1memory.html#a1839563c856a81176f928d3fd6012b9d">cgroups::memory</a>
 </li>
 <li>spawn()
 : <a class="el" href="namespaceos.html#a18f614e5bdf40984c33888a5fa9599ca">os</a>
-, <a class="el" href="namespaceprocess.html#aff22904a83567125d3b4d0d88e5a2270">process</a>
+, <a class="el" href="namespaceprocess.html#a0458ac577eb50d91c829967c1d7ca3dd">process</a>
 </li>
 <li>split()
 : <a class="el" href="namespacestrings.html#a1f86a4a73f20056475dc065ec984eb7a">strings</a>
@@ -246,7 +248,7 @@
 <li>stat()
 : <a class="el" href="namespacecgroups_1_1cpuacct.html#a0aa25320dd324ad06619c2d650020102">cgroups::cpuacct</a>
 , <a class="el" href="namespacecgroups.html#a78e3c7ca2e422779908eec45f859d757">cgroups</a>
-, <a class="el" href="namespaceos_1_1stat_1_1internal.html#aaa15e8ca46f9a135dc642eeb8340d0c1">os::stat::internal</a>
+, <a class="el" href="namespaceos_1_1stat_1_1internal.html#a1e8d1b1fd61d53e84b399c10bb67520d">os::stat::internal</a>
 </li>
 <li>statistics()
 : <a class="el" href="namespacerouting_1_1link.html#a8486fce953717fcb949bfdc17a2dd3e1">routing::link</a>
@@ -256,7 +258,7 @@
 , <a class="el" href="namespacerouting_1_1queueing_1_1internal.html#a91cfc1e150fcd66e41ce327b7e1908de">routing::queueing::internal</a>
 </li>
 <li>status()
-: <a class="el" href="namespaceproc.html#a34396c6140a28f583dc13fee3c3c35d4">proc</a>
+: <a class="el" href="namespaceproc.html#a1bf2b02dcb579ebc87a75d4bccce97b1">proc</a>
 </li>
 <li>streamingMediaType()
 : <a class="el" href="namespacemesos_1_1internal.html#a1fe4afb9bc1a9f2688b39fdcc8818199">mesos::internal</a>
@@ -277,10 +279,10 @@
 : <a class="el" href="namespaceos.html#acae67fc8bd809c609bf1ffb281d921c6">os</a>
 </li>
 <li>subprocess()
-: <a class="el" href="namespaceprocess.html#a0a748c548ad3a094196c98f00f9674cf">process</a>
+: <a class="el" href="namespaceprocess.html#a2d7e0a283bc0c9eca8a8b0532e026269">process</a>
 </li>
 <li>subsystems()
-: <a class="el" href="namespacecgroups.html#a155d0ce30a15e5b8b3ca02b189a7ead8">cgroups</a>
+: <a class="el" href="namespacecgroups.html#a43ff5aa5dec5f24b0a3620847e9dd6b6">cgroups</a>
 </li>
 <li>supported()
 : <a class="el" href="namespacemesos_1_1internal_1_1fs.html#a0c6fe63428ca6e781338ed507a5952bd">mesos::internal::fs</a>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/namespacemembers_func_w.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/namespacemembers_func_w.html b/content/api/latest/c++/namespacemembers_func_w.html
index 3945e55..5ee27e3 100644
--- a/content/api/latest/c++/namespacemembers_func_w.html
+++ b/content/api/latest/c++/namespacemembers_func_w.html
@@ -101,16 +101,21 @@
 <li>which()
 : <a class="el" href="namespaceos.html#a8d651d36e878b4284b6ab739be15bf16">os</a>
 </li>
+<li>windows_to_unix_epoch()
+: <a class="el" href="namespaceos_1_1internal.html#a1493e5fcc92753702d08b36881ee8f97">os::internal</a>
+</li>
 <li>workers()
 : <a class="el" href="namespaceprocess.html#a18419acc52ca1e339e684f8d9208207e">process</a>
 </li>
 <li>write()
 : <a class="el" href="namespacecgroups.html#ad199dcd922eab26b23b7011c7e0ca34a">cgroups</a>
 , <a class="el" href="namespacemesos_1_1internal_1_1log.html#a644a438399ebd57381f8c3eb9261c9bc">mesos::internal::log</a>
-, <a class="el" href="namespaceos_1_1signal__safe.html#a1fe471bfb9a8e827779d24a58ba155d3">os::signal_safe</a>
-, <a class="el" href="namespaceos.html#a1b67d073837cf74e5cdfa785d5c95fac">os</a>
-, <a class="el" href="namespaceprocess_1_1io.html#a4c2c8de8f0750ab0f0ba40283774dfb6">process::io</a>
-, <a class="el" href="namespaceprotobuf.html#aaedc9cc58ee2711a7b5e8831ba02a899">protobuf</a>
+, <a class="el" href="namespaceos_1_1signal__safe.html#a35b77e10ddf35fa4569cb1a7d1e3532b">os::signal_safe</a>
+, <a class="el" href="namespaceos.html#a73da9d49515dfff761c4887c3d6032c0">os</a>
+, <a class="el" href="namespaceprocess_1_1io_1_1internal.html#ab4ecbbe96ef3c0600060e16c47988798">process::io::internal</a>
+, <a class="el" href="namespaceprocess_1_1io.html#a49105dc036ad04225c92bd673da5ce39">process::io</a>
+, <a class="el" href="namespaceprocess_1_1windows.html#a69a29846581bb7bb1084e9ee90cbe8e6">process::windows</a>
+, <a class="el" href="namespaceprotobuf.html#ad7c5a30c2e972caaed6b3896ac7e477f">protobuf</a>
 </li>
 <li>write_async()
 : <a class="el" href="namespaceos.html#a1af52685ba3e8fe8676af86cd16a1eb8">os</a>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/namespacemembers_i.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/namespacemembers_i.html b/content/api/latest/c++/namespacemembers_i.html
index ee6c19d..d12d581 100644
--- a/content/api/latest/c++/namespacemembers_i.html
+++ b/content/api/latest/c++/namespacemembers_i.html
@@ -192,6 +192,10 @@
 <li>IPC_OWNER
 : <a class="el" href="namespacemesos_1_1internal_1_1capabilities.html#abf44ee3490d4ec99e8549060bb8c9f58ae02fac06f4ff99fb60f27d2fa205f05e">mesos::internal::capabilities</a>
 </li>
+<li>is_async()
+: <a class="el" href="namespaceprocess_1_1io_1_1internal.html#a2291f1f69f4bdf80f3b114c493eb1e37">process::io::internal</a>
+, <a class="el" href="namespaceprocess_1_1io.html#ada6541d78cad2ecc225be8a26662c748">process::io</a>
+</li>
 <li>is_inprogress_error()
 : <a class="el" href="namespacenet.html#a6d996e15b39630257af8d8a0379c7f7a">net</a>
 </li>
@@ -244,7 +248,7 @@
 : <a class="el" href="namespacemesos_1_1roles.html#a70ebdbe08b14acfb4ef2571ce909cc86">mesos::roles</a>
 </li>
 <li>isTerminalState()
-: <a class="el" href="namespacemesos_1_1internal_1_1protobuf.html#aa31907fb62769822a77c06ffbf10451f">mesos::internal::protobuf</a>
+: <a class="el" href="namespacemesos_1_1internal_1_1protobuf.html#ade777537955dc212aea80866edd089f3">mesos::internal::protobuf</a>
 </li>
 <li>isUp()
 : <a class="el" href="namespacerouting_1_1link.html#a7d1c8b69ea1c451975f9275fd11466e3">routing::link</a>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/namespacemembers_l.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/namespacemembers_l.html b/content/api/latest/c++/namespacemembers_l.html
index 63ad739..b32fac2 100644
--- a/content/api/latest/c++/namespacemembers_l.html
+++ b/content/api/latest/c++/namespacemembers_l.html
@@ -129,6 +129,9 @@
 <li>LIBPROCESS_PID_FILE
 : <a class="el" href="namespacemesos_1_1internal_1_1slave_1_1paths.html#a0eb6a5b0180c943374211289e1d4a312">mesos::internal::slave::paths</a>
 </li>
+<li>libwinio_loop
+: <a class="el" href="namespaceprocess.html#a3b1f9b3719ea6358ad426ae31bc8eae6">process</a>
+</li>
 <li>limit_in_bytes()
 : <a class="el" href="namespacecgroups_1_1memory.html#abcf50b175fea5a521400f6b9e5574e90">cgroups::memory</a>
 </li>
@@ -179,8 +182,8 @@
 <li>longpath()
 : <a class="el" href="namespaceinternal_1_1windows.html#a9eb75fd12cc66dbf3f61c8f5156694e1">internal::windows</a>
 </li>
-<li>loop()
-: <a class="el" href="namespaceprocess.html#af4f4d3422eed6d82ea5af4a1a6e839a4">process</a>
+<li>loop
+: <a class="el" href="namespaceprocess.html#a59c192ee8ea5abbbee1642957f47c92a">process</a>
 </li>
 <li>LOW
 : <a class="el" href="namespacecgroups_1_1memory_1_1pressure.html#ad8d4aa5c0e09cc87fef44d6713f7b61fab0b8865245ba2ef579a93fd37a0447c1">cgroups::memory::pressure</a>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/namespacemembers_m.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/namespacemembers_m.html b/content/api/latest/c++/namespacemembers_m.html
index b4be95f..2681d82 100644
--- a/content/api/latest/c++/namespacemembers_m.html
+++ b/content/api/latest/c++/namespacemembers_m.html
@@ -399,7 +399,7 @@
 </li>
 <li>mount()
 : <a class="el" href="namespacecgroups.html#aa3c1a4d4d11cca392dc45ff363718fc1">cgroups</a>
-, <a class="el" href="namespacemesos_1_1internal_1_1fs.html#af0d63e921d6b48554eaee82037356187">mesos::internal::fs</a>
+, <a class="el" href="namespacemesos_1_1internal_1_1fs.html#afd1e45c2b648ff930d2df614beb6f34b">mesos::internal::fs</a>
 </li>
 <li>mounted()
 : <a class="el" href="namespacecgroups.html#a379912fbd52d8dba056a7d94041a224e">cgroups</a>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/namespacemembers_p.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/namespacemembers_p.html b/content/api/latest/c++/namespacemembers_p.html
index f946740..873eea6 100644
--- a/content/api/latest/c++/namespacemembers_p.html
+++ b/content/api/latest/c++/namespacemembers_p.html
@@ -214,9 +214,9 @@
 : <a class="el" href="namespaceos.html#a647be66325aca2685aa58780bbdb8e9a">os</a>
 </li>
 <li>post()
-: <a class="el" href="namespaceprocess_1_1http.html#a0fd44430515dd0fed35dd5715bb104c9">process::http</a>
+: <a class="el" href="namespaceprocess_1_1http.html#ae18e508ddf8cd65d7778320fa57550f3">process::http</a>
 , <a class="el" href="namespaceprocess_1_1http_1_1streaming.html#ae8a18c7263d4aefb7b1973c12590c688">process::http::streaming</a>
-, <a class="el" href="namespaceprocess.html#a39beeddfda71dd96bf6a5c4b59481c5d">process</a>
+, <a class="el" href="namespaceprocess.html#ab52d25f9fe4b28df7268c688725894d9">process</a>
 </li>
 <li>POST_RESERVATION_REFINEMENT
 : <a class="el" href="namespacemesos.html#aeea322fd31c5b71ac06c65bcf1241a82acc3723fdea465eaae535d3c19da528f2">mesos</a>
@@ -237,11 +237,15 @@
 : <a class="el" href="namespacecgroups.html#a4bf20862574beb5b0f9af7799489866f">cgroups</a>
 , <a class="el" href="namespacemesos_1_1internal_1_1fs_1_1chroot.html#a3c224bd1aaafda45a323c3d84f8cc85a">mesos::internal::fs::chroot</a>
 </li>
+<li>prepare_async()
+: <a class="el" href="namespaceprocess_1_1io_1_1internal.html#a9458b24220892124c2112b3fe85e585e">process::io::internal</a>
+, <a class="el" href="namespaceprocess_1_1io.html#a9db94d84fb44b21fb669ade7c6a82114">process::io</a>
+</li>
 <li>PROBE
 : <a class="el" href="namespacemesos_1_1csi_1_1v0.html#ab61c885767f2a0ad8088b449b6fbf76dacf6c07f1998a6216e98e366d69bd145f">mesos::csi::v0</a>
 </li>
 <li>process()
-: <a class="el" href="namespaceos.html#acd11eaf54627e394ca79979ee884f6c4">os</a>
+: <a class="el" href="namespaceos.html#ae19e4161a51b86a1f330f3bf1dc75389">os</a>
 </li>
 <li>process_async_io_result()
 : <a class="el" href="namespaceinternal_1_1windows.html#a4ed4d1bae6b01fb85f8e6fad0b10599d">internal::windows</a>
@@ -258,7 +262,7 @@
 , <a class="el" href="namespacemesos_1_1internal_1_1log_1_1protocol.html#a3b1f8bd7b18c51af9d1f58842950b545">mesos::internal::log::protocol</a>
 </li>
 <li>protobuf()
-: <a class="el" href="namespaceJSON.html#a93c179a1a5bd4164169d47cb1803f2a6">JSON</a>
+: <a class="el" href="namespaceJSON.html#a1d44660d98caa78d154c47b5f60ba7f8">JSON</a>
 </li>
 <li>pstree()
 : <a class="el" href="namespaceos.html#ac324ef4f356d10686ce7024257251443">os</a>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/namespacemembers_r.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/namespacemembers_r.html b/content/api/latest/c++/namespacemembers_r.html
index 02b7d46..6c4bfc9 100644
--- a/content/api/latest/c++/namespacemembers_r.html
+++ b/content/api/latest/c++/namespacemembers_r.html
@@ -105,14 +105,16 @@
 : <a class="el" href="namespacecgroups.html#aa696e42fa4a13e922dee2d1f869146d2">cgroups</a>
 , <a class="el" href="namespacemesos_1_1internal_1_1credentials.html#a137c93d60149616181a10e9f39986f7f">mesos::internal::credentials</a>
 , <a class="el" href="namespacemesos_1_1internal_1_1slave_1_1state.html#adeb89c1623e8d5af457b5b130aceac1d">mesos::internal::slave::state</a>
-, <a class="el" href="namespaceos.html#aa1d97ff0a93229e1fe6b33e3e2d567f7">os</a>
+, <a class="el" href="namespaceos.html#a7e99bac0fb06315c051358c7916fe692">os</a>
+, <a class="el" href="namespaceprocess_1_1io_1_1internal.html#ac0a90b8abf47098e5a57d90e744a42a8">process::io::internal</a>
 , <a class="el" href="namespaceprocess_1_1io.html#a4c34d22e475e29f12ac739921dcc580f">process::io</a>
 </li>
 <li>READ
 : <a class="el" href="namespaceprocess_1_1io.html#aca1f059ca9f0d7360631c621debeb879">process::io</a>
 </li>
 <li>read()
-: <a class="el" href="namespaceprotobuf.html#ae3e1bd443efafaf4f5d0f2ade10b81f9">protobuf</a>
+: <a class="el" href="namespaceprocess_1_1windows.html#a7436ed89e84ff3415987de0ca9428d08">process::windows</a>
+, <a class="el" href="namespaceprotobuf.html#a2120146c620b72d4e1e3ae47bdacb1b3">protobuf</a>
 </li>
 <li>read&lt; Resources &gt;()
 : <a class="el" href="namespacemesos_1_1internal_1_1slave_1_1state.html#a6bdbe39082783fa5f8073104c5aa5b3c">mesos::internal::slave::state</a>
@@ -166,6 +168,7 @@
 </li>
 <li>recv()
 : <a class="el" href="namespacenet.html#ae1804e10c81f5743b459eeae1f6a701a">net</a>
+, <a class="el" href="namespaceprocess_1_1windows.html#a37fde6f31c2f9838a18cf83c2c865134">process::windows</a>
 </li>
 <li>redirect()
 : <a class="el" href="namespaceprocess_1_1io.html#ab9c4a52a88fcc9983438e391643424ca">process::io</a>
@@ -230,7 +233,7 @@
 : <a class="el" href="namespaceprocess_1_1http.html#ad8f400b5e54038df7e5662ec35da05fa">process::http</a>
 </li>
 <li>requestDelete()
-: <a class="el" href="namespaceprocess_1_1http.html#a1443ad581d0388a87013f0284906c2b3">process::http</a>
+: <a class="el" href="namespaceprocess_1_1http.html#aa37acfb70e0b901b6f10c3d4a9b33c95">process::http</a>
 </li>
 <li>REQUEUES
 : <a class="el" href="namespacerouting_1_1queueing_1_1statistics.html#a9a6c9ceca9da969ea8a5536ea6551b0e">routing::queueing::statistics</a>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/namespacemembers_s.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/namespacemembers_s.html b/content/api/latest/c++/namespacemembers_s.html
index e1c67f3..d0410ad 100644
--- a/content/api/latest/c++/namespacemembers_s.html
+++ b/content/api/latest/c++/namespacemembers_s.html
@@ -110,9 +110,11 @@
 </li>
 <li>send()
 : <a class="el" href="namespacenet.html#aa0a46766b4aca53ea50e1921567ddb40">net</a>
+, <a class="el" href="namespaceprocess_1_1windows.html#a04c64346155d34517acdf8b587162868">process::windows</a>
 </li>
 <li>sendfile()
 : <a class="el" href="namespaceos.html#a625f02f99e88345b3e8f59223d7aa237">os</a>
+, <a class="el" href="namespaceprocess_1_1windows.html#afc59f27e725b5feb12f76e1c008ba767">process::windows</a>
 </li>
 <li>sendfile_async()
 : <a class="el" href="namespaceos.html#ad8eec8c973d58ad0db1a7b6d81e77e96">os</a>
@@ -236,7 +238,7 @@
 </li>
 <li>size()
 : <a class="el" href="namespacefs.html#a60a9e5ca4119866d80691ce3c4701dc9">fs</a>
-, <a class="el" href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">os::stat</a>
+, <a class="el" href="namespaceos_1_1stat.html#af7fab12f2f4bf8ec51d5791202d41abc">os::stat</a>
 </li>
 <li>sleep()
 : <a class="el" href="namespaceos.html#ab2b826c68a25af9e9ef47c570c36e137">os</a>
@@ -262,11 +264,11 @@
 : <a class="el" href="namespaceprocess.html#a355bad70041c7d49455fb810578a72cf">process</a>
 </li>
 <li>soft_limit_in_bytes()
-: <a class="el" href="namespacecgroups_1_1memory.html#a8773afb0ceff81705f1579585333f9fd">cgroups::memory</a>
+: <a class="el" href="namespacecgroups_1_1memory.html#a1839563c856a81176f928d3fd6012b9d">cgroups::memory</a>
 </li>
 <li>spawn()
 : <a class="el" href="namespaceos.html#a18f614e5bdf40984c33888a5fa9599ca">os</a>
-, <a class="el" href="namespaceprocess.html#aff22904a83567125d3b4d0d88e5a2270">process</a>
+, <a class="el" href="namespaceprocess.html#aa3e3f539080a94857e07401dd26b2f8f">process</a>
 </li>
 <li>split()
 : <a class="el" href="namespacestrings.html#a1f86a4a73f20056475dc065ec984eb7a">strings</a>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/namespacemembers_vars_l.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/namespacemembers_vars_l.html b/content/api/latest/c++/namespacemembers_vars_l.html
index b68dc3f..7d021ba 100644
--- a/content/api/latest/c++/namespacemembers_vars_l.html
+++ b/content/api/latest/c++/namespacemembers_vars_l.html
@@ -106,6 +106,9 @@
 <li>LIBPROCESS_PID_FILE
 : <a class="el" href="namespacemesos_1_1internal_1_1slave_1_1paths.html#a0eb6a5b0180c943374211289e1d4a312">mesos::internal::slave::paths</a>
 </li>
+<li>libwinio_loop
+: <a class="el" href="namespaceprocess.html#a3b1f9b3719ea6358ad426ae31bc8eae6">process</a>
+</li>
 <li>LISTEN
 : <a class="el" href="namespacerouting_1_1diagnosis_1_1socket_1_1state.html#a3340f48cbccfa4dcf8e1e99f39f12246">routing::diagnosis::socket::state</a>
 </li>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/namespacemembers_w.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/namespacemembers_w.html b/content/api/latest/c++/namespacemembers_w.html
index f18d266..1c55211 100644
--- a/content/api/latest/c++/namespacemembers_w.html
+++ b/content/api/latest/c++/namespacemembers_w.html
@@ -125,6 +125,9 @@
 <li>WINDOWS_PATH_SEPARATOR
 : <a class="el" href="namespaceos.html#ae86289c0463a69de1a4aa97ba9203e57">os</a>
 </li>
+<li>windows_to_unix_epoch()
+: <a class="el" href="namespaceos_1_1internal.html#a1493e5fcc92753702d08b36881ee8f97">os::internal</a>
+</li>
 <li>workers()
 : <a class="el" href="namespaceprocess.html#a18419acc52ca1e339e684f8d9208207e">process</a>
 </li>
@@ -132,16 +135,17 @@
 : <a class="el" href="namespacecgroups.html#ad199dcd922eab26b23b7011c7e0ca34a">cgroups</a>
 , <a class="el" href="namespacemesos_1_1internal_1_1log_1_1protocol.html#a66ff2d5af4db53227f787281c0765d8d">mesos::internal::log::protocol</a>
 , <a class="el" href="namespacemesos_1_1internal_1_1log.html#a644a438399ebd57381f8c3eb9261c9bc">mesos::internal::log</a>
-, <a class="el" href="namespaceos_1_1signal__safe.html#a35b77e10ddf35fa4569cb1a7d1e3532b">os::signal_safe</a>
-, <a class="el" href="namespaceos.html#aa0e3acff8992055da620cae8b455d93d">os</a>
-, <a class="el" href="namespaceprocess_1_1io.html#a49105dc036ad04225c92bd673da5ce39">process::io</a>
+, <a class="el" href="namespaceos_1_1signal__safe.html#a67bf0cd3aa924b5584a8744f15430835">os::signal_safe</a>
+, <a class="el" href="namespaceos.html#a1b67d073837cf74e5cdfa785d5c95fac">os</a>
+, <a class="el" href="namespaceprocess_1_1io_1_1internal.html#ab4ecbbe96ef3c0600060e16c47988798">process::io::internal</a>
 </li>
 <li>WRITE
 : <a class="el" href="namespaceprocess_1_1io.html#ab005316d71b45c5b05de0a6234c6f8fc">process::io</a>
 </li>
 <li>write()
 : <a class="el" href="namespaceprocess_1_1io.html#a4c2c8de8f0750ab0f0ba40283774dfb6">process::io</a>
-, <a class="el" href="namespaceprotobuf.html#a1c2352b3f232044d4e960e227d530a92">protobuf</a>
+, <a class="el" href="namespaceprocess_1_1windows.html#a69a29846581bb7bb1084e9ee90cbe8e6">process::windows</a>
+, <a class="el" href="namespaceprotobuf.html#aaedc9cc58ee2711a7b5e8831ba02a899">protobuf</a>
 </li>
 <li>write_async()
 : <a class="el" href="namespaceos.html#a1af52685ba3e8fe8676af86cd16a1eb8">os</a>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/namespaceos_1_1internal.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/namespaceos_1_1internal.html b/content/api/latest/c++/namespaceos_1_1internal.html
index 5b4f2a9..6d70747 100644
--- a/content/api/latest/c++/namespaceos_1_1internal.html
+++ b/content/api/latest/c++/namespaceos_1_1internal.html
@@ -72,6 +72,8 @@ Functions</h2></td></tr>
 <tr class="separator:a1f75643e24051d2b8d98244abf0b9ece"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a02c567b1b6bb441a3a29433a126cedec"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classTry.html">Try</a>&lt; std::string &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceos_1_1internal.html#a02c567b1b6bb441a3a29433a126cedec">nodename</a> ()</td></tr>
 <tr class="separator:a02c567b1b6bb441a3a29433a126cedec"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1493e5fcc92753702d08b36881ee8f97"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceos_1_1internal.html#a1493e5fcc92753702d08b36881ee8f97">windows_to_unix_epoch</a> (const FILETIME &amp;filetime)</td></tr>
+<tr class="separator:a1493e5fcc92753702d08b36881ee8f97"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a>
 Variables</h2></td></tr>
@@ -262,6 +264,30 @@ Variables</h2></td></tr>
 
 </div>
 </div>
+<a class="anchor" id="a1493e5fcc92753702d08b36881ee8f97"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">double os::internal::windows_to_unix_epoch </td>
+          <td>(</td>
+          <td class="paramtype">const FILETIME &amp;&#160;</td>
+          <td class="paramname"><em>filetime</em></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>
 <h2 class="groupheader">Variable Documentation</h2>
 <a class="anchor" id="a637592b0315b2f8c779ab681177f911a"></a>
 <div class="memitem">

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/namespaceprocess.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/namespaceprocess.html b/content/api/latest/c++/namespaceprocess.html
index f67ae14..5370f46 100644
--- a/content/api/latest/c++/namespaceprocess.html
+++ b/content/api/latest/c++/namespaceprocess.html
@@ -80,6 +80,8 @@ Namespaces</h2></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:namespaceprocess_1_1network"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceprocess_1_1network.html">network</a></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:namespaceprocess_1_1windows"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceprocess_1_1windows.html">windows</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
 Classes</h2></td></tr>
@@ -588,6 +590,8 @@ Variables</h2></td></tr>
 <tr class="separator:a373bd5e2bd8f2694e4589293af477854"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a355bad70041c7d49455fb810578a72cf"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classprocess_1_1SocketManager.html">SocketManager</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceprocess.html#a355bad70041c7d49455fb810578a72cf">socket_manager</a></td></tr>
 <tr class="separator:a355bad70041c7d49455fb810578a72cf"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a3b1f9b3719ea6358ad426ae31bc8eae6"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classprocess_1_1windows_1_1EventLoop.html">windows::EventLoop</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceprocess.html#a3b1f9b3719ea6358ad426ae31bc8eae6">libwinio_loop</a></td></tr>
+<tr class="separator:a3b1f9b3719ea6358ad426ae31bc8eae6"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>
 <h2 class="groupheader">Typedef Documentation</h2>
 <a class="anchor" id="afc6611c4913642642277b44447a16e55"></a>
@@ -4265,6 +4269,18 @@ template&lt;typename F , typename std::enable_if&lt; !is_specialization_of&lt; t
 
 </div>
 </div>
+<a class="anchor" id="a3b1f9b3719ea6358ad426ae31bc8eae6"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="classprocess_1_1windows_1_1EventLoop.html">windows::EventLoop</a>* process::libwinio_loop</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+</div>
+</div>
 <a class="anchor" id="a59c192ee8ea5abbbee1642957f47c92a"></a>
 <div class="memitem">
 <div class="memproto">

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/namespaceprocess_1_1io.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/namespaceprocess_1_1io.html b/content/api/latest/c++/namespaceprocess_1_1io.html
index 3a515c4..a157401 100644
--- a/content/api/latest/c++/namespaceprocess_1_1io.html
+++ b/content/api/latest/c++/namespaceprocess_1_1io.html
@@ -49,6 +49,7 @@
 </div><!-- top -->
 <div class="header">
   <div class="summary">
+<a href="#namespaces">Namespaces</a> &#124;
 <a href="#func-members">Functions</a> &#124;
 <a href="#var-members">Variables</a>  </div>
   <div class="headertitle">
@@ -56,8 +57,19 @@
 </div><!--header-->
 <div class="contents">
 <table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
+Namespaces</h2></td></tr>
+<tr class="memitem:namespaceprocess_1_1io_1_1internal"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceprocess_1_1io_1_1internal.html">internal</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</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:a9db94d84fb44b21fb669ade7c6a82114"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classTry.html">Try</a>&lt; <a class="el" href="structNothing.html">Nothing</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceprocess_1_1io.html#a9db94d84fb44b21fb669ade7c6a82114">prepare_async</a> (<a class="el" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> fd)</td></tr>
+<tr class="memdesc:a9db94d84fb44b21fb669ade7c6a82114"><td class="mdescLeft">&#160;</td><td class="mdescRight">Prepares a file descriptor to be ready for asynchronous IO.  <a href="#a9db94d84fb44b21fb669ade7c6a82114">More...</a><br /></td></tr>
+<tr class="separator:a9db94d84fb44b21fb669ade7c6a82114"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ada6541d78cad2ecc225be8a26662c748"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classTry.html">Try</a>&lt; bool &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceprocess_1_1io.html#ada6541d78cad2ecc225be8a26662c748">is_async</a> (<a class="el" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> fd)</td></tr>
+<tr class="memdesc:ada6541d78cad2ecc225be8a26662c748"><td class="mdescLeft">&#160;</td><td class="mdescRight">Checks if <code><a class="el" href="namespaceprocess_1_1io.html#a9db94d84fb44b21fb669ade7c6a82114" title="Prepares a file descriptor to be ready for asynchronous IO. ">io::prepare_async</a></code> has been called on the file descriptor.  <a href="#ada6541d78cad2ecc225be8a26662c748">More...</a><br /></td></tr>
+<tr class="separator:ada6541d78cad2ecc225be8a26662c748"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:af71c45e0a85e21f6b39060f4e716cebf"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classprocess_1_1Future.html">Future</a>&lt; short &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceprocess_1_1io.html#af71c45e0a85e21f6b39060f4e716cebf">poll</a> (<a class="el" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> fd, short events)</td></tr>
 <tr class="memdesc:af71c45e0a85e21f6b39060f4e716cebf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the events (a subset of the events specified) that can be performed on the specified file descriptor without blocking.  <a href="#af71c45e0a85e21f6b39060f4e716cebf">More...</a><br /></td></tr>
 <tr class="separator:af71c45e0a85e21f6b39060f4e716cebf"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -90,6 +102,25 @@ Variables</h2></td></tr>
 <tr class="separator:a34d62916736c1dfebd1585cf51f19d0c"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>
 <h2 class="groupheader">Function Documentation</h2>
+<a class="anchor" id="ada6541d78cad2ecc225be8a26662c748"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="classTry.html">Try</a>&lt;bool&gt; process::io::is_async </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a>&#160;</td>
+          <td class="paramname"><em>fd</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Checks if <code><a class="el" href="namespaceprocess_1_1io.html#a9db94d84fb44b21fb669ade7c6a82114" title="Prepares a file descriptor to be ready for asynchronous IO. ">io::prepare_async</a></code> has been called on the file descriptor. </p>
+<dl class="section return"><dt>Returns</dt><dd>Returns if the file descriptor is asynchronous. An asynchronous file descriptor is defined to be non-blocking on POSIX systems and overlapped and associated with an IO completion port on Windows. An error will be returned if the file descriptor is invalid. </dd></dl>
+
+</div>
+</div>
 <a class="anchor" id="af71c45e0a85e21f6b39060f4e716cebf"></a>
 <div class="memitem">
 <div class="memproto">
@@ -121,6 +152,27 @@ Variables</h2></td></tr>
 
 </div>
 </div>
+<a class="anchor" id="a9db94d84fb44b21fb669ade7c6a82114"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="classTry.html">Try</a>&lt;<a class="el" href="structNothing.html">Nothing</a>&gt; process::io::prepare_async </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a>&#160;</td>
+          <td class="paramname"><em>fd</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Prepares a file descriptor to be ready for asynchronous IO. </p>
+<p>On POSIX systems, this sets the file descriptor to non-blocking. On Windows, this will assign the file descriptor to an IO completion port.</p>
+<p>NOTE: Because the IO completion port is only known at the libprocess level, we need this function instead of simply using stout's <code><a class="el" href="namespaceos.html#adcd5b59146bb45a7ba431120a0d3b464">os::nonblock</a></code> and <code><a class="el" href="namespaceos.html#a238d27a90a749967761c1019d27b7e83">os::isNonblock</a></code> functions like we could do for POSIX systems.</p>
+<dl class="section return"><dt>Returns</dt><dd>On success, returns <a class="el" href="structNothing.html">Nothing</a>. On error, returns an <a class="el" href="classError.html">Error</a>. </dd></dl>
+
+</div>
+</div>
 <a class="anchor" id="a4c34d22e475e29f12ac739921dcc580f"></a>
 <div class="memitem">
 <div class="memproto">
@@ -152,6 +204,7 @@ Variables</h2></td></tr>
 </div><div class="memdoc">
 
 <p>Performs a single non-blocking read by polling on the specified file descriptor until any data can be be read. </p>
+<p><code><a class="el" href="namespaceprocess_1_1io.html#a9db94d84fb44b21fb669ade7c6a82114" title="Prepares a file descriptor to be ready for asynchronous IO. ">io::prepare_async</a></code> needs to be called beforehand.</p>
 <p>The future will become ready when some data is read (may be less than the specified size).</p>
 <dl class="section return"><dt>Returns</dt><dd>The number of bytes read or zero on EOF. A failure will be returned if an error is detected. </dd></dl>
 
@@ -251,6 +304,7 @@ Variables</h2></td></tr>
 </div><div class="memdoc">
 
 <p>Performs a single non-blocking write by polling on the specified file descriptor until data can be be written. </p>
+<p><code><a class="el" href="namespaceprocess_1_1io.html#a9db94d84fb44b21fb669ade7c6a82114" title="Prepares a file descriptor to be ready for asynchronous IO. ">io::prepare_async</a></code> needs to be called beforehand.</p>
 <p>The future will become ready when some data is written (may be less than the specified size of the data).</p>
 <dl class="section return"><dt>Returns</dt><dd>The number of bytes written. A failure will be returned if an error is detected. If writing to a socket or pipe, an error will be returned if the the read end of the socket or pipe has been closed. </dd></dl>
 


[04/50] mesos-site git commit: Updated the website built from mesos SHA: 7c9c72d.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/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 a9d126c..78e0f95 100644
--- a/content/api/latest/c++/windows_2os_8hpp_source.html
+++ b/content/api/latest/c++/windows_2os_8hpp_source.html
@@ -52,7 +52,7 @@
 <div class="title">os.hpp</div>  </div>
 </div><!--header-->
 <div class="contents">
-<a href="windows_2os_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>&#160;<span class="comment">// Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<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>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<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>&#160;<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>&#160;<span class="comment">// distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<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>&#160;<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>&#160;<span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;</div><div class=
 "line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="preprocessor">#ifndef __STOUT_WINDOWS_OS_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="preprocessor">#define __STOUT_WINDOWS_OS_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;</div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="preprocessor">#include &lt;sys/utime.h&gt;</span></div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="preprocessor">#include &lt;algorithm&gt;</span></div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;<span class="preprocessor">#include &lt;list&gt;</span></div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="preprocessor">#inclu
 de &lt;map&gt;</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="preprocessor">#include &lt;memory&gt;</span></div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="preprocessor">#include &lt;numeric&gt;</span></div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="preprocessor">#include &lt;set&gt;</span></div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span></div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="preprocessor">#include &lt;vector&gt;</span></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>&#160;<span class="preprocessor">#include &lt;<a class="code" href="bytes_8hpp.html">stout/bytes.hpp</a>&gt;</s
 pan></div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="duration_8hpp.html">stout/duration.hpp</a>&gt;</span></div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="none_8hpp.html">stout/none.hpp</a>&gt;</span></div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="nothing_8hpp.html">stout/nothing.hpp</a>&gt;</span></div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="option_8hpp.html">stout/option.hpp</a>&gt;</span></div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="path_8hpp.html">stout/path.hpp</a>&gt;</span></div><div class="li
 ne"><a name="l00033"></a><span class="lineno">   33</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="stringify_8hpp.html">stout/stringify.hpp</a>&gt;</span></div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="strings_8hpp.html">stout/strings.hpp</a>&gt;</span></div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="try_8hpp.html">stout/try.hpp</a>&gt;</span></div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="3rdparty_2stout_2include_2stout_2version_8hpp.html">stout/version.hpp</a>&gt;</span></div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html">st
 out/windows.hpp</a>&gt;</span></div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="os_2os_8hpp.html">stout/os/os.hpp</a>&gt;</span></div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="getenv_8hpp.html">stout/os/getenv.hpp</a>&gt;</span></div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="stout_2include_2stout_2os_2process_8hpp.html">stout/os/process.hpp</a>&gt;</span></div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="3rdparty_2stout_2include_2stout_2os_2read_8hpp.html">stout/os/read.hpp</a>&gt;</span></div><div class="line"><a name="
 l00043"></a><span class="lineno">   43</span>&#160;</div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="3rdparty_2stout_2include_2stout_2os_2raw_2environment_8hpp.html">stout/os/raw/environment.hpp</a>&gt;</span></div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;</div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;<span class="comment">// NOTE: These system headers must be included after `stout/windows.hpp`</span></div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;<span class="comment">// as they may include `Windows.h`. See comments in `stout/windows.hpp`</span></div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;<span class="comment">// for why this ordering is important.</span></div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;<spa
 n class="preprocessor">#include &lt;Psapi.h&gt;</span>    <span class="comment">// For `EnumProcesses` and `GetProcessMemoryInfo`.</span></div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;<span class="preprocessor">#include &lt;TlHelp32.h&gt;</span> <span class="comment">// For `PROCESSENTRY32W` and `CreateToolhelp32Snapshot`.</span></div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;<span class="preprocessor">#include &lt;Userenv.h&gt;</span>  <span class="comment">// For `GetAllUsersProfileDirectoryW`.</span></div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;</div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceos.html">os</a> {</div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceinterna
 l.html">internal</a> {</div><div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;</div><div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="namespaceos_1_1internal.html#a02c567b1b6bb441a3a29433a126cedec">   56</a></span>&#160;<span class="keyword">inline</span> <a class="code" href="classTry.html">Try&lt;std::string&gt;</a> <a class="code" href="namespaceos_1_1internal.html#a02c567b1b6bb441a3a29433a126cedec">nodename</a>()</div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;{</div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;  <span class="comment">// MSDN documentation states &quot;The names are established at system startup,</span></div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;  <span class="comment">// when the system reads them from the registry.&quot; This is akin to the</span></div><div class="line"><a name="l00060"></a><spa
 n class="lineno">   60</span>&#160;  <span class="comment">// Linux `gethostname` which calls `uname`, thus avoiding a DNS lookup.</span></div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;  <span class="comment">// The `net::getHostname` function can be used for an explicit DNS lookup.</span></div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;  <span class="comment">//</span></div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;  <span class="comment">// NOTE: This returns the hostname of the local computer, or the local</span></div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;  <span class="comment">// node if this computer is part of a cluster.</span></div><div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;  COMPUTER_NAME_FORMAT <a class="code" href="namespacestrings_1_1internal.html#a870e2db270d980f83de20525ec414d2a">format</a>
  = ComputerNamePhysicalDnsHostname;</div><div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;  DWORD <a class="code" href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">size</a> = 0;</div><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;  <span class="keywordflow">if</span> (::GetComputerNameExW(format, <span class="keyword">nullptr</span>, &amp;size) == 0) {</div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;    <span class="keywordflow">if</span> (::GetLastError() != ERROR_MORE_DATA) {</div><div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;      <span class="keywordflow">return</span> <a class="code" href="classWindowsError.html">WindowsError</a>();</div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;    }</div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;  }</div><div class="line"><a name="
 l00072"></a><span class="lineno">   72</span>&#160;</div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;  std::vector&lt;wchar_t&gt; buffer;</div><div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;  buffer.reserve(size);</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>&#160;  <span class="keywordflow">if</span> (::GetComputerNameExW(format, buffer.data(), &amp;<a class="code" href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">size</a>) == 0) {</div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classWindowsError.html">WindowsError</a>();</div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;  }</div><div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;
 </div><div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;  <span class="keywordflow">return</span> <a class="code" href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(std::wstring(buffer.data()));</div><div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;}</div><div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;</div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;} <span class="comment">// namespace internal {</span></div><div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;</div><div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;</div><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;<span class="comment">// Overload of os::pids for filtering by groups and sessions. A group / session</span></div><div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;<sp
 an class="comment">// id of 0 will fitler on the group / session ID of the calling process.</span></div><div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;<span class="comment">// NOTE: Windows does not have the concept of a process group, so we need to</span></div><div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;<span class="comment">// enumerate all processes.</span></div><div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;<span class="keyword">inline</span> <a class="code" href="classTry.html">Try&lt;std::set&lt;pid_t&gt;</a>&gt; <a class="code" href="namespaceos.html#a42af1cab63434cedf2b698cd6f49f073">pids</a>(<a class="code" href="classOption.html">Option&lt;pid_t&gt;</a> <a class="code" href="structgroup.html">group</a>, <a class="code" href="classOption.html">Option&lt;pid_t&gt;</a> session)</div><div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;{</div><div class="lin
 e"><a name="l00092"></a><span class="lineno">   92</span>&#160;  DWORD max_items = 4096;</div><div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;  DWORD bytes_returned;</div><div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;  std::vector&lt;pid_t&gt; <a class="code" href="namespaceos.html#aa98ca8ac255e2b9c689979a1b40084d3">processes</a>;</div><div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;  <span class="keywordtype">size_t</span> size_in_bytes;</div><div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;</div><div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;  <span class="comment">// Attempt to populate `processes` with PIDs. We repeatedly call</span></div><div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;  <span class="comment">// `EnumProcesses` with increasingly large arrays until it &quot;succeeds&quot; at</span></d
 iv><div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;  <span class="comment">// populating the array with PIDs. The criteria for determining when</span></div><div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;  <span class="comment">// `EnumProcesses` has succeeded are:</span></div><div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;  <span class="comment">//   (1) the return value is nonzero.</span></div><div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;  <span class="comment">//   (2) the `bytes_returned` is less than the number of bytes in the array.</span></div><div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;  <span class="keywordflow">do</span> {</div><div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;    <span class="comment">// TODO(alexnaparu): Set a limit to the memory that can be used.</span></div><div class="
 line"><a name="l00105"></a><span class="lineno">  105</span>&#160;    processes.resize(max_items);</div><div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;    size_in_bytes = processes.size() * <span class="keyword">sizeof</span>(<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a>);</div><div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;    CHECK_LE(size_in_bytes, MAXDWORD);</div><div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;</div><div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;    BOOL result = ::EnumProcesses(</div><div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;        processes.data(),</div><div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;        <span class="keyword">static_cast&lt;</span>DWORD<span class="keyword">&gt;</span>(size_in_bytes
 ),</div><div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;        &amp;bytes_returned);</div><div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;</div><div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;    <span class="keywordflow">if</span> (!result) {</div><div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;      <span class="keywordflow">return</span> <a class="code" href="classWindowsError.html">WindowsError</a>(<span class="stringliteral">&quot;os::pids: Call to `EnumProcesses` failed&quot;</span>);</div><div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;    }</div><div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;</div><div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;    max_items *= 2;</div><div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;  } <span class="keyw
 ordflow">while</span> (bytes_returned &gt;= size_in_bytes);</div><div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;</div><div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;  std::set&lt;pid_t&gt; pids_set(processes.begin(), processes.end());</div><div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;</div><div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;  <span class="comment">// NOTE: The PID `0` will always be returned by `EnumProcesses`; however, it</span></div><div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;  <span class="comment">// is the PID of Windows&#39; System Idle Process. While the PID is valid, using</span></div><div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;  <span class="comment">// it for anything is almost always invalid. For instance, `OpenProcess` will</span></div><div class="line"><a name="l00126
 "></a><span class="lineno">  126</span>&#160;  <span class="comment">// fail with an invalid parameter error if the user tries to get a handle for</span></div><div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;  <span class="comment">// PID `0`. In the interest of safety, we prevent the `pids` API from ever</span></div><div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;  <span class="comment">// including the PID `0`.</span></div><div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;  pids_set.erase(0);</div><div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;  <span class="keywordflow">return</span> pids_set;</div><div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;}</div><div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;</div><div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;</div><div class="line"
 ><a name="l00134"></a><span class="lineno">  134</span>&#160;<span class="keyword">inline</span> <a class="code" href="classTry.html">Try&lt;std::set&lt;pid_t&gt;</a>&gt; <a class="code" href="namespaceos.html#a42af1cab63434cedf2b698cd6f49f073">pids</a>()</div><div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;{</div><div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;  <span class="keywordflow">return</span> <a class="code" href="namespaceos.html#a42af1cab63434cedf2b698cd6f49f073">pids</a>(<a class="code" href="structNone.html">None</a>(), <a class="code" href="structNone.html">None</a>());</div><div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;}</div><div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;</div><div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;</div><div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;<span cla
 ss="comment">// Sets the value associated with the specified key in the set of</span></div><div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;<span class="comment">// environment variables.</span></div><div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespaceos.html#ac0f608e2a32764327e38c53d0d51527d">setenv</a>(</div><div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;    <span class="keyword">const</span> std::string&amp; key,</div><div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;    <span class="keyword">const</span> std::string&amp; value,</div><div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;    <span class="keywordtype">bool</span> overwrite = <span class="keyword">true</span>)</div><div class="line"><a name="l00146"></a><span class="lineno">  1
 46</span>&#160;{</div><div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;  <span class="comment">// Do not set the variable if already set and `overwrite` was not specified.</span></div><div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;  <span class="comment">//</span></div><div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;  <span class="comment">// Per MSDN, `GetEnvironmentVariable` returns 0 on error and sets the</span></div><div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;  <span class="comment">// error code to `ERROR_ENVVAR_NOT_FOUND` if the variable was not found.</span></div><div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;  <span class="comment">//</span></div><div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;  <span class="comment">// https://msdn.microsoft.com/en-us/library/windows/desktop/ms683188(v=vs.85)
 .aspx // NOLINT(whitespace/line_length)</span></div><div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;  <span class="keywordflow">if</span> (!overwrite &amp;&amp;</div><div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;      ::GetEnvironmentVariableW(wide_stringify(key).data(), <span class="keyword">nullptr</span>, 0) != 0 &amp;&amp;</div><div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;      ::GetLastError() == ERROR_ENVVAR_NOT_FOUND) {</div><div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;    <span class="keywordflow">return</span>;</div><div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;  }</div><div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;</div><div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;  <span class="comment">// `SetEnvironmentVariable` returns an error code, but we can&#39
 ;t act on it.</span></div><div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;  ::SetEnvironmentVariableW(</div><div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;      wide_stringify(key).data(), wide_stringify(value).data());</div><div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;}</div><div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;</div><div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;</div><div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;<span class="comment">// Unsets the value associated with the specified key in the set of</span></div><div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;<span class="comment">// environment variables.</span></div><div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">
 void</span> <a class="code" href="namespaceos.html#a7471e14f4cbd7e23b5daa21e556f4eb5">unsetenv</a>(<span class="keyword">const</span> std::string&amp; key)</div><div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;{</div><div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;  <span class="comment">// Per MSDN documentation[1], passing `nullptr` as the value will cause</span></div><div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;  <span class="comment">// `SetEnvironmentVariable` to delete the key from the process&#39;s environment.</span></div><div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;  ::SetEnvironmentVariableW(wide_stringify(key).data(), <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;}</div><div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;</div><div class="line"><a n
 ame="l00174"></a><span class="lineno">  174</span>&#160;</div><div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;<span class="comment">// NOTE: This exists for compatibility with the POSIX API. On Windows,</span></div><div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;<span class="comment">// either function is suitable for clearing a secret from the</span></div><div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;<span class="comment">// environment, as the pointers returned by `GetEnvironmentVariable`</span></div><div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;<span class="comment">// and `GetEnvironmentStrings` are to blocks allocated on invocation.</span></div><div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespaceos.html#afe5b6cbeb92f2df4f8f6211
 d8b0c8be4">eraseenv</a>(<span class="keyword">const</span> std::string&amp; key)</div><div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;{</div><div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;  <a class="code" href="namespaceos.html#a7471e14f4cbd7e23b5daa21e556f4eb5">unsetenv</a>(key);</div><div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160;}</div><div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;</div><div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;</div><div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;<span class="comment">// Suspends execution of the calling process until a child specified by `pid`</span></div><div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;<span class="comment">// has changed state. Unlike the POSIX standard function `::waitpid`, this</span></div><div class="line">
 <a name="l00187"></a><span class="lineno">  187</span>&#160;<span class="comment">// function does not use -1 and 0 to signify errors and nonblocking return.</span></div><div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;<span class="comment">// Instead, we return `Result&lt;pid_t&gt;`:</span></div><div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160;<span class="comment">//   * In case of error, we return `Error` rather than -1. For example, we</span></div><div class="line"><a name="l00190"></a><span class="lineno">  190</span>&#160;<span class="comment">//     would return an `Error` in case of `EINVAL`.</span></div><div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160;<span class="comment">//   * In case of nonblocking return, we return `None` rather than 0. For</span></div><div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;<span class="comment">//     example, if we pass `WNOHA
 NG` in the `options`, we would expect 0 to be</span></div><div class="line"><a name="l00193"></a><span class="lineno">  193</span>&#160;<span class="comment">//     returned in the case that children specified by `pid` exist, but have</span></div><div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#160;<span class="comment">//     not changed state yet. In this case we return `None` instead.</span></div><div class="line"><a name="l00195"></a><span class="lineno">  195</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00196"></a><span class="lineno">  196</span>&#160;<span class="comment">// NOTE: There are important differences between the POSIX and Windows</span></div><div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;<span class="comment">// implementations of this function:</span></div><div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160;<span class="comment">//   * On POSIX, `pid_
 t` is a signed number, but on Windows, PIDs are `DWORD`,</span></div><div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160;<span class="comment">//     which is `unsigned long`. Thus, if we use `DWORD` to represent the `pid`</span></div><div class="line"><a name="l00200"></a><span class="lineno">  200</span>&#160;<span class="comment">//     argument, passing -1 as the `pid` would (on most modern servers)</span></div><div class="line"><a name="l00201"></a><span class="lineno">  201</span>&#160;<span class="comment">//     silently convert to a really large `pid`. This is undesirable.</span></div><div class="line"><a name="l00202"></a><span class="lineno">  202</span>&#160;<span class="comment">//   * Since it is important to be able to detect -1 has been passed to</span></div><div class="line"><a name="l00203"></a><span class="lineno">  203</span>&#160;<span class="comment">//     `os::waitpid`, as a matter of practicality, we choose to:</span></div><div clas
 s="line"><a name="l00204"></a><span class="lineno">  204</span>&#160;<span class="comment">//     (1) Use `long` to represent the `pid` argument.</span></div><div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160;<span class="comment">//     (2) Disable using any value &lt;= 0 for `pid` on Windows.</span></div><div class="line"><a name="l00206"></a><span class="lineno">  206</span>&#160;<span class="comment">//   * This decision is pragmatic. The reasoning is:</span></div><div class="line"><a name="l00207"></a><span class="lineno">  207</span>&#160;<span class="comment">//     (1) The Windows code paths call `os::waitpid` in only a handful of</span></div><div class="line"><a name="l00208"></a><span class="lineno">  208</span>&#160;<span class="comment">//         places, and in none of these conditions do we need `-1` as a value.</span></div><div class="line"><a name="l00209"></a><span class="lineno">  209</span>&#160;<span class="comment">//     (2) Since PID
 s virtually never take on values outside the range of</span></div><div class="line"><a name="l00210"></a><span class="lineno">  210</span>&#160;<span class="comment">//         vanilla signed `long` it is likely that an accidental conversion</span></div><div class="line"><a name="l00211"></a><span class="lineno">  211</span>&#160;<span class="comment">//         will never happen.</span></div><div class="line"><a name="l00212"></a><span class="lineno">  212</span>&#160;<span class="comment">//     (3) Even though it is not formalized in the C specification, the</span></div><div class="line"><a name="l00213"></a><span class="lineno">  213</span>&#160;<span class="comment">//         implementation of `long` on the vast majority of production servers</span></div><div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160;<span class="comment">//         is 2&#39;s complement, so we expect that when we accidentally do</span></div><div class="line"><a name="l00215"></a
 ><span class="lineno">  215</span>&#160;<span class="comment">//         implicitly convert from `unsigned long` to `long`, we will &quot;wrap</span></div><div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#160;<span class="comment">//         around&quot; to negative values. And since we&#39;ve disabled the negative</span></div><div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160;<span class="comment">//         `pid` in the Windows implementation, we should error out.</span></div><div class="line"><a name="l00218"></a><span class="lineno">  218</span>&#160;<span class="comment">//   * Finally, on Windows, we currently do not check that the process we are</span></div><div class="line"><a name="l00219"></a><span class="lineno">  219</span>&#160;<span class="comment">//     attempting to await is a child process.</span></div><div class="line"><a name="l00220"></a><span class="lineno"><a class="line" href="namespaceos.html#a59caf358baf81d
 e389c29d983b8e21ad">  220</a></span>&#160;<span class="keyword">inline</span> <a class="code" href="classResult.html">Result&lt;pid_t&gt;</a> <a class="code" href="namespaceos.html#a48c86262928f59c5c54d0cb0012e2aba">waitpid</a>(<span class="keywordtype">long</span> pid, <span class="keywordtype">int</span>* <a class="code" href="namespaceproc.html#a34396c6140a28f583dc13fee3c3c35d4">status</a>, <span class="keywordtype">int</span> options)</div><div class="line"><a name="l00221"></a><span class="lineno">  221</span>&#160;{</div><div class="line"><a name="l00222"></a><span class="lineno">  222</span>&#160;  <span class="keyword">const</span> <span class="keywordtype">bool</span> wait_for_child = (options &amp; <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#afa288d86b242c3005425a9c0f1682544">WNOHANG</a>) == 0;</div><div class="line"><a name="l00223"></a><span class="lineno">  223</span>&#160;</div><div class="line"><a name="l00224"></a><span class="lineno">  2
 24</span>&#160;  <span class="comment">// NOTE: Windows does not implement pids &lt;= 0.</span></div><div class="line"><a name="l00225"></a><span class="lineno">  225</span>&#160;  <span class="keywordflow">if</span> (pid &lt;= 0) {</div><div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;    errno = ENOSYS;</div><div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classErrnoError.html">ErrnoError</a>(</div><div class="line"><a name="l00228"></a><span class="lineno">  228</span>&#160;        <span class="stringliteral">&quot;os::waitpid: Value of pid is &#39;&quot;</span> + <a class="code" href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(pid) +</div><div class="line"><a name="l00229"></a><span class="lineno">  229</span>&#160;        <span class="stringliteral">&quot;&#39;; the Windows implementation currently does not allow values &lt;= 0&quot;
 </span>);</div><div class="line"><a name="l00230"></a><span class="lineno">  230</span>&#160;  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (options != 0 &amp;&amp; options != <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#afa288d86b242c3005425a9c0f1682544">WNOHANG</a>) {</div><div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160;    <span class="comment">// NOTE: We only support `options == 0` or `options == WNOHANG`. On Windows</span></div><div class="line"><a name="l00232"></a><span class="lineno">  232</span>&#160;    <span class="comment">// no flags other than `WNOHANG` are supported.</span></div><div class="line"><a name="l00233"></a><span class="lineno">  233</span>&#160;    errno = ENOSYS;</div><div class="line"><a name="l00234"></a><span class="lineno">  234</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classErrnoError.html">ErrnoError</a>(</div><div class="line
 "><a name="l00235"></a><span class="lineno">  235</span>&#160;        <span class="stringliteral">&quot;os::waitpid: Only flag `WNOHANG` is implemented on Windows&quot;</span>);</div><div class="line"><a name="l00236"></a><span class="lineno">  236</span>&#160;  }</div><div class="line"><a name="l00237"></a><span class="lineno">  237</span>&#160;</div><div class="line"><a name="l00238"></a><span class="lineno">  238</span>&#160;  <span class="comment">// TODO(hausdorff): Check that `pid` is one of the child processes. If not,</span></div><div class="line"><a name="l00239"></a><span class="lineno">  239</span>&#160;  <span class="comment">// set `errno` to `ECHILD` and return -1.</span></div><div class="line"><a name="l00240"></a><span class="lineno">  240</span>&#160;</div><div class="line"><a name="l00241"></a><span class="lineno">  241</span>&#160;  <span class="comment">// Open the child process as a safe `SharedHandle`.</span></div><div class="line"><a name="l00242"></a><span cl
 ass="lineno">  242</span>&#160;  <span class="keyword">const</span> <a class="code" href="namespacerouting_1_1queueing_1_1ingress.html#a934208b6017d0a9aed90b6594bb8292f">HANDLE</a> <a class="code" href="namespaceprocess.html">process</a> = ::OpenProcess(</div><div class="line"><a name="l00243"></a><span class="lineno">  243</span>&#160;      PROCESS_QUERY_INFORMATION | SYNCHRONIZE,</div><div class="line"><a name="l00244"></a><span class="lineno">  244</span>&#160;      FALSE,</div><div class="line"><a name="l00245"></a><span class="lineno">  245</span>&#160;      static_cast&lt;DWORD&gt;(pid));</div><div class="line"><a name="l00246"></a><span class="lineno">  246</span>&#160;</div><div class="line"><a name="l00247"></a><span class="lineno">  247</span>&#160;  <span class="keywordflow">if</span> (process == <span class="keyword">nullptr</span>) {</div><div class="line"><a name="l00248"></a><span class="lineno">  248</span>&#160;    <span class="keywordflow">return</span> <a class="c
 ode" href="classWindowsError.html">WindowsError</a>(<span class="stringliteral">&quot;os::waitpid: Failed to open process for pid &#39;&quot;</span> +</div><div class="line"><a name="l00249"></a><span class="lineno">  249</span>&#160;                        <a class="code" href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(pid) + <span class="stringliteral">&quot;&#39;&quot;</span>);</div><div class="line"><a name="l00250"></a><span class="lineno">  250</span>&#160;  }</div><div class="line"><a name="l00251"></a><span class="lineno">  251</span>&#160;</div><div class="line"><a name="l00252"></a><span class="lineno">  252</span>&#160;  <a class="code" href="classSharedHandle.html">SharedHandle</a> scoped_process(process, ::CloseHandle);</div><div class="line"><a name="l00253"></a><span class="lineno">  253</span>&#160;</div><div class="line"><a name="l00254"></a><span class="lineno">  254</span>&#160;  <span class="comment">// If `WNOHANG` flag is set, don&#39;t 
 wait. Otherwise, wait for child to</span></div><div class="line"><a name="l00255"></a><span class="lineno">  255</span>&#160;  <span class="comment">// terminate.</span></div><div class="line"><a name="l00256"></a><span class="lineno">  256</span>&#160;  <span class="keyword">const</span> DWORD wait_time = wait_for_child ? INFINITE : 0;</div><div class="line"><a name="l00257"></a><span class="lineno">  257</span>&#160;  <span class="keyword">const</span> DWORD wait_results = ::WaitForSingleObject(</div><div class="line"><a name="l00258"></a><span class="lineno">  258</span>&#160;      scoped_process.get(),</div><div class="line"><a name="l00259"></a><span class="lineno">  259</span>&#160;      wait_time);</div><div class="line"><a name="l00260"></a><span class="lineno">  260</span>&#160;</div><div class="line"><a name="l00261"></a><span class="lineno">  261</span>&#160;  <span class="comment">// Verify our wait exited correctly.</span></div><div class="line"><a name="l00262"></a><sp
 an class="lineno">  262</span>&#160;  <span class="keyword">const</span> <span class="keywordtype">bool</span> state_signaled = wait_results == WAIT_OBJECT_0;</div><div class="line"><a name="l00263"></a><span class="lineno">  263</span>&#160;  <span class="keywordflow">if</span> (options == 0 &amp;&amp; !state_signaled) {</div><div class="line"><a name="l00264"></a><span class="lineno">  264</span>&#160;    <span class="comment">// If `WNOHANG` is not set, then we should have stopped waiting only for a</span></div><div class="line"><a name="l00265"></a><span class="lineno">  265</span>&#160;    <span class="comment">// state change in `scoped_process`.</span></div><div class="line"><a name="l00266"></a><span class="lineno">  266</span>&#160;    errno = ECHILD;</div><div class="line"><a name="l00267"></a><span class="lineno">  267</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classWindowsError.html">WindowsError</a>(</div><div class="line"><a name="l00
 268"></a><span class="lineno">  268</span>&#160;        <span class="stringliteral">&quot;os::waitpid: Failed to wait for pid &#39;&quot;</span> + <a class="code" href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(pid) +</div><div class="line"><a name="l00269"></a><span class="lineno">  269</span>&#160;        <span class="stringliteral">&quot;&#39;. `::WaitForSingleObject` should have waited for child process to &quot;</span> +</div><div class="line"><a name="l00270"></a><span class="lineno">  270</span>&#160;        <span class="stringliteral">&quot;exit, but returned code &#39;&quot;</span> + <a class="code" href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(wait_results) +</div><div class="line"><a name="l00271"></a><span class="lineno">  271</span>&#160;        <span class="stringliteral">&quot;&#39; instead&quot;</span>);</div><div class="line"><a name="l00272"></a><span class="lineno">  272</span>&#160;  } <span class="keywordflow">el
 se</span> <span class="keywordflow">if</span> (wait_for_child &amp;&amp; !state_signaled &amp;&amp;</div><div class="line"><a name="l00273"></a><span class="lineno">  273</span>&#160;             wait_results != WAIT_TIMEOUT) {</div><div class="line"><a name="l00274"></a><span class="lineno">  274</span>&#160;    <span class="comment">// If `WNOHANG` is set, then a successful wait should report either a</span></div><div class="line"><a name="l00275"></a><span class="lineno">  275</span>&#160;    <span class="comment">// timeout (since we set the time to wait to `0`), or a successful state</span></div><div class="line"><a name="l00276"></a><span class="lineno">  276</span>&#160;    <span class="comment">// change of `scoped_process`. Anything else is an error.</span></div><div class="line"><a name="l00277"></a><span class="lineno">  277</span>&#160;    errno = ECHILD;</div><div class="line"><a name="l00278"></a><span class="lineno">  278</span>&#160;    <span class="keywordflow">retu
 rn</span> <a class="code" href="classWindowsError.html">WindowsError</a>(</div><div class="line"><a name="l00279"></a><span class="lineno">  279</span>&#160;        <span class="stringliteral">&quot;os::waitpid: Failed to wait for pid &#39;&quot;</span> + <a class="code" href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(pid) +</div><div class="line"><a name="l00280"></a><span class="lineno">  280</span>&#160;        <span class="stringliteral">&quot;&#39;. `ENOHANG` flag was passed in, so `::WaitForSingleObject` should &quot;</span> +</div><div class="line"><a name="l00281"></a><span class="lineno">  281</span>&#160;        <span class="stringliteral">&quot;have either returned `WAIT_OBJECT_0` or `WAIT_TIMEOUT` (the &quot;</span> +</div><div class="line"><a name="l00282"></a><span class="lineno">  282</span>&#160;        <span class="stringliteral">&quot;timeout was set to 0, because we are not waiting for the child), &quot;</span> +</div><div class="line"><a n
 ame="l00283"></a><span class="lineno">  283</span>&#160;        <span class="stringliteral">&quot;but instead returned code &#39;&quot;</span> + <a class="code" href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(wait_results) + <span class="stringliteral">&quot;&#39;&quot;</span>);</div><div class="line"><a name="l00284"></a><span class="lineno">  284</span>&#160;  }</div><div class="line"><a name="l00285"></a><span class="lineno">  285</span>&#160;</div><div class="line"><a name="l00286"></a><span class="lineno">  286</span>&#160;  <span class="keywordflow">if</span> (!wait_for_child &amp;&amp; wait_results == WAIT_TIMEOUT) {</div><div class="line"><a name="l00287"></a><span class="lineno">  287</span>&#160;    <span class="comment">// Success. `ENOHANG` was set and we got a timeout, so return `None` (POSIX</span></div><div class="line"><a name="l00288"></a><span class="lineno">  288</span>&#160;    <span class="comment">// `::waitpid` would return 0 here).</sp
 an></div><div class="line"><a name="l00289"></a><span class="lineno">  289</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="structNone.html">None</a>();</div><div class="line"><a name="l00290"></a><span class="lineno">  290</span>&#160;  }</div><div class="line"><a name="l00291"></a><span class="lineno">  291</span>&#160;</div><div class="line"><a name="l00292"></a><span class="lineno">  292</span>&#160;  <span class="comment">// Attempt to retrieve exit code from child process. Store that exit code in</span></div><div class="line"><a name="l00293"></a><span class="lineno">  293</span>&#160;  <span class="comment">// the `status` variable if it&#39;s `nullptr`.</span></div><div class="line"><a name="l00294"></a><span class="lineno">  294</span>&#160;  DWORD child_exit_code = 0;</div><div class="line"><a name="l00295"></a><span class="lineno">  295</span>&#160;  <span class="keywordflow">if</span> (!::GetExitCodeProcess(scoped_process.get(), &amp;child_ex
 it_code)) {</div><div class="line"><a name="l00296"></a><span class="lineno">  296</span>&#160;    errno = ECHILD;</div><div class="line"><a name="l00297"></a><span class="lineno">  297</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classWindowsError.html">WindowsError</a>(</div><div class="line"><a name="l00298"></a><span class="lineno">  298</span>&#160;        <span class="stringliteral">&quot;os::waitpid: Successfully waited on child process with pid &#39;&quot;</span> +</div><div class="line"><a name="l00299"></a><span class="lineno">  299</span>&#160;        std::to_string(pid) + <span class="stringliteral">&quot;&#39;, but could not retrieve exit code&quot;</span>);</div><div class="line"><a name="l00300"></a><span class="lineno">  300</span>&#160;  }</div><div class="line"><a name="l00301"></a><span class="lineno">  301</span>&#160;</div><div class="line"><a name="l00302"></a><span class="lineno">  302</span>&#160;  <span class="keywordflow">if
 </span> (status != <span class="keyword">nullptr</span>) {</div><div class="line"><a name="l00303"></a><span class="lineno">  303</span>&#160;    *status = child_exit_code;</div><div class="line"><a name="l00304"></a><span class="lineno">  304</span>&#160;  }</div><div class="line"><a name="l00305"></a><span class="lineno">  305</span>&#160;</div><div class="line"><a name="l00306"></a><span class="lineno">  306</span>&#160;  <span class="comment">// Success. Return pid of the child process for which the status is reported.</span></div><div class="line"><a name="l00307"></a><span class="lineno">  307</span>&#160;  <span class="keywordflow">return</span> pid;</div><div class="line"><a name="l00308"></a><span class="lineno">  308</span>&#160;}</div><div class="line"><a name="l00309"></a><span class="lineno">  309</span>&#160;</div><div class="line"><a name="l00310"></a><span class="lineno">  310</span>&#160;</div><div class="line"><a name="l00311"></a><span class="lineno">  311</span>&
 #160;<span class="keyword">inline</span> std::string <a class="code" href="namespaceos.html#a73c0258b355f6a38f3809bcd16a8f25a">hstrerror</a>(<span class="keywordtype">int</span> err) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00312"></a><span class="lineno">  312</span>&#160;</div><div class="line"><a name="l00313"></a><span class="lineno">  313</span>&#160;</div><div class="line"><a name="l00314"></a><span class="lineno">  314</span>&#160;<span class="keyword">inline</span> <a class="code" href="classTry.html">Try&lt;Nothing&gt;</a> <a class="code" href="namespaceos.html#a9ea4b5bd8ccef02c74ceb9b4a497baab">chown</a>(</div><div class="line"><a name="l00315"></a><span class="lineno">  315</span>&#160;    <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>,</div><div class="line"><a name="l00316"></a><sp
 an class="lineno">  316</span>&#160;    <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a78ecefd3a9f3f0c110b9f6f038b690eb">gid_t</a> gid,</div><div class="line"><a name="l00317"></a><span class="lineno">  317</span>&#160;    <span class="keyword">const</span> std::string&amp; <a class="code" href="namespacepath.html">path</a>,</div><div class="line"><a name="l00318"></a><span class="lineno">  318</span>&#160;    <span class="keywordtype">bool</span> recursive) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00319"></a><span class="lineno">  319</span>&#160;</div><div class="line"><a name="l00320"></a><span class="lineno">  320</span>&#160;</div><div class="line"><a name="l00321"></a><span class="lineno">  321</span>&#160;<span class="keyword">inline</span> <a class="code" href="classTry.html">Try&lt;Nothing&gt;</a> <a class="code" href="namespaceos.html#ab9f08ced036cc5156a11a86090768bb5">chmod</a>(<span class="keyword">const</span> st
 d::string&amp; path, <span class="keywordtype">int</span> <a class="code" href="namespaceos_1_1stat.html#afc51654ad486693167c300612bf8ebfa">mode</a>) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00322"></a><span class="lineno">  322</span>&#160;</div><div class="line"><a name="l00323"></a><span class="lineno">  323</span>&#160;</div><div class="line"><a name="l00324"></a><span class="lineno">  324</span>&#160;<span class="keyword">inline</span> <a class="code" href="classTry.html">Try&lt;Nothing&gt;</a> <a class="code" href="namespaceos.html#accb0757a8d9eca48dd31c4c433d17cfd">mknod</a>(</div><div class="line"><a name="l00325"></a><span class="lineno">  325</span>&#160;    <span class="keyword">const</span> std::string&amp; path,</div><div class="line"><a name="l00326"></a><span class="lineno">  326</span>&#160;    <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a8a35dd1207a16dfa8b1d4163176d828c">mode_t</a> mode,</div><div class="li
 ne"><a name="l00327"></a><span class="lineno">  327</span>&#160;    dev_t <a class="code" href="namespaceos_1_1stat.html#a083c9ff4aefeba1a75a27e6a6d6e2a71">dev</a>) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00328"></a><span class="lineno">  328</span>&#160;</div><div class="line"><a name="l00329"></a><span class="lineno">  329</span>&#160;</div><div class="line"><a name="l00330"></a><span class="lineno">  330</span>&#160;<span class="comment">// Suspends execution for the given duration.</span></div><div class="line"><a name="l00331"></a><span class="lineno">  331</span>&#160;<span class="comment">// NOTE: This implementation features a millisecond-resolution sleep API, while</span></div><div class="line"><a name="l00332"></a><span class="lineno">  332</span>&#160;<span class="comment">// the POSIX version uses a nanosecond-resolution sleep API. As of this writing,</span></div><div class="line"><a name="l00333"></a><span class="lineno">  333</span>&#160
 ;<span class="comment">// Mesos only requires millisecond resolution, so this is ok for now.</span></div><div class="line"><a name="l00334"></a><span class="lineno">  334</span>&#160;<span class="keyword">inline</span> <a class="code" href="classTry.html">Try&lt;Nothing&gt;</a> <a class="code" href="namespaceos.html#ab2b826c68a25af9e9ef47c570c36e137">sleep</a>(<span class="keyword">const</span> <a class="code" href="classDuration.html">Duration</a>&amp; duration)</div><div class="line"><a name="l00335"></a><span class="lineno">  335</span>&#160;{</div><div class="line"><a name="l00336"></a><span class="lineno">  336</span>&#160;  <span class="keywordflow">if</span> (duration.<a class="code" href="classDuration.html#a05ddd6a9f21b82dba6313f81418f53d2">ms</a>() &lt; 0) {</div><div class="line"><a name="l00337"></a><span class="lineno">  337</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classWindowsError.html">WindowsError</a>(ERROR_INVALID_PARAMETER);</d
 iv><div class="line"><a name="l00338"></a><span class="lineno">  338</span>&#160;  }</div><div class="line"><a name="l00339"></a><span class="lineno">  339</span>&#160;</div><div class="line"><a name="l00340"></a><span class="lineno">  340</span>&#160;  ::Sleep(static_cast&lt;DWORD&gt;(duration.<a class="code" href="classDuration.html#a05ddd6a9f21b82dba6313f81418f53d2">ms</a>()));</div><div class="line"><a name="l00341"></a><span class="lineno">  341</span>&#160;</div><div class="line"><a name="l00342"></a><span class="lineno">  342</span>&#160;  <span class="keywordflow">return</span> <a class="code" href="structNothing.html">Nothing</a>();</div><div class="line"><a name="l00343"></a><span class="lineno">  343</span>&#160;}</div><div class="line"><a name="l00344"></a><span class="lineno">  344</span>&#160;</div><div class="line"><a name="l00345"></a><span class="lineno">  345</span>&#160;</div><div class="line"><a name="l00346"></a><span class="lineno">  346</span>&#160;<span class
 ="comment">// Returns the list of files that match the given (shell) pattern.</span></div><div class="line"><a name="l00347"></a><span class="lineno">  347</span>&#160;<span class="comment">// NOTE: Deleted on Windows, as a POSIX-API-compliant `glob` is much more</span></div><div class="line"><a name="l00348"></a><span class="lineno">  348</span>&#160;<span class="comment">// trouble than its worth, considering our relatively simple usage.</span></div><div class="line"><a name="l00349"></a><span class="lineno">  349</span>&#160;<span class="keyword">inline</span> <a class="code" href="classTry.html">Try&lt;std::list&lt;std::string&gt;</a>&gt; <a class="code" href="namespaceos.html#a781ae694650dd3c6addab2a383a8c422">glob</a>(<span class="keyword">const</span> std::string&amp; pattern) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00350"></a><span class="lineno">  350</span>&#160;</div><div class="line"><a name="l00351"></a><span class="lineno">  351</span>&#
 160;</div><div class="line"><a name="l00352"></a><span class="lineno">  352</span>&#160;<span class="comment">// Returns the total number of cpus (cores).</span></div><div class="line"><a name="l00353"></a><span class="lineno">  353</span>&#160;<span class="keyword">inline</span> <a class="code" href="classTry.html">Try&lt;long&gt;</a> <a class="code" href="namespaceos.html#afd08813156fea899c86b340d9767a8cd">cpus</a>()</div><div class="line"><a name="l00354"></a><span class="lineno">  354</span>&#160;{</div><div class="line"><a name="l00355"></a><span class="lineno">  355</span>&#160;  SYSTEM_INFO sys_info;</div><div class="line"><a name="l00356"></a><span class="lineno">  356</span>&#160;  ::GetSystemInfo(&amp;sys_info);</div><div class="line"><a name="l00357"></a><span class="lineno">  357</span>&#160;  <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><span class="keywordtype">long</span><span class="keyword">&gt;</span>(sys_info.dwNumberOfProces
 sors);</div><div class="line"><a name="l00358"></a><span class="lineno">  358</span>&#160;}</div><div class="line"><a name="l00359"></a><span class="lineno">  359</span>&#160;</div><div class="line"><a name="l00360"></a><span class="lineno">  360</span>&#160;<span class="comment">// Returns load struct with average system loads for the last</span></div><div class="line"><a name="l00361"></a><span class="lineno">  361</span>&#160;<span class="comment">// 1, 5 and 15 minutes respectively.</span></div><div class="line"><a name="l00362"></a><span class="lineno">  362</span>&#160;<span class="comment">// Load values should be interpreted as usual average loads from</span></div><div class="line"><a name="l00363"></a><span class="lineno">  363</span>&#160;<span class="comment">// uptime(1).</span></div><div class="line"><a name="l00364"></a><span class="lineno">  364</span>&#160;<span class="keyword">inline</span> <a class="code" href="classTry.html">Try&lt;Load&gt;</a> <a class="code" hre
 f="namespaceos.html#ad932e3876b339c61b03abc575ad3943b">loadavg</a>()</div><div class="line"><a name="l00365"></a><span class="lineno">  365</span>&#160;{</div><div class="line"><a name="l00366"></a><span class="lineno">  366</span>&#160;  <span class="comment">// No Windows equivalent, return an error until there is a need. We can</span></div><div class="line"><a name="l00367"></a><span class="lineno">  367</span>&#160;  <span class="comment">// construct an approximation of this function by periodically polling</span></div><div class="line"><a name="l00368"></a><span class="lineno">  368</span>&#160;  <span class="comment">// `GetSystemTimes` and using a sliding window of statistics.</span></div><div class="line"><a name="l00369"></a><span class="lineno">  369</span>&#160;  <span class="keywordflow">return</span> <a class="code" href="classWindowsError.html">WindowsError</a>(ERROR_NOT_SUPPORTED,</div><div class="line"><a name="l00370"></a><span class="lineno">  370</span>&#160;    
                   <span class="stringliteral">&quot;Failed to determine system load averages&quot;</span>);</div><div class="line"><a name="l00371"></a><span class="lineno">  371</span>&#160;}</div><div class="line"><a name="l00372"></a><span class="lineno">  372</span>&#160;</div><div class="line"><a name="l00373"></a><span class="lineno">  373</span>&#160;</div><div class="line"><a name="l00374"></a><span class="lineno">  374</span>&#160;<span class="comment">// Returns the total size of main and free memory.</span></div><div class="line"><a name="l00375"></a><span class="lineno">  375</span>&#160;<span class="keyword">inline</span> <a class="code" href="classTry.html">Try&lt;Memory&gt;</a> <a class="code" href="namespaceos.html#a23a7b8f4b4c145ad212381e89d4b6dc4">memory</a>()</div><div class="line"><a name="l00376"></a><span class="lineno">  376</span>&#160;{</div><div class="line"><a name="l00377"></a><span class="lineno">  377</span>&#160;  <a class="code" href="structos_1_1Memo
 ry.html">Memory</a> <a class="code" href="namespaceos.html#a23a7b8f4b4c145ad212381e89d4b6dc4">memory</a>;</div><div class="line"><a name="l00378"></a><span class="lineno">  378</span>&#160;</div><div class="line"><a name="l00379"></a><span class="lineno">  379</span>&#160;  MEMORYSTATUSEX memory_status;</div><div class="line"><a name="l00380"></a><span class="lineno">  380</span>&#160;  memory_status.dwLength = <span class="keyword">sizeof</span>(MEMORYSTATUSEX);</div><div class="line"><a name="l00381"></a><span class="lineno">  381</span>&#160;  <span class="keywordflow">if</span> (!::GlobalMemoryStatusEx(&amp;memory_status)) {</div><div class="line"><a name="l00382"></a><span class="lineno">  382</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classWindowsError.html">WindowsError</a>(<span class="stringliteral">&quot;os::memory: Call to `GlobalMemoryStatusEx` failed&quot;</span>);</div><div class="line"><a name="l00383"></a><span class="lineno">  383<
 /span>&#160;  }</div><div class="line"><a name="l00384"></a><span class="lineno">  384</span>&#160;</div><div class="line"><a name="l00385"></a><span class="lineno">  385</span>&#160;  memory.<a class="code" href="structos_1_1Memory.html#a3670204f7fb13a96ca0e278f49b91282">total</a> = <a class="code" href="classBytes.html">Bytes</a>(memory_status.ullTotalPhys);</div><div class="line"><a name="l00386"></a><span class="lineno">  386</span>&#160;  memory.<a class="code" href="structos_1_1Memory.html#ab447e8e30892e0d5f0e3a976e6d80cde">free</a> = <a class="code" href="classBytes.html">Bytes</a>(memory_status.ullAvailPhys);</div><div class="line"><a name="l00387"></a><span class="lineno">  387</span>&#160;  memory.<a class="code" href="structos_1_1Memory.html#a00f1a2071778c1ce10eff411fae079d5">totalSwap</a> = <a class="code" href="classBytes.html">Bytes</a>(memory_status.ullTotalPageFile);</div><div class="line"><a name="l00388"></a><span class="lineno">  388</span>&#160;  memory.<a class=
 "code" href="structos_1_1Memory.html#a99857d2d965390fe2e88f417037dce55">freeSwap</a> = <a class="code" href="classBytes.html">Bytes</a>(memory_status.ullAvailPageFile);</div><div class="line"><a name="l00389"></a><span class="lineno">  389</span>&#160;</div><div class="line"><a name="l00390"></a><span class="lineno">  390</span>&#160;  <span class="keywordflow">return</span> <a class="code" href="namespaceos.html#a23a7b8f4b4c145ad212381e89d4b6dc4">memory</a>;</div><div class="line"><a name="l00391"></a><span class="lineno">  391</span>&#160;}</div><div class="line"><a name="l00392"></a><span class="lineno">  392</span>&#160;</div><div class="line"><a name="l00393"></a><span class="lineno">  393</span>&#160;</div><div class="line"><a name="l00394"></a><span class="lineno">  394</span>&#160;<span class="keyword">inline</span> <a class="code" href="classTry.html">Try&lt;Version&gt;</a> <a class="code" href="namespaceos.html#a079aa1b108c567735620a14ea2a2e506">release</a>() = <span class
 ="keyword">delete</span>;</div><div class="line"><a name="l00395"></a><span class="lineno">  395</span>&#160;</div><div class="line"><a name="l00396"></a><span class="lineno">  396</span>&#160;</div><div class="line"><a name="l00397"></a><span class="lineno">  397</span>&#160;<span class="comment">// Return the system information.</span></div><div class="line"><a name="l00398"></a><span class="lineno">  398</span>&#160;<span class="keyword">inline</span> <a class="code" href="classTry.html">Try&lt;UTSInfo&gt;</a> <a class="code" href="namespaceos.html#afc96a896b632cb0942b317a1f8543919">uname</a>() = <span class="keyword">delete</span>;</div><div class="line"><a name="l00399"></a><span class="lineno">  399</span>&#160;</div><div class="line"><a name="l00400"></a><span class="lineno">  400</span>&#160;</div><div class="line"><a name="l00401"></a><span class="lineno"><a class="line" href="namespaceos.html#a5e0295f0e3bae2bd29d86803f9293b5d">  401</a></span>&#160;<span class="keyword">in
 line</span> tm* <a class="code" href="namespaceos.html#a5e0295f0e3bae2bd29d86803f9293b5d">gmtime_r</a>(<span class="keyword">const</span> time_t* timep, tm* result)</div><div class="line"><a name="l00402"></a><span class="lineno">  402</span>&#160;{</div><div class="line"><a name="l00403"></a><span class="lineno">  403</span>&#160;  return ::gmtime_s(result, timep) == ERROR_SUCCESS ? result : <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00404"></a><span class="lineno">  404</span>&#160;}</div><div class="line"><a name="l00405"></a><span class="lineno">  405</span>&#160;</div><div class="line"><a name="l00406"></a><span class="lineno">  406</span>&#160;</div><div class="line"><a name="l00407"></a><span class="lineno"><a class="line" href="namespaceos.html#a64774f3176080d29eedcee42ae23c747">  407</a></span>&#160;<span class="keyword">inline</span> <a class="code" href="classResult.html">Result&lt;PROCESSENTRY32W&gt;</a> <a class="code" href="namespaceos.html#
 a64774f3176080d29eedcee42ae23c747">process_entry</a>(<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a> pid)</div><div class="line"><a name="l00408"></a><span class="lineno">  408</span>&#160;{</div><div class="line"><a name="l00409"></a><span class="lineno">  409</span>&#160;  <span class="comment">// Get a snapshot of the processes in the system. NOTE: We should not check</span></div><div class="line"><a name="l00410"></a><span class="lineno">  410</span>&#160;  <span class="comment">// whether the handle is `nullptr`, because this API will always return</span></div><div class="line"><a name="l00411"></a><span class="lineno">  411</span>&#160;  <span class="comment">// `INVALID_HANDLE_VALUE` on error.</span></div><div class="line"><a name="l00412"></a><span class="lineno">  412</span>&#160;  <a class="code" href="namespacerouting_1_1queueing_1_1ingress.html#a934208b6017d0a9aed90b6594bb8292f">HANDLE</a> snapshot_han
 dle = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, pid);</div><div class="line"><a name="l00413"></a><span class="lineno">  413</span>&#160;  <span class="keywordflow">if</span> (snapshot_handle == INVALID_HANDLE_VALUE) {</div><div class="line"><a name="l00414"></a><span class="lineno">  414</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classWindowsError.html">WindowsError</a>(</div><div class="line"><a name="l00415"></a><span class="lineno">  415</span>&#160;        <span class="stringliteral">&quot;os::process_entry: Call to `CreateToolhelp32Snapshot` failed&quot;</span>);</div><div class="line"><a name="l00416"></a><span class="lineno">  416</span>&#160;  }</div><div class="line"><a name="l00417"></a><span class="lineno">  417</span>&#160;</div><div class="line"><a name="l00418"></a><span class="lineno">  418</span>&#160;  <a class="code" href="classSharedHandle.html">SharedHandle</a> safe_snapshot_handle(snapshot_handle, ::CloseHandle);</div><div 
 class="line"><a name="l00419"></a><span class="lineno">  419</span>&#160;</div><div class="line"><a name="l00420"></a><span class="lineno">  420</span>&#160;  <span class="comment">// Initialize process entry.</span></div><div class="line"><a name="l00421"></a><span class="lineno">  421</span>&#160;  PROCESSENTRY32W <a class="code" href="namespaceos.html#a64774f3176080d29eedcee42ae23c747">process_entry</a>;</div><div class="line"><a name="l00422"></a><span class="lineno">  422</span>&#160;  memset(&amp;process_entry, 0, <span class="keyword">sizeof</span>(process_entry));</div><div class="line"><a name="l00423"></a><span class="lineno">  423</span>&#160;  process_entry.dwSize = <span class="keyword">sizeof</span>(<a class="code" href="namespaceos.html#a64774f3176080d29eedcee42ae23c747">process_entry</a>);</div><div class="line"><a name="l00424"></a><span class="lineno">  424</span>&#160;</div><div class="line"><a name="l00425"></a><span class="lineno">  425</span>&#160;  <span class
 ="comment">// Get first process so that we can loop through process entries until we</span></div><div class="line"><a name="l00426"></a><span class="lineno">  426</span>&#160;  <span class="comment">// find the one we care about.</span></div><div class="line"><a name="l00427"></a><span class="lineno">  427</span>&#160;  SetLastError(ERROR_SUCCESS);</div><div class="line"><a name="l00428"></a><span class="lineno">  428</span>&#160;  BOOL has_next = Process32First(safe_snapshot_handle.get(), &amp;<a class="code" href="namespaceos.html#a64774f3176080d29eedcee42ae23c747">process_entry</a>);</div><div class="line"><a name="l00429"></a><span class="lineno">  429</span>&#160;  <span class="keywordflow">if</span> (has_next == FALSE) {</div><div class="line"><a name="l00430"></a><span class="lineno">  430</span>&#160;    <span class="comment">// No first process was found. We should never be here; it is arguable we</span></div><div class="line"><a name="l00431"></a><span class="lineno">  431
 </span>&#160;    <span class="comment">// should return `None`, since we won&#39;t find the PID we&#39;re looking for, but</span></div><div class="line"><a name="l00432"></a><span class="lineno">  432</span>&#160;    <span class="comment">// we elect to return `Error` because something terrible has probably</span></div><div class="line"><a name="l00433"></a><span class="lineno">  433</span>&#160;    <span class="comment">// happened.</span></div><div class="line"><a name="l00434"></a><span class="lineno">  434</span>&#160;    <span class="keywordflow">if</span> (::GetLastError() != ERROR_SUCCESS) {</div><div class="line"><a name="l00435"></a><span class="lineno">  435</span>&#160;      <span class="keywordflow">return</span> <a class="code" href="classWindowsError.html">WindowsError</a>(<span class="stringliteral">&quot;os::process_entry: Call to `Process32First` failed&quot;</span>);</div><div class="line"><a name="l00436"></a><span class="lineno">  436</span>&#160;    } <span clas
 s="keywordflow">else</span> {</div><div class="line"><a name="l00437"></a><span class="lineno">  437</span>&#160;      <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">&quot;os::process_entry: Call to `Process32First` failed&quot;</span>);</div><div class="line"><a name="l00438"></a><span class="lineno">  438</span>&#160;    }</div><div class="line"><a name="l00439"></a><span class="lineno">  439</span>&#160;  }</div><div class="line"><a name="l00440"></a><span class="lineno">  440</span>&#160;</div><div class="line"><a name="l00441"></a><span class="lineno">  441</span>&#160;  <span class="comment">// Loop through processes until we find the one we&#39;re looking for.</span></div><div class="line"><a name="l00442"></a><span class="lineno">  442</span>&#160;  <span class="keywordflow">while</span> (has_next == TRUE) {</div><div class="line"><a name="l00443"></a><span class="lineno">  443</span>&#160;    <span class=
 "keywordflow">if</span> (process_entry.th32ProcessID == pid) {</div><div class="line"><a name="l00444"></a><span class="lineno">  444</span>&#160;      <span class="comment">// Process found.</span></div><div class="line"><a name="l00445"></a><span class="lineno">  445</span>&#160;      <span class="keywordflow">return</span> <a class="code" href="namespaceos.html#a64774f3176080d29eedcee42ae23c747">process_entry</a>;</div><div class="line"><a name="l00446"></a><span class="lineno">  446</span>&#160;    }</div><div class="line"><a name="l00447"></a><span class="lineno">  447</span>&#160;</div><div class="line"><a name="l00448"></a><span class="lineno">  448</span>&#160;    has_next = Process32Next(safe_snapshot_handle.get(), &amp;<a class="code" href="namespaceos.html#a64774f3176080d29eedcee42ae23c747">process_entry</a>);</div><div class="line"><a name="l00449"></a><span class="lineno">  449</span>&#160;    <span class="keywordflow">if</span> (has_next == FALSE) {</div><div class="li
 ne"><a name="l00450"></a><span class="lineno">  450</span>&#160;      DWORD last_error = ::GetLastError();</div><div class="line"><a name="l00451"></a><span class="lineno">  451</span>&#160;      <span class="keywordflow">if</span> (last_error != ERROR_NO_MORE_FILES &amp;&amp; last_error != ERROR_SUCCESS) {</div><div class="line"><a name="l00452"></a><span class="lineno">  452</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="classWindowsError.html">WindowsError</a>(</div><div class="line"><a name="l00453"></a><span class="lineno">  453</span>&#160;            <span class="stringliteral">&quot;os::process_entry: Call to `Process32Next` failed&quot;</span>);</div><div class="line"><a name="l00454"></a><span class="lineno">  454</span>&#160;      }</div><div class="line"><a name="l00455"></a><span class="lineno">  455</span>&#160;    }</div><div class="line"><a name="l00456"></a><span class="lineno">  456</span>&#160;  }</div><div class="line"><a name="
 l00457"></a><span class="lineno">  457</span>&#160;</div><div class="line"><a name="l00458"></a><span class="lineno">  458</span>&#160;  <span class="keywordflow">return</span> <a class="code" href="structNone.html">None</a>();</div><div class="line"><a name="l00459"></a><span class="lineno">  459</span>&#160;}</div><div class="line"><a name="l00460"></a><span class="lineno">  460</span>&#160;</div><div class="line"><a name="l00461"></a><span class="lineno">  461</span>&#160;</div><div class="line"><a name="l00462"></a><span class="lineno">  462</span>&#160;<span class="comment">// Generate a `Process` object for the process associated with `pid`. If</span></div><div class="line"><a name="l00463"></a><span class="lineno">  463</span>&#160;<span class="comment">// process is not found, we return `None`; error is reserved for the case where</span></div><div class="line"><a name="l00464"></a><span class="lineno">  464</span>&#160;<span class="comment">// something went wrong.</span></d
 iv><div class="line"><a name="l00465"></a><span class="lineno">  465</span>&#160;<span class="keyword">inline</span> <a class="code" href="classResult.html">Result&lt;Process&gt;</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="l00466"></a><span class="lineno">  466</span>&#160;{</div><div class="line"><a name="l00467"></a><span class="lineno">  467</span>&#160;  <span class="keywordflow">if</span> (pid == 0) {</div><div class="line"><a name="l00468"></a><span class="lineno">  468</span>&#160;    <span class="comment">// The 0th PID is that of the System Idle Process on Windows. However, it is</span></div><div class="line"><a name="l00469"></a><span class="lineno">  469</span>&#160;    <span class="comment">// invalid to attempt to get a proces handle or else perform any operation</span></d
 iv><div class="line"><a name="l00470"></a><span class="lineno">  470</span>&#160;    <span class="comment">// on this pseudo-process.</span></div><div class="line"><a name="l00471"></a><span class="lineno">  471</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">&quot;os::process: Invalid parameter: pid == 0&quot;</span>);</div><div class="line"><a name="l00472"></a><span class="lineno">  472</span>&#160;  }</div><div class="line"><a name="l00473"></a><span class="lineno">  473</span>&#160;</div><div class="line"><a name="l00474"></a><span class="lineno">  474</span>&#160;  <span class="comment">// Find process with pid.</span></div><div class="line"><a name="l00475"></a><span class="lineno">  475</span>&#160;  <a class="code" href="classResult.html">Result&lt;PROCESSENTRY32W&gt;</a> entry = <a class="code" href="namespaceos.html#a64774f3176080d29eedcee42ae23c747">process_entry</a>(pid);</div><div clas
 s="line"><a name="l00476"></a><span class="lineno">  476</span>&#160;</div><div class="line"><a name="l00477"></a><span class="lineno">  477</span>&#160;  <span class="keywordflow">if</span> (entry.<a class="code" href="classResult.html#aeca16ad17d299ad885c9b46c83b12a3d">isError</a>()) {</div><div class="line"><a name="l00478"></a><span class="lineno">  478</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classWindowsError.html">WindowsError</a>(entry.<a class="code" href="classResult.html#a521adf96f5c27d26d6b1d580aae8aaee">error</a>());</div><div class="line"><a name="l00479"></a><span class="lineno">  479</span>&#160;  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (entry.<a class="code" href="classResult.html#ac2cdc0db9f9d29a5bb2f1cf19c29da49">isNone</a>()) {</div><div class="line"><a name="l00480"></a><span class="lineno">  480</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="structNone.html">
 None</a>();</div><div class="line"><a name="l00481"></a><span class="lineno">  481</span>&#160;  }</div><div class="line"><a name="l00482"></a><span class="lineno">  482</span>&#160;</div><div class="line"><a name="l00483"></a><span class="lineno">  483</span>&#160;  <a class="code" href="namespacerouting_1_1queueing_1_1ingress.html#a934208b6017d0a9aed90b6594bb8292f">HANDLE</a> process_handle = ::OpenProcess(</div><div class="line"><a name="l00484"></a><span class="lineno">  484</span>&#160;      PROCESS_QUERY_LIMITED_INFORMATION | PROCESS_VM_READ,</div><div class="line"><a name="l00485"></a><span class="lineno">  485</span>&#160;      <span class="keyword">false</span>,</div><div class="line"><a name="l00486"></a><span class="lineno">  486</span>&#160;      pid);</div><div class="line"><a name="l00487"></a><span class="lineno">  487</span>&#160;</div><div class="line"><a name="l00488"></a><span class="lineno">  488</span>&#160;  <span class="comment">// ::OpenProcess returns `NULL`
 , not `INVALID_HANDLE_VALUE` on failure.</span></div><div class="line"><a name="l00489"></a><span class="lineno">  489</span>&#160;  <span class="keywordflow">if</span> (process_handle == <span class="keyword">nullptr</span>) {</div><div class="line"><a name="l00490"></a><span class="lineno">  490</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classWindowsError.html">WindowsError</a>(<span class="stringliteral">&quot;os::process: Call to `OpenProcess` failed&quot;</span>);</div><div class="line"><a name="l00491"></a><span class="lineno">  491</span>&#160;  }</div><div class="line"><a name="l00492"></a><span class="lineno">  492</span>&#160;</div><div class="line"><a name="l00493"></a><span class="lineno">  493</span>&#160;  <a class="code" href="classSharedHandle.html">SharedHandle</a> safe_process_handle(process_handle, ::CloseHandle);</div><div class="line"><a name="l00494"></a><span class="lineno">  494</span>&#160;</div><div class="line"><a name="l
 00495"></a><span class="lineno">  495</span>&#160;  <span class="comment">// Get Windows Working set size (Resident set size in linux).</span></div><div class="line"><a name="l00496"></a><span class="lineno">  496</span>&#160;  PROCESS_MEMORY_COUNTERS proc_mem_counters;</div><div class="line"><a name="l00497"></a><span class="lineno">  497</span>&#160;  BOOL get_process_memory_info = ::GetProcessMemoryInfo(</div><div class="line"><a name="l00498"></a><span class="lineno">  498</span>&#160;      safe_process_handle.<a class="code" href="classSharedHandle.html#a800385e17e17cb826147968e748fd8fa">get_handle</a>(),</div><div class="line"><a name="l00499"></a><span class="lineno">  499</span>&#160;      &amp;proc_mem_counters,</div><div class="line"><a name="l00500"></a><span class="lineno">  500</span>&#160;      <span class="keyword">sizeof</span>(proc_mem_counters));</div><div class="line"><a name="l00501"></a><span class="lineno">  501</span>&#160;</div><div class="line"><a name="l005
 02"></a><span class="lineno">  502</span>&#160;  <span class="keywordflow">if</span> (!get_process_memory_info) {</div><div class="line"><a name="l00503"></a><span class="lineno">  503</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classWindowsError.html">WindowsError</a>(<span class="stringliteral">&quot;os::process: Call to `GetProcessMemoryInfo` failed&quot;</span>);</div><div class="line"><a name="l00504"></a><span class="lineno">  504</span>&#160;  }</div><div class="line"><a name="l00505"></a><span class="lineno">  505</span>&#160;</div><div class="line"><a name="l00506"></a><span class="lineno">  506</span>&#160;  <span class="comment">// Get session Id.</span></div><div class="line"><a name="l00507"></a><span class="lineno">  507</span>&#160;  <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a> session_id;</div><div class="line"><a name="l00508"></a><span class="lineno">  508</sp
 an>&#160;  BOOL process_id_to_session_id = ::ProcessIdToSessionId(pid, &amp;session_id);</div><div class="line"><a name="l00509"></a><span class="lineno">  509</span>&#160;</div><div class="line"><a name="l00510"></a><span class="lineno">  510</span>&#160;  <span class="keywordflow">if</span> (!process_id_to_session_id) {</div><div class="line"><a name="l00511"></a><span class="lineno">  511</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classWindowsError.html">WindowsError</a>(<span class="stringliteral">&quot;os::process: Call to `ProcessIdToSessionId` failed&quot;</span>);</div><div class="line"><a name="l00512"></a><span class="lineno">  512</span>&#160;  }</div><div class="line"><a name="l00513"></a><span class="lineno">  513</span>&#160;</div><div class="line"><a name="l00514"></a><span class="lineno">  514</span>&#160;  <span class="comment">// Get Process CPU time.</span></div><div class="line"><a name="l00515"></a><span class="lineno">  515</s
 pan>&#160;  FILETIME create_filetime, exit_filetime, kernel_filetime, user_filetime;</div><div class="line"><a name="l00516"></a><span class="lineno">  516</span>&#160;  BOOL get_process_times = ::GetProcessTimes(</div><div class="line"><a name="l00517"></a><span class="lineno">  517</span>&#160;      safe_process_handle.<a class="code" href="classSharedHandle.html#a800385e17e17cb826147968e748fd8fa">get_handle</a>(),</div><div class="line"><a name="l00518"></a><span class="lineno">  518</span>&#160;      &amp;create_filetime,</div><div class="line"><a name="l00519"></a><span class="lineno">  519</span>&#160;      &amp;exit_filetime,</div><div class="line"><a name="l00520"></a><span class="lineno">  520</span>&#160;      &amp;kernel_filetime,</div><div class="line"><a name="l00521"></a><span class="lineno">  521</span>&#160;      &amp;user_filetime);</div><div class="line"><a name="l00522"></a><span class="lineno">  522</span>&#160;</div><div class="line"><a name="l00523"></a><span c
 lass="lineno">  523</span>&#160;  <span class="keywordflow">if</span> (!get_process_times) {</div><div class="line"><a name="l00524"></a><span class="lineno">  524</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classWindowsError.html">WindowsError</a>(<span class="stringliteral">&quot;os::process: Call to `GetProcessTimes` failed&quot;</span>);</div><div class="line"><a name="l00525"></a><span class="lineno">  525</span>&#160;  }</div><div class="line"><a name="l00526"></a><span class="lineno">  526</span>&#160;</div><div class="line"><a name="l00527"></a><span class="lineno">  527</span>&#160;  <span class="comment">// Get utime and stime.</span></div><div class="line"><a name="l00528"></a><span class="lineno">  528</span>&#160;  ULARGE_INTEGER lKernelTime, lUserTime; <span class="comment">// In 100 nanoseconds.</span></div><div class="line"><a name="l00529"></a><span class="lineno">  529</span>&#160;  lKernelTime.HighPart = kernel_filetime.dwHighDate
 Time;</div><div class="line"><a name="l00530"></a><span class="lineno">  530</span>&#160;  lKernelTime.LowPart = kernel_filetime.dwLowDateTime;</div><div class="line"><a name="l00531"></a><span class="lineno">  531</span>&#160;  lUserTime.HighPart = user_filetime.dwHighDateTime;</div><div class="line"><a name="l00532"></a><span class="lineno">  532</span>&#160;  lUserTime.LowPart = user_filetime.dwLowDateTime;</div><div class="line"><a name="l00533"></a><span class="lineno">  533</span>&#160;</div><div class="line"><a name="l00534"></a><span class="lineno">  534</span>&#160;  <a class="code" href="classTry.html">Try&lt;Duration&gt;</a> <a class="code" href="namespaceos.html#a818327458964860a86fc8964e4795b4d">utime</a> = <a class="code" href="classNanoseconds.html">Nanoseconds</a>(lKernelTime.QuadPart * 100);</div><div class="line"><a name="l00535"></a><span class="lineno">  535</span>&#160;  <a class="code" href="classTry.html">Try&lt;Duration&gt;</a> stime = <a class="code" href="c
 lassNanoseconds.html">Nanoseconds</a>(lUserTime.QuadPart * 100);</div><div class="line"><a name="l00536"></a><span class="lineno">  536</span>&#160;</div><div class="line"><a name="l00537"></a><span class="lineno">  537</span>&#160;  <span class="keywordflow">return</span> <a class="code" href="structos_1_1Process.html">Process</a>(</div><div class="line"><a name="l00538"></a><span class="lineno">  538</span>&#160;      pid,</div><div class="line"><a name="l00539"></a><span class="lineno">  539</span>&#160;      entry.<a class="code" href="classResult.html#aedf79f3b14dcda5791b84a64ada4d412">get</a>().th32ParentProcessID,         <span class="comment">// Parent process id.</span></div><div class="line"><a name="l00540"></a><span class="lineno">  540</span>&#160;      0,                                       <span class="comment">// Group id.</span></div><div class="line"><a name="l00541"></a><span class="lineno">  541</span>&#160;      session_id,</div><div class="line"><a name="l005
 42"></a><span class="lineno">  542</span>&#160;      <a class="code" href="classBytes.html">Bytes</a>(proc_mem_counters.WorkingSetSize),</div><div class="line"><a name="l00543"></a><span class="lineno">  543</span>&#160;      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&lt;Duration&gt;::none</a>(),</div><div class="line"><a name="l00544"></a><span class="lineno">  544</span>&#160;      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&lt;Duration&gt;::none</a>(),</div><div class="line"><a name="l00545"></a><span class="lineno">  545</span>&#160;      <a class="c
 ode" href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(entry.<a class="code" href="classResult.html#aedf79f3b14dcda5791b84a64ada4d412">get</a>().szExeFile),        <span class="comment">// Executable filename.</span></div><div class="line"><a name="l00546"></a><span class="lineno">  546</span>&#160;      <span class="keyword">false</span>);                                  <span class="comment">// Is not zombie process.</span></div><div class="line"><a name="l00547"></a><span class="lineno">  547</span>&#160;}</div><div class="line"><a name="l00548"></a><span class="lineno">  548</span>&#160;</div><div class="line"><a name="l00549"></a><span class="lineno">  549</span>&#160;</div><div class="line"><a name="l00550"></a><span class="lineno"><a class="line" href="namespaceos.html#aede9f61dcb4b7d1f276302a7bce37446">  550</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">int</span> <a class="code" href="namespaceos.html#aede9f61dcb4b7d1f2
 76302a7bce37446">random</a>()</div><div class="line"><a name="l00551"></a><span class="lineno">  551</span>&#160;{</div><div class="line"><a name="l00552"></a><span class="lineno">  552</span>&#160;

<TRUNCATED>

[42/50] mesos-site git commit: Updated the website built from mesos SHA: 7c9c72d.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/classos_1_1WindowsFD-members.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/classos_1_1WindowsFD-members.html b/content/api/latest/c++/classos_1_1WindowsFD-members.html
index aec81ca..7f0a1b4 100644
--- a/content/api/latest/c++/classos_1_1WindowsFD-members.html
+++ b/content/api/latest/c++/classos_1_1WindowsFD-members.html
@@ -57,38 +57,41 @@
 
 <p>This is the complete list of members for <a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a>, including all inherited members.</p>
 <table class="directory">
-  <tr class="even"><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#a94b69cae4edb8f3549845fbfa0355b7c">crt</a>() const </td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#afcf316b6f5178ce1b9002c4202aebcf6">handle_</a></td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#a4dce5dbc3d019589b4b61d6d17e1da45">is_overlapped</a>() const </td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#ab961444eec07c587c9a67122daf4fd33">is_valid</a>() const </td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#a8ba56c5251264ab13aeaaa34cde39bdb">operator HANDLE</a>() const </td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#aa58f87561c2785c34ae7f34ce59abfe2">operator intptr_t</a>() const </td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#a0826bf646e11186502039fcf869b2afc">operator SOCKET</a>() const </td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#a342803d2a16f81ca20f0e0c1c2e598d0">operator!=</a>(int left, const WindowsFD &amp;right)</td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#ab72f13c82b5f2fb8a646c5d0d50736e7">operator!=</a>(const WindowsFD &amp;left, int right)</td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#a64a9d1d43e26808ec565056c183ae56f">operator&lt;</a>(int left, const WindowsFD &amp;right)</td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#a74d759a0ba3830e9c80196853846f33b">operator&lt;</a>(const WindowsFD &amp;left, int right)</td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#afd05a43697b99aa8b7da8d56155b1a49">operator&lt;=</a>(int left, const WindowsFD &amp;right)</td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#abdc31b1c170a2c34afa8e3b6e4b062e4">operator&lt;=</a>(const WindowsFD &amp;left, int right)</td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#ab780d87119c772425aa855260056d1a1">operator=</a>(const WindowsFD &amp;)=default</td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#a057780cfa5e1cc2fa84543a6f9b6bca0">operator=</a>(WindowsFD &amp;&amp;)=default</td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#a833e23bea1f10420bbd7139d1e8539ad">operator==</a>(int left, const WindowsFD &amp;right)</td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#ac9877f8cf4ddc33a161663fd2ab1355d">operator==</a>(const WindowsFD &amp;left, int right)</td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#aabdbd9806af44043dfff1cf9aeeee869">operator&gt;</a>(int left, const WindowsFD &amp;right)</td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#a776aca0bca92649b15733ecb53bd9371">operator&gt;</a>(const WindowsFD &amp;left, int right)</td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#a23d70e92fe2ee8da692f4e9b1b9e1e43">operator&gt;=</a>(int left, const WindowsFD &amp;right)</td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#a9aa231ba576db9e75b5589a85df6460f">operator&gt;=</a>(const WindowsFD &amp;left, int right)</td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#a05016bee9531c79ce4576c9b8d9c9922">socket_</a></td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5">Type</a> enum name</td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#a3ce17a730ace5352a1fc6d49f8336d52">type</a>() const </td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#a421497a56ee02f01dd4f0773d07eaa76">WindowsFD</a>(HANDLE handle, bool overlapped=false)</td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">explicit</span></td></tr>
-  <tr><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#a33cd936b5641a029b1ea2da80d71c748">WindowsFD</a>(SOCKET socket, bool overlapped=true)</td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">explicit</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#a43994eeb484a426990af657f691f66e0">WindowsFD</a>(intptr_t socket)</td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">explicit</span></td></tr>
-  <tr><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#a278285643f263655c5f64f45451fc6e6">WindowsFD</a>(int crt)</td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#a68733e16ee25fe8602557e6e9f534bc9">WindowsFD</a>()</td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#a3436f11ccbb859379717ac91e96f7144">WindowsFD</a>(const WindowsFD &amp;)=default</td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#a79c98e3c78c0a7155a8ed9f42832fd5d">WindowsFD</a>(WindowsFD &amp;&amp;)=default</td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#ad2ce21d9f77710472e19843e3e86343e">~WindowsFD</a>()=default</td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#a1a9c96c20213e1b94ba8dcc1bb059163">assign_iocp</a>(HANDLE target, ULONG_PTR key) const </td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#a94b69cae4edb8f3549845fbfa0355b7c">crt</a>() const </td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#ae8d4fd38b52ea9f38605f46195fd040b">dup</a>(const WindowsFD &amp;fd)</td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#a380eb8d9b7bc0e6b3bfae0e8e9c6bb0f">get_iocp</a>() const </td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#afcf316b6f5178ce1b9002c4202aebcf6">handle_</a></td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#a4dce5dbc3d019589b4b61d6d17e1da45">is_overlapped</a>() const </td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#ab961444eec07c587c9a67122daf4fd33">is_valid</a>() const </td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#a8ba56c5251264ab13aeaaa34cde39bdb">operator HANDLE</a>() const </td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#aa58f87561c2785c34ae7f34ce59abfe2">operator intptr_t</a>() const </td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#a0826bf646e11186502039fcf869b2afc">operator SOCKET</a>() const </td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#a342803d2a16f81ca20f0e0c1c2e598d0">operator!=</a>(int left, const WindowsFD &amp;right)</td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#ab72f13c82b5f2fb8a646c5d0d50736e7">operator!=</a>(const WindowsFD &amp;left, int right)</td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#a64a9d1d43e26808ec565056c183ae56f">operator&lt;</a>(int left, const WindowsFD &amp;right)</td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#a74d759a0ba3830e9c80196853846f33b">operator&lt;</a>(const WindowsFD &amp;left, int right)</td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#afd05a43697b99aa8b7da8d56155b1a49">operator&lt;=</a>(int left, const WindowsFD &amp;right)</td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#abdc31b1c170a2c34afa8e3b6e4b062e4">operator&lt;=</a>(const WindowsFD &amp;left, int right)</td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#ab780d87119c772425aa855260056d1a1">operator=</a>(const WindowsFD &amp;)=default</td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#a057780cfa5e1cc2fa84543a6f9b6bca0">operator=</a>(WindowsFD &amp;&amp;)=default</td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#a833e23bea1f10420bbd7139d1e8539ad">operator==</a>(int left, const WindowsFD &amp;right)</td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#ac9877f8cf4ddc33a161663fd2ab1355d">operator==</a>(const WindowsFD &amp;left, int right)</td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#aabdbd9806af44043dfff1cf9aeeee869">operator&gt;</a>(int left, const WindowsFD &amp;right)</td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#a776aca0bca92649b15733ecb53bd9371">operator&gt;</a>(const WindowsFD &amp;left, int right)</td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#a23d70e92fe2ee8da692f4e9b1b9e1e43">operator&gt;=</a>(int left, const WindowsFD &amp;right)</td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#a9aa231ba576db9e75b5589a85df6460f">operator&gt;=</a>(const WindowsFD &amp;left, int right)</td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#a05016bee9531c79ce4576c9b8d9c9922">socket_</a></td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5">Type</a> enum name</td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#a3ce17a730ace5352a1fc6d49f8336d52">type</a>() const </td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#a421497a56ee02f01dd4f0773d07eaa76">WindowsFD</a>(HANDLE handle, bool overlapped=false)</td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">explicit</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#a33cd936b5641a029b1ea2da80d71c748">WindowsFD</a>(SOCKET socket, bool overlapped=true)</td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">explicit</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#a43994eeb484a426990af657f691f66e0">WindowsFD</a>(intptr_t socket)</td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">explicit</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#a278285643f263655c5f64f45451fc6e6">WindowsFD</a>(int crt)</td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#a68733e16ee25fe8602557e6e9f534bc9">WindowsFD</a>()</td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#a3436f11ccbb859379717ac91e96f7144">WindowsFD</a>(const WindowsFD &amp;)=default</td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#a79c98e3c78c0a7155a8ed9f42832fd5d">WindowsFD</a>(WindowsFD &amp;&amp;)=default</td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classos_1_1WindowsFD.html#ad2ce21d9f77710472e19843e3e86343e">~WindowsFD</a>()=default</td><td class="entry"><a class="el" href="classos_1_1WindowsFD.html">os::WindowsFD</a></td><td class="entry"></td></tr>
 </table></div><!-- contents -->
 <!-- start footer part -->
 <hr class="footer"/><address class="footer"><small>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/classos_1_1WindowsFD.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/classos_1_1WindowsFD.html b/content/api/latest/c++/classos_1_1WindowsFD.html
index 5ae009a..34b6448 100644
--- a/content/api/latest/c++/classos_1_1WindowsFD.html
+++ b/content/api/latest/c++/classos_1_1WindowsFD.html
@@ -51,6 +51,7 @@
 </div><!-- top -->
 <div class="header">
   <div class="summary">
+<a href="#nested-classes">Classes</a> &#124;
 <a href="#pub-types">Public Types</a> &#124;
 <a href="#pub-methods">Public Member Functions</a> &#124;
 <a href="#friends">Friends</a> &#124;
@@ -105,6 +106,10 @@ Public Member Functions</h2></td></tr>
 <tr class="separator:a3ce17a730ace5352a1fc6d49f8336d52"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a4dce5dbc3d019589b4b61d6d17e1da45"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classos_1_1WindowsFD.html#a4dce5dbc3d019589b4b61d6d17e1da45">is_overlapped</a> () const </td></tr>
 <tr class="separator:a4dce5dbc3d019589b4b61d6d17e1da45"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1a9c96c20213e1b94ba8dcc1bb059163"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classTry.html">Try</a>&lt; HANDLE &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classos_1_1WindowsFD.html#a1a9c96c20213e1b94ba8dcc1bb059163">assign_iocp</a> (HANDLE target, ULONG_PTR key) const </td></tr>
+<tr class="separator:a1a9c96c20213e1b94ba8dcc1bb059163"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a380eb8d9b7bc0e6b3bfae0e8e9c6bb0f"><td class="memItemLeft" align="right" valign="top">HANDLE&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classos_1_1WindowsFD.html#a380eb8d9b7bc0e6b3bfae0e8e9c6bb0f">get_iocp</a> () const </td></tr>
+<tr class="separator:a380eb8d9b7bc0e6b3bfae0e8e9c6bb0f"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
 Friends</h2></td></tr>
@@ -132,6 +137,8 @@ Friends</h2></td></tr>
 <tr class="separator:a342803d2a16f81ca20f0e0c1c2e598d0"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:ab72f13c82b5f2fb8a646c5d0d50736e7"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classos_1_1WindowsFD.html#ab72f13c82b5f2fb8a646c5d0d50736e7">operator!=</a> (const <a class="el" href="classos_1_1WindowsFD.html">WindowsFD</a> &amp;left, int right)</td></tr>
 <tr class="separator:ab72f13c82b5f2fb8a646c5d0d50736e7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae8d4fd38b52ea9f38605f46195fd040b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classTry.html">Try</a>&lt; <a class="el" href="classos_1_1WindowsFD.html">WindowsFD</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classos_1_1WindowsFD.html#ae8d4fd38b52ea9f38605f46195fd040b">dup</a> (const <a class="el" href="classos_1_1WindowsFD.html">WindowsFD</a> &amp;fd)</td></tr>
+<tr class="separator:ae8d4fd38b52ea9f38605f46195fd040b"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>
 <h2 class="groupheader">Member Enumeration Documentation</h2>
 <a class="anchor" id="ac0377db41e1c167339c97dbd69c79ae5"></a>
@@ -372,6 +379,40 @@ Friends</h2></td></tr>
 </div>
 </div>
 <h2 class="groupheader">Member Function Documentation</h2>
+<a class="anchor" id="a1a9c96c20213e1b94ba8dcc1bb059163"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="classTry.html">Try</a>&lt;HANDLE&gt; os::WindowsFD::assign_iocp </td>
+          <td>(</td>
+          <td class="paramtype">HANDLE&#160;</td>
+          <td class="paramname"><em>target</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">ULONG_PTR&#160;</td>
+          <td class="paramname"><em>key</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td> const</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>
 <a class="anchor" id="a94b69cae4edb8f3549845fbfa0355b7c"></a>
 <div class="memitem">
 <div class="memproto">
@@ -395,6 +436,29 @@ Friends</h2></td></tr>
 
 </div>
 </div>
+<a class="anchor" id="a380eb8d9b7bc0e6b3bfae0e8e9c6bb0f"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">HANDLE os::WindowsFD::get_iocp </td>
+          <td>(</td>
+          <td class="paramname"></td><td>)</td>
+          <td> const</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>
 <a class="anchor" id="a4dce5dbc3d019589b4b61d6d17e1da45"></a>
 <div class="memitem">
 <div class="memproto">
@@ -582,6 +646,30 @@ Friends</h2></td></tr>
 </div>
 </div>
 <h2 class="groupheader">Friends And Related Function Documentation</h2>
+<a class="anchor" id="ae8d4fd38b52ea9f38605f46195fd040b"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="classTry.html">Try</a>&lt;<a class="el" href="classos_1_1WindowsFD.html">WindowsFD</a>&gt; dup </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" href="classos_1_1WindowsFD.html">WindowsFD</a> &amp;&#160;</td>
+          <td class="paramname"><em>fd</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">friend</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
 <a class="anchor" id="a342803d2a16f81ca20f0e0c1c2e598d0"></a>
 <div class="memitem">
 <div class="memproto">

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/classprocess_1_1Subprocess.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/classprocess_1_1Subprocess.html b/content/api/latest/c++/classprocess_1_1Subprocess.html
index 750e925..dfd31f3 100644
--- a/content/api/latest/c++/classprocess_1_1Subprocess.html
+++ b/content/api/latest/c++/classprocess_1_1Subprocess.html
@@ -64,7 +64,7 @@
 <p>Represents a fork() exec()ed subprocess.  
  <a href="classprocess_1_1Subprocess.html#details">More...</a></p>
 
-<p><code>#include &lt;<a class="el" href="subprocess_8hpp_source.html">subprocess.hpp</a>&gt;</code></p>
+<p><code>#include &lt;<a class="el" href="include_2process_2subprocess_8hpp_source.html">subprocess.hpp</a>&gt;</code></p>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
 Classes</h2></td></tr>
@@ -410,7 +410,7 @@ Friends</h2></td></tr>
 </div>
 </div>
 <hr/>The documentation for this class was generated from the following file:<ul>
-<li>3rdparty/libprocess/include/process/<a class="el" href="subprocess_8hpp_source.html">subprocess.hpp</a></li>
+<li>3rdparty/libprocess/include/process/<a class="el" href="include_2process_2subprocess_8hpp_source.html">subprocess.hpp</a></li>
 </ul>
 </div><!-- contents -->
 <!-- start footer part -->

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/classprocess_1_1Subprocess_1_1ChildHook.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/classprocess_1_1Subprocess_1_1ChildHook.html b/content/api/latest/c++/classprocess_1_1Subprocess_1_1ChildHook.html
index 950d787..65d4aad 100644
--- a/content/api/latest/c++/classprocess_1_1Subprocess_1_1ChildHook.html
+++ b/content/api/latest/c++/classprocess_1_1Subprocess_1_1ChildHook.html
@@ -62,7 +62,7 @@
 <p>A <code><a class="el" href="classprocess_1_1Subprocess_1_1ChildHook.html" title="A ChildHook can be passed to a subprocess call. ">ChildHook</a></code> can be passed to a <code>subprocess</code> call.  
  <a href="classprocess_1_1Subprocess_1_1ChildHook.html#details">More...</a></p>
 
-<p><code>#include &lt;<a class="el" href="subprocess_8hpp_source.html">subprocess.hpp</a>&gt;</code></p>
+<p><code>#include &lt;<a class="el" href="include_2process_2subprocess_8hpp_source.html">subprocess.hpp</a>&gt;</code></p>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
@@ -255,7 +255,7 @@ Static Public Member Functions</h2></td></tr>
 </div>
 </div>
 <hr/>The documentation for this class was generated from the following file:<ul>
-<li>3rdparty/libprocess/include/process/<a class="el" href="subprocess_8hpp_source.html">subprocess.hpp</a></li>
+<li>3rdparty/libprocess/include/process/<a class="el" href="include_2process_2subprocess_8hpp_source.html">subprocess.hpp</a></li>
 </ul>
 </div><!-- contents -->
 <!-- start footer part -->

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/classprocess_1_1Subprocess_1_1IO.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/classprocess_1_1Subprocess_1_1IO.html b/content/api/latest/c++/classprocess_1_1Subprocess_1_1IO.html
index 6cf176d..f89bfb9 100644
--- a/content/api/latest/c++/classprocess_1_1Subprocess_1_1IO.html
+++ b/content/api/latest/c++/classprocess_1_1Subprocess_1_1IO.html
@@ -63,7 +63,7 @@
 <p>Describes how the I/O is redirected for stdin/stdout/stderr.  
  <a href="classprocess_1_1Subprocess_1_1IO.html#details">More...</a></p>
 
-<p><code>#include &lt;<a class="el" href="subprocess_8hpp_source.html">subprocess.hpp</a>&gt;</code></p>
+<p><code>#include &lt;<a class="el" href="include_2process_2subprocess_8hpp_source.html">subprocess.hpp</a>&gt;</code></p>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
 Classes</h2></td></tr>
@@ -231,7 +231,7 @@ Friends</h2></td></tr>
 </div>
 </div>
 <hr/>The documentation for this class was generated from the following file:<ul>
-<li>3rdparty/libprocess/include/process/<a class="el" href="subprocess_8hpp_source.html">subprocess.hpp</a></li>
+<li>3rdparty/libprocess/include/process/<a class="el" href="include_2process_2subprocess_8hpp_source.html">subprocess.hpp</a></li>
 </ul>
 </div><!-- contents -->
 <!-- start footer part -->

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/classprocess_1_1network_1_1internal_1_1LibeventSSLSocketImpl.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/classprocess_1_1network_1_1internal_1_1LibeventSSLSocketImpl.html b/content/api/latest/c++/classprocess_1_1network_1_1internal_1_1LibeventSSLSocketImpl.html
index 1d0affb..70d4d27 100644
--- a/content/api/latest/c++/classprocess_1_1network_1_1internal_1_1LibeventSSLSocketImpl.html
+++ b/content/api/latest/c++/classprocess_1_1network_1_1internal_1_1LibeventSSLSocketImpl.html
@@ -486,7 +486,7 @@ Additional Inherited Members</h2></td></tr>
 </div>
 </div>
 <hr/>The documentation for this class was generated from the following file:<ul>
-<li>3rdparty/libprocess/src/<a class="el" href="libevent__ssl__socket_8hpp_source.html">libevent_ssl_socket.hpp</a></li>
+<li>3rdparty/libprocess/src/posix/libevent/<a class="el" href="libevent__ssl__socket_8hpp_source.html">libevent_ssl_socket.hpp</a></li>
 </ul>
 </div><!-- contents -->
 <!-- start footer part -->

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/classprocess_1_1windows_1_1EventLoop-members.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/classprocess_1_1windows_1_1EventLoop-members.html b/content/api/latest/c++/classprocess_1_1windows_1_1EventLoop-members.html
new file mode 100644
index 0000000..1c267f8
--- /dev/null
+++ b/content/api/latest/c++/classprocess_1_1windows_1_1EventLoop-members.html
@@ -0,0 +1,73 @@
+<!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: Member List</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&#160;Page</span></a></li>
+      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li class="current"><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="annotated.html"><span>Class&#160;List</span></a></li>
+      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
+      <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
+    </ul>
+  </div>
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="namespaceprocess.html">process</a></li><li class="navelem"><a class="el" href="namespaceprocess_1_1windows.html">windows</a></li><li class="navelem"><a class="el" href="classprocess_1_1windows_1_1EventLoop.html">EventLoop</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">process::windows::EventLoop Member List</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="classprocess_1_1windows_1_1EventLoop.html">process::windows::EventLoop</a>, including all inherited members.</p>
+<table class="directory">
+  <tr class="even"><td class="entry"><a class="el" href="classprocess_1_1windows_1_1EventLoop.html#a3bd3da5d721cf2c4db9c5551bdccc3a4">create</a>()</td><td class="entry"><a class="el" href="classprocess_1_1windows_1_1EventLoop.html">process::windows::EventLoop</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classprocess_1_1windows_1_1EventLoop.html#a006cb0c8efb7aaadadf0a692d9c2659a">launchTimer</a>(const Duration &amp;duration, const lambda::function&lt; void()&gt; &amp;callback)</td><td class="entry"><a class="el" href="classprocess_1_1windows_1_1EventLoop.html">process::windows::EventLoop</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classprocess_1_1windows_1_1EventLoop.html#a832a73998bb3b26b7caa770ceef38827">registerHandle</a>(const int_fd &amp;fd)</td><td class="entry"><a class="el" href="classprocess_1_1windows_1_1EventLoop.html">process::windows::EventLoop</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="classprocess_1_1windows_1_1EventLoop.html#a2578b5fad0eb039f995955c798310c86">run</a>()</td><td class="entry"><a class="el" href="classprocess_1_1windows_1_1EventLoop.html">process::windows::EventLoop</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classprocess_1_1windows_1_1EventLoop.html#a8a07fc602e31875e6cbcaeac8008f09a">stop</a>()</td><td class="entry"><a class="el" href="classprocess_1_1windows_1_1EventLoop.html">process::windows::EventLoop</a></td><td class="entry"></td></tr>
+</table></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.11
+</small></address>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/classprocess_1_1windows_1_1EventLoop.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/classprocess_1_1windows_1_1EventLoop.html b/content/api/latest/c++/classprocess_1_1windows_1_1EventLoop.html
new file mode 100644
index 0000000..04d1d9d
--- /dev/null
+++ b/content/api/latest/c++/classprocess_1_1windows_1_1EventLoop.html
@@ -0,0 +1,188 @@
+<!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: process::windows::EventLoop Class 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&#160;Page</span></a></li>
+      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li class="current"><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="annotated.html"><span>Class&#160;List</span></a></li>
+      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
+      <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
+    </ul>
+  </div>
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="namespaceprocess.html">process</a></li><li class="navelem"><a class="el" href="namespaceprocess_1_1windows.html">windows</a></li><li class="navelem"><a class="el" href="classprocess_1_1windows_1_1EventLoop.html">EventLoop</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="summary">
+<a href="#nested-classes">Classes</a> &#124;
+<a href="#pub-methods">Public Member Functions</a> &#124;
+<a href="#pub-static-methods">Static Public Member Functions</a> &#124;
+<a href="classprocess_1_1windows_1_1EventLoop-members.html">List of all members</a>  </div>
+  <div class="headertitle">
+<div class="title">process::windows::EventLoop Class Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p><code>#include &lt;<a class="el" href="libwinio_8hpp_source.html">libwinio.hpp</a>&gt;</code></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:a2578b5fad0eb039f995955c798310c86"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classTry.html">Try</a>&lt; <a class="el" href="structNothing.html">Nothing</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classprocess_1_1windows_1_1EventLoop.html#a2578b5fad0eb039f995955c798310c86">run</a> ()</td></tr>
+<tr class="separator:a2578b5fad0eb039f995955c798310c86"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a8a07fc602e31875e6cbcaeac8008f09a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classTry.html">Try</a>&lt; <a class="el" href="structNothing.html">Nothing</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classprocess_1_1windows_1_1EventLoop.html#a8a07fc602e31875e6cbcaeac8008f09a">stop</a> ()</td></tr>
+<tr class="separator:a8a07fc602e31875e6cbcaeac8008f09a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a006cb0c8efb7aaadadf0a692d9c2659a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classTry.html">Try</a>&lt; <a class="el" href="structNothing.html">Nothing</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classprocess_1_1windows_1_1EventLoop.html#a006cb0c8efb7aaadadf0a692d9c2659a">launchTimer</a> (const <a class="el" href="classDuration.html">Duration</a> &amp;duration, const lambda::function&lt; void()&gt; &amp;callback)</td></tr>
+<tr class="separator:a006cb0c8efb7aaadadf0a692d9c2659a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a832a73998bb3b26b7caa770ceef38827"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classTry.html">Try</a>&lt; <a class="el" href="structNothing.html">Nothing</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classprocess_1_1windows_1_1EventLoop.html#a832a73998bb3b26b7caa770ceef38827">registerHandle</a> (const <a class="el" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> &amp;fd)</td></tr>
+<tr class="separator:a832a73998bb3b26b7caa770ceef38827"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
+Static Public Member Functions</h2></td></tr>
+<tr class="memitem:a3bd3da5d721cf2c4db9c5551bdccc3a4"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classTry.html">Try</a>&lt; <a class="el" href="classprocess_1_1windows_1_1EventLoop.html">EventLoop</a> * &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classprocess_1_1windows_1_1EventLoop.html#a3bd3da5d721cf2c4db9c5551bdccc3a4">create</a> ()</td></tr>
+<tr class="separator:a3bd3da5d721cf2c4db9c5551bdccc3a4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Member Function Documentation</h2>
+<a class="anchor" id="a3bd3da5d721cf2c4db9c5551bdccc3a4"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">static <a class="el" href="classTry.html">Try</a>&lt;<a class="el" href="classprocess_1_1windows_1_1EventLoop.html">EventLoop</a>*&gt; process::windows::EventLoop::create </td>
+          <td>(</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">static</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a006cb0c8efb7aaadadf0a692d9c2659a"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="classTry.html">Try</a>&lt;<a class="el" href="structNothing.html">Nothing</a>&gt; process::windows::EventLoop::launchTimer </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" href="classDuration.html">Duration</a> &amp;&#160;</td>
+          <td class="paramname"><em>duration</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const lambda::function&lt; void()&gt; &amp;&#160;</td>
+          <td class="paramname"><em>callback</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a832a73998bb3b26b7caa770ceef38827"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="classTry.html">Try</a>&lt;<a class="el" href="structNothing.html">Nothing</a>&gt; process::windows::EventLoop::registerHandle </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> &amp;&#160;</td>
+          <td class="paramname"><em>fd</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a2578b5fad0eb039f995955c798310c86"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="classTry.html">Try</a>&lt;<a class="el" href="structNothing.html">Nothing</a>&gt; process::windows::EventLoop::run </td>
+          <td>(</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a8a07fc602e31875e6cbcaeac8008f09a"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="classTry.html">Try</a>&lt;<a class="el" href="structNothing.html">Nothing</a>&gt; process::windows::EventLoop::stop </td>
+          <td>(</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li>3rdparty/libprocess/src/windows/<a class="el" href="libwinio_8hpp_source.html">libwinio.hpp</a></li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.11
+</small></address>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/cni_8hpp.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/cni_8hpp.html b/content/api/latest/c++/cni_8hpp.html
index 07d678d..32d4b1e 100644
--- a/content/api/latest/c++/cni_8hpp.html
+++ b/content/api/latest/c++/cni_8hpp.html
@@ -56,7 +56,7 @@
 </div><!--header-->
 <div class="contents">
 <div class="textblock"><code>#include &lt;<a class="el" href="id_8hpp_source.html">process/id.hpp</a>&gt;</code><br />
-<code>#include &lt;<a class="el" href="subprocess_8hpp_source.html">process/subprocess.hpp</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="include_2process_2subprocess_8hpp_source.html">process/subprocess.hpp</a>&gt;</code><br />
 <code>#include &lt;<a class="el" href="subcommand_8hpp_source.html">stout/subcommand.hpp</a>&gt;</code><br />
 <code>#include &quot;<a class="el" href="src_2slave_2flags_8hpp_source.html">slave/flags.hpp</a>&quot;</code><br />
 <code>#include &quot;<a class="el" href="src_2slave_2containerizer_2mesos_2isolator_8hpp_source.html">slave/containerizer/mesos/isolator.hpp</a>&quot;</code><br />


[17/50] mesos-site git commit: Updated the website built from mesos SHA: 7c9c72d.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/src_2log_2network_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/src_2log_2network_8hpp_source.html b/content/api/latest/c++/src_2log_2network_8hpp_source.html
index a9eee0a..a28ba83 100644
--- a/content/api/latest/c++/src_2log_2network_8hpp_source.html
+++ b/content/api/latest/c++/src_2log_2network_8hpp_source.html
@@ -52,7 +52,7 @@
 <div class="title">network.hpp</div>  </div>
 </div><!--header-->
 <div class="contents">
-<a href="src_2log_2network_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>&#160;<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>&#160;<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>&#160;<span class="comment">// distributed with this work for additional information</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<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>&#160;<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>&#160;<span class="comment">// &quot;License&quot;); you may not use this file except in compliance</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<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>&#160;<span class="comment">//
  distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<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>&#160;<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>&#160;<span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;</div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="preprocessor">#ifndef __NETWORK_HPP__</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="preprocessor">#define __NETWORK_HPP__</span></div><div class="line"><a name
 ="l00019"></a><span class="lineno">   19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="comment">// TODO(benh): Eventually move and associate this code with the</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="comment">// libprocess protobuf code rather than keep it here.</span></div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="preprocessor">#include &lt;deque&gt;</span></div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="preprocessor">#include &lt;set&gt;</span></div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span></div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<span class="pr
 eprocessor">#include &lt;vector&gt;</span></div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;</div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="group_8hpp.html">mesos/zookeeper/group.hpp</a>&gt;</span></div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;</div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="collect_8hpp.html">process/collect.hpp</a>&gt;</span></div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="3rdparty_2libprocess_2include_2process_2executor_8hpp.html">process/executor.hpp</a>&gt;</span></div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href
 ="id_8hpp.html">process/id.hpp</a>&gt;</span></div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="3rdparty_2libprocess_2include_2process_2protobuf_8hpp.html">process/protobuf.hpp</a>&gt;</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>&#160;<span class="preprocessor">#include &lt;<a class="code" href="duration_8hpp.html">stout/duration.hpp</a>&gt;</span></div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="foreach_8hpp.html">stout/foreach.hpp</a>&gt;</span></div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="lambda_8hpp.html">stout/lambda.hpp</a>&gt;</span></div><div class="line"><a name="l00
 038"></a><span class="lineno">   38</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="nothing_8hpp.html">stout/nothing.hpp</a>&gt;</span></div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="set_8hpp.html">stout/set.hpp</a>&gt;</span></div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="unreachable_8hpp.html">stout/unreachable.hpp</a>&gt;</span></div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;</div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="src_2logging_2logging_8hpp.html">logging/logging.hpp</a>&quot;</span></div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;</div><div class="line"><a name="l00044"></a><span class=
 "lineno">   44</span>&#160;<span class="comment">// Forward declaration.</span></div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;<span class="keyword">class </span><a class="code" href="classNetworkProcess.html">NetworkProcess</a>;</div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;</div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;<span class="comment">// A &quot;network&quot; is a collection of protobuf processes (may be local</span></div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;<span class="comment">// and/or remote). A network abstracts away the details of maintaining</span></div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;<span class="comment">// which processes are waiting to receive messages and requests in the</span></div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;<span cla
 ss="comment">// presence of failures and dynamic reconfiguration.</span></div><div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="classNetwork.html">   51</a></span>&#160;<span class="keyword">class </span><a class="code" href="classNetwork.html">Network</a></div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;{</div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="classNetwork.html#a43d645248055c352b6550c586dfdf46b">   54</a></span>&#160;  <span class="keyword">enum</span> <a class="code" href="classNetwork.html#a43d645248055c352b6550c586dfdf46b">WatchMode</a></div><div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;  {</div><div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="classNetwork.html#a43d645248055c352b6550c5
 86dfdf46ba7f1c8f1a0171b0e809d6c2e69490671a">   56</a></span>&#160;    <a class="code" href="classNetwork.html#a43d645248055c352b6550c586dfdf46ba7f1c8f1a0171b0e809d6c2e69490671a">EQUAL_TO</a>,</div><div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="classNetwork.html#a43d645248055c352b6550c586dfdf46ba35573a903c78a976ee1becfd4c41b64a">   57</a></span>&#160;    <a class="code" href="classNetwork.html#a43d645248055c352b6550c586dfdf46ba35573a903c78a976ee1becfd4c41b64a">NOT_EQUAL_TO</a>,</div><div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="classNetwork.html#a43d645248055c352b6550c586dfdf46ba83a711502205ef7ec107abfd72c969bf">   58</a></span>&#160;    <a class="code" href="classNetwork.html#a43d645248055c352b6550c586dfdf46ba83a711502205ef7ec107abfd72c969bf">LESS_THAN</a>,</div><div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="classNetwork.html#a43d645248055c352b6550c586dfdf46bae3f845f5bd93ed6d177
 e85214c15f5b1">   59</a></span>&#160;    <a class="code" href="classNetwork.html#a43d645248055c352b6550c586dfdf46bae3f845f5bd93ed6d177e85214c15f5b1">LESS_THAN_OR_EQUAL_TO</a>,</div><div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="classNetwork.html#a43d645248055c352b6550c586dfdf46ba5720bf2cef2135857ad15209169bbd8c">   60</a></span>&#160;    <a class="code" href="classNetwork.html#a43d645248055c352b6550c586dfdf46ba5720bf2cef2135857ad15209169bbd8c">GREATER_THAN</a>,</div><div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="classNetwork.html#a43d645248055c352b6550c586dfdf46ba478ef22cc32892ffd21294e285b93e31">   61</a></span>&#160;    <a class="code" href="classNetwork.html#a43d645248055c352b6550c586dfdf46ba478ef22cc32892ffd21294e285b93e31">GREATER_THAN_OR_EQUAL_TO</a></div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;  };</div><div class="line"><a name="l00063"></a><span class="lineno">   63</
 span>&#160;</div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;  <a class="code" href="classNetwork.html#a3cc2fb4f8fa4d507077e8da85ce5a1c8">Network</a>();</div><div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;  <span class="keyword">explicit</span> <a class="code" href="classNetwork.html#a3cc2fb4f8fa4d507077e8da85ce5a1c8">Network</a>(<span class="keyword">const</span> std::set&lt;process::UPID&gt;&amp; <a class="code" href="namespaceos.html#a42af1cab63434cedf2b698cd6f49f073">pids</a>);</div><div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;  <span class="keyword">virtual</span> <a class="code" href="classNetwork.html#a7a4e19cdb4bf0c7ecf82baa643831492">~Network</a>();</div><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;</div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;  <span class="comment">// Adds a PID to this network.</span></di
 v><div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;  <span class="keywordtype">void</span> <a class="code" href="classNetwork.html#ae3f5928f9e83376daebfac35c789ae5e">add</a>(<span class="keyword">const</span> <a class="code" href="structprocess_1_1UPID.html">process::UPID</a>&amp; pid);</div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;</div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;  <span class="comment">// Removes a PID from this network.</span></div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;  <span class="keywordtype">void</span> <span class="keyword">remove</span>(<span class="keyword">const</span> <a class="code" href="structprocess_1_1UPID.html">process::UPID</a>&amp; pid);</div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;</div><div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;  <spa
 n class="comment">// Set the PIDs that are part of this network.</span></div><div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;  <span class="keywordtype">void</span> <span class="keyword">set</span>(<span class="keyword">const</span> std::set&lt;process::UPID&gt;&amp; <a class="code" href="namespaceos.html#a42af1cab63434cedf2b698cd6f49f073">pids</a>);</div><div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;</div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;  <span class="comment">// Returns a future which gets set when the network size satisfies</span></div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;  <span class="comment">// the constraint specified by &#39;size&#39; and &#39;mode&#39;. For example, if</span></div><div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;  <span class="comment">// &#39;size&#39; is 2 and &#39;mode&#39; is G
 REATER_THAN, then the returned future</span></div><div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;  <span class="comment">// will get set when the size of the network is greater than 2.</span></div><div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;  <a class="code" href="classprocess_1_1Future.html">process::Future&lt;size_t&gt;</a> <a class="code" href="classNetwork.html#ac273d79a8be8f05411440757979dae5d">watch</a>(</div><div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;      <span class="keywordtype">size_t</span> <a class="code" href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">size</a>,</div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;      <a class="code" href="classNetwork.html#a43d645248055c352b6550c586dfdf46b">WatchMode</a> <a class="code" href="namespaceos_1_1stat.html#afc51654ad486693167c300612bf8ebfa">mode</a> = <a class="code" href="clas
 sNetwork.html#a43d645248055c352b6550c586dfdf46ba35573a903c78a976ee1becfd4c41b64a">NOT_EQUAL_TO</a>) <span class="keyword">const</span>;</div><div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;</div><div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;  <span class="comment">// Sends a request to each member of the network and returns a set</span></div><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;  <span class="comment">// of futures that represent their responses.</span></div><div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;  <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Req, <span class="keyword">typename</span> Res&gt;</div><div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;  <a class="code" href="classprocess_1_1Future.html">process::Future&lt;std::set&lt;process::Future&lt;Res&gt;</a>&gt;&gt; <a class="code
 " href="classNetwork.html#a31e8af8c885552d6cf1000ea846c62dc">broadcast</a>(</div><div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;      <span class="keyword">const</span> <a class="code" href="structProtocol.html">Protocol&lt;Req, Res&gt;</a>&amp; protocol,</div><div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;      <span class="keyword">const</span> Req&amp; req,</div><div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;      <span class="keyword">const</span> std::set&lt;process::UPID&gt;&amp; <a class="code" href="namespaceprocess.html#a3054d5443603436a6315f210a412cbbc">filter</a> = std::set&lt;process::UPID&gt;()) <span class="keyword">const</span>;</div><div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;</div><div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;  <span class="comment">// Sends a message to each member of the network. The returne
 d</span></div><div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;  <span class="comment">// future is set when the message is broadcasted.</span></div><div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;  <span class="keyword">template</span> &lt;<span class="keyword">typename</span> M&gt;</div><div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;  <a class="code" href="classprocess_1_1Future.html">process::Future&lt;Nothing&gt;</a> <a class="code" href="classNetwork.html#a31e8af8c885552d6cf1000ea846c62dc">broadcast</a>(</div><div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;      <span class="keyword">const</span> M&amp; m,</div><div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;      <span class="keyword">const</span> std::set&lt;process::UPID&gt;&amp; <a class="code" href="namespaceprocess.html#a3054d5443603436a6315f210a412cbbc">filter</a> = std::se
 t&lt;process::UPID&gt;()) <span class="keyword">const</span>;</div><div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;</div><div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;  <span class="comment">// Not copyable, not assignable.</span></div><div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;  <a class="code" href="classNetwork.html#a3cc2fb4f8fa4d507077e8da85ce5a1c8">Network</a>(<span class="keyword">const</span> <a class="code" href="classNetwork.html">Network</a>&amp;);</div><div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;  <a class="code" href="classNetwork.html">Network</a>&amp; operator=(<span class="keyword">const</span> <a class="code" href="classNetwork.html">Network</a>&amp;);</div><div class="line"><a name="l00104"></a><span class="lineno">  1
 04</span>&#160;</div><div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;  <a class="code" href="classNetworkProcess.html">NetworkProcess</a>* <a class="code" href="namespaceprocess.html">process</a>;</div><div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;};</div><div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;</div><div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;</div><div class="line"><a name="l00109"></a><span class="lineno"><a class="line" href="classZooKeeperNetwork.html">  109</a></span>&#160;<span class="keyword">class </span><a class="code" href="classZooKeeperNetwork.html">ZooKeeperNetwork</a> : <span class="keyword">public</span> <a class="code" href="classNetwork.html">Network</a></div><div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;{</div><div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;<span class="k
 eyword">public</span>:</div><div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;  <a class="code" href="classZooKeeperNetwork.html">ZooKeeperNetwork</a>(</div><div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;      <span class="keyword">const</span> std::string&amp; servers,</div><div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;      <span class="keyword">const</span> <a class="code" href="classDuration.html">Duration</a>&amp; timeout,</div><div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;      <span class="keyword">const</span> std::string&amp; znode,</div><div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;      <span class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;zookeeper::Authentication&gt;</a>&amp; auth,</div><div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;      <span class="keywo
 rd">const</span> std::set&lt;process::UPID&gt;&amp; <a class="code" href="namespaceprocess.html#a373bd5e2bd8f2694e4589293af477854">base</a> = std::set&lt;process::UPID&gt;());</div><div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;</div><div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;  <span class="keyword">typedef</span> <a class="code" href="classZooKeeperNetwork.html">ZooKeeperNetwork</a> <a class="code" href="classZooKeeperNetwork.html">This</a>;</div><div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;</div><div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;  <span class="comment">// Not copyable, not assignable.</span></div><div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;  <a class="code" href="classZooKeeperNetwork.htm
 l">ZooKeeperNetwork</a>(<span class="keyword">const</span> <a class="code" href="classZooKeeperNetwork.html">ZooKeeperNetwork</a>&amp;);</div><div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;  <a class="code" href="classZooKeeperNetwork.html">ZooKeeperNetwork</a>&amp; operator=(<span class="keyword">const</span> <a class="code" href="classZooKeeperNetwork.html">ZooKeeperNetwork</a>&amp;);</div><div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;</div><div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;  <span class="comment">// Helper that sets up a watch on the group.</span></div><div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;  <span class="keywordtype">void</span> <a class="code" href="classNetwork.html#ac273d79a8be8f05411440757979dae5d">watch</a>(<span class="keyword">const</span> std::set&lt;zookeeper::Group::Membership&gt;&amp; expected);</div><div class="line"><a nam
 e="l00128"></a><span class="lineno">  128</span>&#160;</div><div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;  <span class="comment">// Invoked when the group memberships have changed.</span></div><div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;  <span class="keywordtype">void</span> watched(<span class="keyword">const</span> <a class="code" href="classprocess_1_1Future.html">process::Future</a>&lt;std::set&lt;zookeeper::Group::Membership&gt;&gt;&amp;);</div><div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;</div><div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;  <span class="comment">// Invoked when group members data has been collected.</span></div><div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;  <span class="keywordtype">void</span> collected(</div><div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;      <spa
 n class="keyword">const</span> <a class="code" href="classprocess_1_1Future.html">process::Future</a>&lt;std::vector&lt;<a class="code" href="classOption.html">Option&lt;std::string&gt;</a>&gt;&gt;&amp; datas);</div><div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;</div><div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;  <a class="code" href="classzookeeper_1_1Group.html">zookeeper::Group</a> <a class="code" href="structgroup.html">group</a>;</div><div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;  <a class="code" href="classprocess_1_1Future.html">process::Future&lt;std::set&lt;zookeeper::Group::Membership&gt;</a>&gt; memberships;</div><div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;</div><div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;  <span class="comment">// The set of PIDs that are always in the network.</span></div><div class="line">
 <a name="l00140"></a><span class="lineno">  140</span>&#160;  std::set&lt;process::UPID&gt; <a class="code" href="namespaceprocess.html#a373bd5e2bd8f2694e4589293af477854">base</a>;</div><div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;</div><div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;  <span class="comment">// NOTE: The declaration order here is important. We want to delete</span></div><div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;  <span class="comment">// the &#39;executor&#39; before we delete the &#39;group&#39; so that we don&#39;t get</span></div><div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;  <span class="comment">// spurious fatal errors when the &#39;group&#39; is being deleted.</span></div><div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;  <a class="code" href="classprocess_1_1Executor.html">process::Executor</a> execut
 or;</div><div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;};</div><div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;</div><div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;</div><div class="line"><a name="l00149"></a><span class="lineno"><a class="line" href="classNetworkProcess.html">  149</a></span>&#160;<span class="keyword">class </span><a class="code" href="classNetworkProcess.html">NetworkProcess</a> : <span class="keyword">public</span> <a class="code" href="classProtobufProcess.html">ProtobufProcess</a>&lt;NetworkProcess&gt;</div><div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;{</div><div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00152"></a><span class="lineno"><a class="line" href="classNetworkProcess.html#a27e374e97a8ba393559ea8f9c7ee4d97">  152</a></span>&#160
 ;  <a class="code" href="classNetworkProcess.html#a27e374e97a8ba393559ea8f9c7ee4d97">NetworkProcess</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">&quot;log-network&quot;</span>)) {}</div><div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;</div><div class="line"><a name="l00154"></a><span class="lineno"><a class="line" href="classNetworkProcess.html#a961c50276561074c6666c35f979b75b5">  154</a></span>&#160;  <span class="keyword">explicit</span> <a class="code" href="classNetworkProcess.html#a961c50276561074c6666c35f979b75b5">NetworkProcess</a>(<span class="keyword">const</span> std::set&lt;process::UPID&gt;&amp; <a class="code" href="namespaceos.html#a42af1cab63434cedf2b698cd6f49f073">pids</a>)</div><div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;    : ProcessBase(<a c
 lass="code" href="namespaceprocess.html">process</a>::ID::<a class="code" href="namespaceprocess_1_1ID.html#aeb11a48c9def1da169d8455a30d0ee39">generate</a>(<span class="stringliteral">&quot;log-network&quot;</span>))</div><div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;  {</div><div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;    <span class="keyword">set</span>(<a class="code" href="namespaceos.html#a42af1cab63434cedf2b698cd6f49f073">pids</a>);</div><div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;  }</div><div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;</div><div class="line"><a name="l00160"></a><span class="lineno"><a class="line" href="classNetworkProcess.html#a8f7dc78648ac86e67596f7274e7543e8">  160</a></span>&#160;  <span class="keywordtype">void</span> <a class="code" href="classNetworkProcess.html#a8f7dc78648ac86e67596f7274e7543e8">add</a>(<span class="keywo
 rd">const</span> <a class="code" href="structprocess_1_1UPID.html">process::UPID</a>&amp; pid)</div><div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;  {</div><div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;    <span class="comment">// Link in order to keep a socket open (more efficient).</span></div><div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;    <span class="comment">//</span></div><div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;    <span class="comment">// We force a reconnect to avoid sending on a &quot;stale&quot; socket. In</span></div><div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;    <span class="comment">// general when linking to a remote process, the underlying TCP</span></div><div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;    <span class="comment">// connection may become &quot;stale&quot;.
  RFC 793 refers to this as a</span></div><div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;    <span class="comment">// &quot;half-open&quot; connection: the RST is not sent upon the death</span></div><div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;    <span class="comment">// of the peer and a RST will only be received once further</span></div><div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;    <span class="comment">// data is sent on the socket.</span></div><div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;    <span class="comment">//</span></div><div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;    <span class="comment">// &quot;Half-open&quot; (aka &quot;stale&quot;) connections are typically addressed</span></div><div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;    <span class="comment">// via keep-alives (s
 ee RFC 1122 4.2.3.6) to periodically probe</span></div><div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;    <span class="comment">// the connection. In this case, we can rely on the (re-)addition</span></div><div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;    <span class="comment">// of the network member to create a new connection.</span></div><div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;    <span class="comment">//</span></div><div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;    <span class="comment">// See MESOS-5576 for a scenario where reconnecting helps avoid</span></div><div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;    <span class="comment">// dropped messages.</span></div><div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;    link(pid, RemoteConnection::RECONNECT);</div><div class="line"><a name="l
 00179"></a><span class="lineno">  179</span>&#160;</div><div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;    <a class="code" href="namespaceos.html#a42af1cab63434cedf2b698cd6f49f073">pids</a>.insert(pid);</div><div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;</div><div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160;    <span class="comment">// Update any pending watches.</span></div><div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;    <a class="code" href="namespacerouting_1_1filter_1_1basic.html#a088d88712e011acb0673da92045b365b">update</a>();</div><div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;  }</div><div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;</div><div class="line"><a name="l00186"></a><span class="lineno"><a class="line" href="classNetworkProcess.html#a865d2584e57d04f2b8731b159082b2e4">  186</a></span
 >&#160;  <span class="keywordtype">void</span> <span class="keyword">remove</span>(<span class="keyword">const</span> <a class="code" href="structprocess_1_1UPID.html">process::UPID</a>&amp; pid)</div><div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;  {</div><div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;    <span class="comment">// TODO(benh): unlink(pid);</span></div><div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160;    <a class="code" href="namespaceos.html#a42af1cab63434cedf2b698cd6f49f073">pids</a>.erase(pid);</div><div class="line"><a name="l00190"></a><span class="lineno">  190</span>&#160;</div><div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160;    <span class="comment">// Update any pending watches.</span></div><div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;    <a class="code" href="namespacerouting_1_1filter_1_1basic.html#a088d88
 712e011acb0673da92045b365b">update</a>();</div><div class="line"><a name="l00193"></a><span class="lineno">  193</span>&#160;  }</div><div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#160;</div><div class="line"><a name="l00195"></a><span class="lineno"><a class="line" href="classNetworkProcess.html#aeddc897b59e6a9f85b878c8d7280df86">  195</a></span>&#160;  <span class="keywordtype">void</span> <span class="keyword">set</span>(<span class="keyword">const</span> std::set&lt;process::UPID&gt;&amp; _pids)</div><div class="line"><a name="l00196"></a><span class="lineno">  196</span>&#160;  {</div><div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;    <a class="code" href="namespaceos.html#a42af1cab63434cedf2b698cd6f49f073">pids</a>.clear();</div><div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160;    <span class="keywordflow">foreach</span> (<span class="keyword">const</span> <a class="code" href="structprocess
 _1_1UPID.html">process::UPID</a>&amp; pid, _pids) {</div><div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160;      <a class="code" href="classNetwork.html#ae3f5928f9e83376daebfac35c789ae5e">add</a>(pid); <span class="comment">// Also does a link.</span></div><div class="line"><a name="l00200"></a><span class="lineno">  200</span>&#160;    }</div><div class="line"><a name="l00201"></a><span class="lineno">  201</span>&#160;</div><div class="line"><a name="l00202"></a><span class="lineno">  202</span>&#160;    <span class="comment">// Update any pending watches.</span></div><div class="line"><a name="l00203"></a><span class="lineno">  203</span>&#160;    <a class="code" href="namespacerouting_1_1filter_1_1basic.html#a088d88712e011acb0673da92045b365b">update</a>();</div><div class="line"><a name="l00204"></a><span class="lineno">  204</span>&#160;  }</div><div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160;</div><div class="line"><a n
 ame="l00206"></a><span class="lineno"><a class="line" href="classNetworkProcess.html#a68b3187740a1368babf8cd06c4519bbf">  206</a></span>&#160;  <a class="code" href="classprocess_1_1Future.html">process::Future&lt;size_t&gt;</a> <a class="code" href="classNetworkProcess.html#a68b3187740a1368babf8cd06c4519bbf">watch</a>(<span class="keywordtype">size_t</span> <a class="code" href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">size</a>, <a class="code" href="classNetwork.html#a43d645248055c352b6550c586dfdf46b">Network::WatchMode</a> <a class="code" href="namespaceos_1_1stat.html#afc51654ad486693167c300612bf8ebfa">mode</a>)</div><div class="line"><a name="l00207"></a><span class="lineno">  207</span>&#160;  {</div><div class="line"><a name="l00208"></a><span class="lineno">  208</span>&#160;    <span class="keywordflow">if</span> (satisfied(size, mode)) {</div><div class="line"><a name="l00209"></a><span class="lineno">  209</span>&#160;      <span class="keywordflow">ret
 urn</span> <a class="code" href="namespaceos.html#a42af1cab63434cedf2b698cd6f49f073">pids</a>.size();</div><div class="line"><a name="l00210"></a><span class="lineno">  210</span>&#160;    }</div><div class="line"><a name="l00211"></a><span class="lineno">  211</span>&#160;</div><div class="line"><a name="l00212"></a><span class="lineno">  212</span>&#160;    Watch* <a class="code" href="classNetwork.html#ac273d79a8be8f05411440757979dae5d">watch</a> = <span class="keyword">new</span> Watch(size, mode);</div><div class="line"><a name="l00213"></a><span class="lineno">  213</span>&#160;    watches.push_back(watch);</div><div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160;</div><div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160;    <span class="comment">// TODO(jieyu): Consider deleting &#39;watch&#39; if the returned future</span></div><div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#160;    <span class="com
 ment">// is discarded by the user.</span></div><div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160;    <span class="keywordflow">return</span> watch-&gt;promise.future();</div><div class="line"><a name="l00218"></a><span class="lineno">  218</span>&#160;  }</div><div class="line"><a name="l00219"></a><span class="lineno">  219</span>&#160;</div><div class="line"><a name="l00220"></a><span class="lineno">  220</span>&#160;  <span class="comment">// Sends a request to each of the group members and returns a set</span></div><div class="line"><a name="l00221"></a><span class="lineno">  221</span>&#160;  <span class="comment">// of futures that represent their responses.</span></div><div class="line"><a name="l00222"></a><span class="lineno">  222</span>&#160;  <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Req, <span class="keyword">typename</span> Res&gt;</div><div class="line"><a name="l00223"></a><span class="lineno"><a class
 ="line" href="classNetworkProcess.html#adde5598934df8f0d514db2b01d2508f2">  223</a></span>&#160;  std::set&lt;process::Future&lt;Res&gt;&gt; <a class="code" href="classNetworkProcess.html#adde5598934df8f0d514db2b01d2508f2">broadcast</a>(</div><div class="line"><a name="l00224"></a><span class="lineno">  224</span>&#160;      <span class="keyword">const</span> <a class="code" href="structProtocol.html">Protocol&lt;Req, Res&gt;</a>&amp; protocol,</div><div class="line"><a name="l00225"></a><span class="lineno">  225</span>&#160;      <span class="keyword">const</span> Req&amp; req,</div><div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;      <span class="keyword">const</span> std::set&lt;process::UPID&gt;&amp; <a class="code" href="namespaceprocess.html#a3054d5443603436a6315f210a412cbbc">filter</a>)</div><div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160;  {</div><div class="line"><a name="l00228"></a><span class="lineno">  228</s
 pan>&#160;    std::set&lt;process::Future&lt;Res&gt;&gt; futures;</div><div class="line"><a name="l00229"></a><span class="lineno">  229</span>&#160;    <span class="keyword">typename</span> std::set&lt;process::UPID&gt;::const_iterator iterator;</div><div class="line"><a name="l00230"></a><span class="lineno">  230</span>&#160;    <span class="keywordflow">for</span> (iterator = <a class="code" href="namespaceos.html#a42af1cab63434cedf2b698cd6f49f073">pids</a>.begin(); iterator != <a class="code" href="namespaceos.html#a42af1cab63434cedf2b698cd6f49f073">pids</a>.end(); ++iterator) {</div><div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160;      <span class="keyword">const</span> <a class="code" href="structprocess_1_1UPID.html">process::UPID</a>&amp; pid = *iterator;</div><div class="line"><a name="l00232"></a><span class="lineno">  232</span>&#160;      <span class="keywordflow">if</span> (filter.count(pid) == 0) {</div><div class="line"><a name="l00233">
 </a><span class="lineno">  233</span>&#160;        futures.insert(protocol(pid, req));</div><div class="line"><a name="l00234"></a><span class="lineno">  234</span>&#160;      }</div><div class="line"><a name="l00235"></a><span class="lineno">  235</span>&#160;    }</div><div class="line"><a name="l00236"></a><span class="lineno">  236</span>&#160;    <span class="keywordflow">return</span> futures;</div><div class="line"><a name="l00237"></a><span class="lineno">  237</span>&#160;  }</div><div class="line"><a name="l00238"></a><span class="lineno">  238</span>&#160;</div><div class="line"><a name="l00239"></a><span class="lineno">  239</span>&#160;  <span class="comment">// Sends a request to each of the group members without expecting responses.</span></div><div class="line"><a name="l00240"></a><span class="lineno">  240</span>&#160;  <span class="keyword">template</span> &lt;<span class="keyword">typename</span> M&gt;</div><div class="line"><a name="l00241"></a><span class="line
 no"><a class="line" href="classNetworkProcess.html#a96f258726d50884bad2b45143791d9e3">  241</a></span>&#160;  <a class="code" href="structNothing.html">Nothing</a> <a class="code" href="classNetworkProcess.html#a96f258726d50884bad2b45143791d9e3">broadcast</a>(</div><div class="line"><a name="l00242"></a><span class="lineno">  242</span>&#160;      <span class="keyword">const</span> M&amp; m,</div><div class="line"><a name="l00243"></a><span class="lineno">  243</span>&#160;      <span class="keyword">const</span> std::set&lt;process::UPID&gt;&amp; <a class="code" href="namespaceprocess.html#a3054d5443603436a6315f210a412cbbc">filter</a>)</div><div class="line"><a name="l00244"></a><span class="lineno">  244</span>&#160;  {</div><div class="line"><a name="l00245"></a><span class="lineno">  245</span>&#160;    std::set&lt;process::UPID&gt;::const_iterator iterator;</div><div class="line"><a name="l00246"></a><span class="lineno">  246</span>&#160;    <span class="keywordflow">for</span
 > (iterator = <a class="code" href="namespaceos.html#a42af1cab63434cedf2b698cd6f49f073">pids</a>.begin(); iterator != <a class="code" href="namespaceos.html#a42af1cab63434cedf2b698cd6f49f073">pids</a>.end(); ++iterator) {</div><div class="line"><a name="l00247"></a><span class="lineno">  247</span>&#160;      <span class="keyword">const</span> <a class="code" href="structprocess_1_1UPID.html">process::UPID</a>&amp; pid = *iterator;</div><div class="line"><a name="l00248"></a><span class="lineno">  248</span>&#160;      <span class="keywordflow">if</span> (filter.count(pid) == 0) {</div><div class="line"><a name="l00249"></a><span class="lineno">  249</span>&#160;        <span class="comment">// NOTE: Just send this message as the network process itself</span></div><div class="line"><a name="l00250"></a><span class="lineno">  250</span>&#160;        <span class="comment">// since we don&#39;t need to deliver responses back to the caller.</span></div><div class="line"><a name="l00251"
 ></a><span class="lineno">  251</span>&#160;        <span class="comment">// Incoming messages addressed to the network are simply dropped.</span></div><div class="line"><a name="l00252"></a><span class="lineno">  252</span>&#160;        <a class="code" href="namespacenet.html#aa0a46766b4aca53ea50e1921567ddb40">send</a>(pid, m);</div><div class="line"><a name="l00253"></a><span class="lineno">  253</span>&#160;      }</div><div class="line"><a name="l00254"></a><span class="lineno">  254</span>&#160;    }</div><div class="line"><a name="l00255"></a><span class="lineno">  255</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="structNothing.html">Nothing</a>();</div><div class="line"><a name="l00256"></a><span class="lineno">  256</span>&#160;  }</div><div class="line"><a name="l00257"></a><span class="lineno">  257</span>&#160;</div><div class="line"><a name="l00258"></a><span class="lineno">  258</span>&#160;<span class="keyword">protected</span>:</div><di
 v class="line"><a name="l00259"></a><span class="lineno"><a class="line" href="classNetworkProcess.html#a36b7e3c3759a96959823ee339fa68392">  259</a></span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classNetworkProcess.html#a36b7e3c3759a96959823ee339fa68392">finalize</a>()</div><div class="line"><a name="l00260"></a><span class="lineno">  260</span>&#160;  {</div><div class="line"><a name="l00261"></a><span class="lineno">  261</span>&#160;    <span class="keywordflow">foreach</span> (Watch* <a class="code" href="classNetwork.html#ac273d79a8be8f05411440757979dae5d">watch</a>, watches) {</div><div class="line"><a name="l00262"></a><span class="lineno">  262</span>&#160;      watch-&gt;promise.fail(<span class="stringliteral">&quot;Network is being terminated&quot;</span>);</div><div class="line"><a name="l00263"></a><span class="lineno">  263</span>&#160;      <span class="keyword">delete</span> <a class="code" href="classN
 etwork.html#ac273d79a8be8f05411440757979dae5d">watch</a>;</div><div class="line"><a name="l00264"></a><span class="lineno">  264</span>&#160;    }</div><div class="line"><a name="l00265"></a><span class="lineno">  265</span>&#160;    watches.clear();</div><div class="line"><a name="l00266"></a><span class="lineno">  266</span>&#160;  }</div><div class="line"><a name="l00267"></a><span class="lineno">  267</span>&#160;</div><div class="line"><a name="l00268"></a><span class="lineno">  268</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00269"></a><span class="lineno">  269</span>&#160;  <span class="keyword">struct </span>Watch</div><div class="line"><a name="l00270"></a><span class="lineno">  270</span>&#160;  {</div><div class="line"><a name="l00271"></a><span class="lineno">  271</span>&#160;    Watch(<span class="keywordtype">size_t</span> _size, <a class="code" href="classNetwork.html#a43d645248055c352b6550c586dfdf46b">Network::WatchMode</a> _m
 ode)</div><div class="line"><a name="l00272"></a><span class="lineno">  272</span>&#160;      : <a class="code" href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">size</a>(_size), <a class="code" href="namespaceos_1_1stat.html#afc51654ad486693167c300612bf8ebfa">mode</a>(_mode) {}</div><div class="line"><a name="l00273"></a><span class="lineno">  273</span>&#160;</div><div class="line"><a name="l00274"></a><span class="lineno">  274</span>&#160;    <span class="keywordtype">size_t</span> <a class="code" href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">size</a>;</div><div class="line"><a name="l00275"></a><span class="lineno">  275</span>&#160;    <a class="code" href="classNetwork.html#a43d645248055c352b6550c586dfdf46b">Network::WatchMode</a> <a class="code" href="namespaceos_1_1stat.html#afc51654ad486693167c300612bf8ebfa">mode</a>;</div><div class="line"><a name="l00276"></a><span class="lineno">  276</span>&#160;    <a class="code" href="classprocess
 _1_1Promise.html">process::Promise&lt;size_t&gt;</a> <a class="code" href="namespacemesos_1_1internal_1_1log_1_1protocol.html#a3b1f8bd7b18c51af9d1f58842950b545">promise</a>;</div><div class="line"><a name="l00277"></a><span class="lineno">  277</span>&#160;  };</div><div class="line"><a name="l00278"></a><span class="lineno">  278</span>&#160;</div><div class="line"><a name="l00279"></a><span class="lineno">  279</span>&#160;  <span class="comment">// Not copyable, not assignable.</span></div><div class="line"><a name="l00280"></a><span class="lineno">  280</span>&#160;  <a class="code" href="classNetworkProcess.html">NetworkProcess</a>(<span class="keyword">const</span> <a class="code" href="classNetworkProcess.html">NetworkProcess</a>&amp;);</div><div class="line"><a name="l00281"></a><span class="lineno">  281</span>&#160;  <a class="code" href="classNetworkProcess.html">NetworkProcess</a>&amp; operator=(<span class="keyword">const</span> <a class="code" href="classNetworkProcess
 .html">NetworkProcess</a>&amp;);</div><div class="line"><a name="l00282"></a><span class="lineno">  282</span>&#160;</div><div class="line"><a name="l00283"></a><span class="lineno">  283</span>&#160;  <span class="comment">// Notifies the change of the network.</span></div><div class="line"><a name="l00284"></a><span class="lineno">  284</span>&#160;  <span class="keywordtype">void</span> <a class="code" href="namespacerouting_1_1filter_1_1basic.html#a088d88712e011acb0673da92045b365b">update</a>()</div><div class="line"><a name="l00285"></a><span class="lineno">  285</span>&#160;  {</div><div class="line"><a name="l00286"></a><span class="lineno">  286</span>&#160;    <span class="keyword">const</span> <span class="keywordtype">size_t</span> <a class="code" href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">size</a> = watches.size();</div><div class="line"><a name="l00287"></a><span class="lineno">  287</span>&#160;    <span class="keywordflow">for</span> (<span clas
 s="keywordtype">size_t</span> i = 0; i &lt; <a class="code" href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">size</a>; i++) {</div><div class="line"><a name="l00288"></a><span class="lineno">  288</span>&#160;      Watch* <a class="code" href="classNetwork.html#ac273d79a8be8f05411440757979dae5d">watch</a> = watches.front();</div><div class="line"><a name="l00289"></a><span class="lineno">  289</span>&#160;      watches.pop_front();</div><div class="line"><a name="l00290"></a><span class="lineno">  290</span>&#160;</div><div class="line"><a name="l00291"></a><span class="lineno">  291</span>&#160;      <span class="keywordflow">if</span> (satisfied(watch-&gt;size, watch-&gt;mode)) {</div><div class="line"><a name="l00292"></a><span class="lineno">  292</span>&#160;        watch-&gt;promise.set(<a class="code" href="namespaceos.html#a42af1cab63434cedf2b698cd6f49f073">pids</a>.size());</div><div class="line"><a name="l00293"></a><span class="lineno">  293</span>&#160; 
        <span class="keyword">delete</span> <a class="code" href="classNetwork.html#ac273d79a8be8f05411440757979dae5d">watch</a>;</div><div class="line"><a name="l00294"></a><span class="lineno">  294</span>&#160;      } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00295"></a><span class="lineno">  295</span>&#160;        watches.push_back(watch);</div><div class="line"><a name="l00296"></a><span class="lineno">  296</span>&#160;      }</div><div class="line"><a name="l00297"></a><span class="lineno">  297</span>&#160;    }</div><div class="line"><a name="l00298"></a><span class="lineno">  298</span>&#160;  }</div><div class="line"><a name="l00299"></a><span class="lineno">  299</span>&#160;</div><div class="line"><a name="l00300"></a><span class="lineno">  300</span>&#160;  <span class="comment">// Returns true if the current size of the network satisfies the</span></div><div class="line"><a name="l00301"></a><span class="lineno">  301</span>&#160;  <span
  class="comment">// constraint specified by &#39;size&#39; and &#39;mode&#39;.</span></div><div class="line"><a name="l00302"></a><span class="lineno">  302</span>&#160;  <span class="keywordtype">bool</span> satisfied(<span class="keywordtype">size_t</span> <a class="code" href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">size</a>, <a class="code" href="classNetwork.html#a43d645248055c352b6550c586dfdf46b">Network::WatchMode</a> <a class="code" href="namespaceos_1_1stat.html#afc51654ad486693167c300612bf8ebfa">mode</a>)</div><div class="line"><a name="l00303"></a><span class="lineno">  303</span>&#160;  {</div><div class="line"><a name="l00304"></a><span class="lineno">  304</span>&#160;    <span class="keywordflow">switch</span> (mode) {</div><div class="line"><a name="l00305"></a><span class="lineno">  305</span>&#160;      <span class="keywordflow">case</span> <a class="code" href="classNetwork.html#a43d645248055c352b6550c586dfdf46ba7f1c8f1a0171b0e809d6c2e69490671a
 ">Network::EQUAL_TO</a>:</div><div class="line"><a name="l00306"></a><span class="lineno">  306</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="namespaceos.html#a42af1cab63434cedf2b698cd6f49f073">pids</a>.size() == <a class="code" href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">size</a>;</div><div class="line"><a name="l00307"></a><span class="lineno">  307</span>&#160;      <span class="keywordflow">case</span> <a class="code" href="classNetwork.html#a43d645248055c352b6550c586dfdf46ba35573a903c78a976ee1becfd4c41b64a">Network::NOT_EQUAL_TO</a>:</div><div class="line"><a name="l00308"></a><span class="lineno">  308</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="namespaceos.html#a42af1cab63434cedf2b698cd6f49f073">pids</a>.size() != <a class="code" href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">size</a>;</div><div class="line"><a name="l00309"></a><span class="lineno">  309</span>&
 #160;      <span class="keywordflow">case</span> <a class="code" href="classNetwork.html#a43d645248055c352b6550c586dfdf46ba83a711502205ef7ec107abfd72c969bf">Network::LESS_THAN</a>:</div><div class="line"><a name="l00310"></a><span class="lineno">  310</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="namespaceos.html#a42af1cab63434cedf2b698cd6f49f073">pids</a>.size() &lt; <a class="code" href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">size</a>;</div><div class="line"><a name="l00311"></a><span class="lineno">  311</span>&#160;      <span class="keywordflow">case</span> <a class="code" href="classNetwork.html#a43d645248055c352b6550c586dfdf46bae3f845f5bd93ed6d177e85214c15f5b1">Network::LESS_THAN_OR_EQUAL_TO</a>:</div><div class="line"><a name="l00312"></a><span class="lineno">  312</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="namespaceos.html#a42af1cab63434cedf2b698cd6f49f073">pids</a>.size() &lt;= 
 <a class="code" href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">size</a>;</div><div class="line"><a name="l00313"></a><span class="lineno">  313</span>&#160;      <span class="keywordflow">case</span> <a class="code" href="classNetwork.html#a43d645248055c352b6550c586dfdf46ba5720bf2cef2135857ad15209169bbd8c">Network::GREATER_THAN</a>:</div><div class="line"><a name="l00314"></a><span class="lineno">  314</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="namespaceos.html#a42af1cab63434cedf2b698cd6f49f073">pids</a>.size() &gt; <a class="code" href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">size</a>;</div><div class="line"><a name="l00315"></a><span class="lineno">  315</span>&#160;      <span class="keywordflow">case</span> <a class="code" href="classNetwork.html#a43d645248055c352b6550c586dfdf46ba478ef22cc32892ffd21294e285b93e31">Network::GREATER_THAN_OR_EQUAL_TO</a>:</div><div class="line"><a name="l00316"></a><span c
 lass="lineno">  316</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="namespaceos.html#a42af1cab63434cedf2b698cd6f49f073">pids</a>.size() &gt;= <a class="code" href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">size</a>;</div><div class="line"><a name="l00317"></a><span class="lineno">  317</span>&#160;      <span class="keywordflow">default</span>:</div><div class="line"><a name="l00318"></a><span class="lineno">  318</span>&#160;        LOG(FATAL) &lt;&lt; <span class="stringliteral">&quot;Invalid watch mode&quot;</span>;</div><div class="line"><a name="l00319"></a><span class="lineno">  319</span>&#160;        <a class="code" href="unreachable_8hpp.html#a0bc63b24b654ca433be7b97a3edde132">UNREACHABLE</a>();</div><div class="line"><a name="l00320"></a><span class="lineno">  320</span>&#160;    }</div><div class="line"><a name="l00321"></a><span class="lineno">  321</span>&#160;  }</div><div class="line"><a name="l00322"></a><span class
 ="lineno">  322</span>&#160;</div><div class="line"><a name="l00323"></a><span class="lineno">  323</span>&#160;  std::set&lt;process::UPID&gt; <a class="code" href="namespaceos.html#a42af1cab63434cedf2b698cd6f49f073">pids</a>;</div><div class="line"><a name="l00324"></a><span class="lineno">  324</span>&#160;  std::deque&lt;Watch*&gt; watches;</div><div class="line"><a name="l00325"></a><span class="lineno">  325</span>&#160;};</div><div class="line"><a name="l00326"></a><span class="lineno">  326</span>&#160;</div><div class="line"><a name="l00327"></a><span class="lineno">  327</span>&#160;</div><div class="line"><a name="l00328"></a><span class="lineno"><a class="line" href="classNetwork.html#a3cc2fb4f8fa4d507077e8da85ce5a1c8">  328</a></span>&#160;<span class="keyword">inline</span> <a class="code" href="classNetwork.html#a3cc2fb4f8fa4d507077e8da85ce5a1c8">Network::Network</a>()</div><div class="line"><a name="l00329"></a><span class="lineno">  329</span>&#160;{</div><div class
 ="line"><a name="l00330"></a><span class="lineno">  330</span>&#160;  <a class="code" href="namespaceprocess.html">process</a> = <span class="keyword">new</span> <a class="code" href="classNetworkProcess.html">NetworkProcess</a>();</div><div class="line"><a name="l00331"></a><span class="lineno">  331</span>&#160;  <a class="code" href="namespaceprocess.html#aff22904a83567125d3b4d0d88e5a2270">process::spawn</a>(<a class="code" href="namespaceprocess.html">process</a>);</div><div class="line"><a name="l00332"></a><span class="lineno">  332</span>&#160;}</div><div class="line"><a name="l00333"></a><span class="lineno">  333</span>&#160;</div><div class="line"><a name="l00334"></a><span class="lineno">  334</span>&#160;</div><div class="line"><a name="l00335"></a><span class="lineno"><a class="line" href="classNetwork.html#af5fdbd9ebb3015e2532841939975d6db">  335</a></span>&#160;<span class="keyword">inline</span> <a class="code" href="classNetwork.html#a3cc2fb4f8fa4d507077e8da85ce5a1c
 8">Network::Network</a>(<span class="keyword">const</span> std::set&lt;process::UPID&gt;&amp; <a class="code" href="namespaceos.html#a42af1cab63434cedf2b698cd6f49f073">pids</a>)</div><div class="line"><a name="l00336"></a><span class="lineno">  336</span>&#160;{</div><div class="line"><a name="l00337"></a><span class="lineno">  337</span>&#160;  <a class="code" href="namespaceprocess.html">process</a> = <span class="keyword">new</span> <a class="code" href="classNetworkProcess.html">NetworkProcess</a>(pids);</div><div class="line"><a name="l00338"></a><span class="lineno">  338</span>&#160;  <a class="code" href="namespaceprocess.html#aff22904a83567125d3b4d0d88e5a2270">process::spawn</a>(<a class="code" href="namespaceprocess.html">process</a>);</div><div class="line"><a name="l00339"></a><span class="lineno">  339</span>&#160;}</div><div class="line"><a name="l00340"></a><span class="lineno">  340</span>&#160;</div><div class="line"><a name="l00341"></a><span class="lineno">  341</
 span>&#160;</div><div class="line"><a name="l00342"></a><span class="lineno"><a class="line" href="classNetwork.html#a7a4e19cdb4bf0c7ecf82baa643831492">  342</a></span>&#160;<span class="keyword">inline</span> <a class="code" href="classNetwork.html#a7a4e19cdb4bf0c7ecf82baa643831492">Network::~Network</a>()</div><div class="line"><a name="l00343"></a><span class="lineno">  343</span>&#160;{</div><div class="line"><a name="l00344"></a><span class="lineno">  344</span>&#160;  <a class="code" href="namespaceprocess.html#a20443908afa3212215166e26065349e5">process::terminate</a>(<a class="code" href="namespaceprocess.html">process</a>);</div><div class="line"><a name="l00345"></a><span class="lineno">  345</span>&#160;  <a class="code" href="namespaceprocess.html#a07833fb41a8b0c1f18fa5485ca8c18d4">process::wait</a>(<a class="code" href="namespaceprocess.html">process</a>);</div><div class="line"><a name="l00346"></a><span class="lineno">  346</span>&#160;  <span class="keyword">delete</s
 pan> <a class="code" href="namespaceprocess.html">process</a>;</div><div class="line"><a name="l00347"></a><span class="lineno">  347</span>&#160;}</div><div class="line"><a name="l00348"></a><span class="lineno">  348</span>&#160;</div><div class="line"><a name="l00349"></a><span class="lineno">  349</span>&#160;</div><div class="line"><a name="l00350"></a><span class="lineno"><a class="line" href="classNetwork.html#ae3f5928f9e83376daebfac35c789ae5e">  350</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classNetwork.html#ae3f5928f9e83376daebfac35c789ae5e">Network::add</a>(<span class="keyword">const</span> <a class="code" href="structprocess_1_1UPID.html">process::UPID</a>&amp; pid)</div><div class="line"><a name="l00351"></a><span class="lineno">  351</span>&#160;{</div><div class="line"><a name="l00352"></a><span class="lineno">  352</span>&#160;  <a class="code" href="namespaceprocess.html#acfbc29404bc653268289691b0
 dd59e22">process::dispatch</a>(<a class="code" href="namespaceprocess.html">process</a>, &amp;<a class="code" href="classNetworkProcess.html#a8f7dc78648ac86e67596f7274e7543e8">NetworkProcess::add</a>, pid);</div><div class="line"><a name="l00353"></a><span class="lineno">  353</span>&#160;}</div><div class="line"><a name="l00354"></a><span class="lineno">  354</span>&#160;</div><div class="line"><a name="l00355"></a><span class="lineno">  355</span>&#160;</div><div class="line"><a name="l00356"></a><span class="lineno"><a class="line" href="classNetwork.html#a4e7349244ab231fe08db8c59d159d5b7">  356</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classNetwork.html#a4e7349244ab231fe08db8c59d159d5b7">Network::remove</a>(<span class="keyword">const</span> <a class="code" href="structprocess_1_1UPID.html">process::UPID</a>&amp; pid)</div><div class="line"><a name="l00357"></a><span class="lineno">  357</span>&#160;{</div><di
 v class="line"><a name="l00358"></a><span class="lineno">  358</span>&#160;  <a class="code" href="namespaceprocess.html#acfbc29404bc653268289691b0dd59e22">process::dispatch</a>(<a class="code" href="namespaceprocess.html">process</a>, &amp;<a class="code" href="classNetworkProcess.html#a865d2584e57d04f2b8731b159082b2e4">NetworkProcess::remove</a>, pid);</div><div class="line"><a name="l00359"></a><span class="lineno">  359</span>&#160;}</div><div class="line"><a name="l00360"></a><span class="lineno">  360</span>&#160;</div><div class="line"><a name="l00361"></a><span class="lineno">  361</span>&#160;</div><div class="line"><a name="l00362"></a><span class="lineno"><a class="line" href="classNetwork.html#a0722ba6e072b74ffbe4556e2d432f103">  362</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classNetwork.html#a0722ba6e072b74ffbe4556e2d432f103">Network::set</a>(<span class="keyword">const</span> std::set&lt;process::UPI
 D&gt;&amp; <a class="code" href="namespaceos.html#a42af1cab63434cedf2b698cd6f49f073">pids</a>)</div><div class="line"><a name="l00363"></a><span class="lineno">  363</span>&#160;{</div><div class="line"><a name="l00364"></a><span class="lineno">  364</span>&#160;  <a class="code" href="namespaceprocess.html#acfbc29404bc653268289691b0dd59e22">process::dispatch</a>(<a class="code" href="namespaceprocess.html">process</a>, &amp;<a class="code" href="classNetworkProcess.html#aeddc897b59e6a9f85b878c8d7280df86">NetworkProcess::set</a>, pids);</div><div class="line"><a name="l00365"></a><span class="lineno">  365</span>&#160;}</div><div class="line"><a name="l00366"></a><span class="lineno">  366</span>&#160;</div><div class="line"><a name="l00367"></a><span class="lineno">  367</span>&#160;</div><div class="line"><a name="l00368"></a><span class="lineno"><a class="line" href="classNetwork.html#ac273d79a8be8f05411440757979dae5d">  368</a></span>&#160;<span class="keyword">inline</span> <a 
 class="code" href="classprocess_1_1Future.html">process::Future&lt;size_t&gt;</a> <a class="code" href="classNetwork.html#ac273d79a8be8f05411440757979dae5d">Network::watch</a>(</div><div class="line"><a name="l00369"></a><span class="lineno">  369</span>&#160;    <span class="keywordtype">size_t</span> <a class="code" href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">size</a>, <a class="code" href="classNetwork.html#a43d645248055c352b6550c586dfdf46b">Network::WatchMode</a> <a class="code" href="namespaceos_1_1stat.html#afc51654ad486693167c300612bf8ebfa">mode</a>)<span class="keyword"> const</span></div><div class="line"><a name="l00370"></a><span class="lineno">  370</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00371"></a><span class="lineno">  371</span>&#160;  <span class="keywordflow">return</span> <a class="code" href="namespaceprocess.html#acfbc29404bc653268289691b0dd59e22">process::dispatch</a>(<a class="code" href="namespaceproce
 ss.html">process</a>, &amp;<a class="code" href="classNetworkProcess.html#a68b3187740a1368babf8cd06c4519bbf">NetworkProcess::watch</a>, size, mode);</div><div class="line"><a name="l00372"></a><span class="lineno">  372</span>&#160;}</div><div class="line"><a name="l00373"></a><span class="lineno">  373</span>&#160;</div><div class="line"><a name="l00374"></a><span class="lineno">  374</span>&#160;</div><div class="line"><a name="l00375"></a><span class="lineno">  375</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Req, <span class="keyword">typename</span> Res&gt;</div><div class="line"><a name="l00376"></a><span class="lineno"><a class="line" href="classNetwork.html#a31e8af8c885552d6cf1000ea846c62dc">  376</a></span>&#160;<a class="code" href="classprocess_1_1Future.html">process::Future&lt;std::set&lt;process::Future&lt;Res&gt;</a>&gt;&gt; <a class="code" href="classNetwork.html#a31e8af8c885552d6cf1000ea846c62dc">Network::broadcast</a>(
 </div><div class="line"><a name="l00377"></a><span class="lineno">  377</span>&#160;    <span class="keyword">const</span> <a class="code" href="structProtocol.html">Protocol&lt;Req, Res&gt;</a>&amp; protocol,</div><div class="line"><a name="l00378"></a><span class="lineno">  378</span>&#160;    <span class="keyword">const</span> Req&amp; req,</div><div class="line"><a name="l00379"></a><span class="lineno">  379</span>&#160;    <span class="keyword">const</span> std::set&lt;process::UPID&gt;&amp; <a class="code" href="namespaceprocess.html#a3054d5443603436a6315f210a412cbbc">filter</a>)<span class="keyword"> const</span></div><div class="line"><a name="l00380"></a><span class="lineno">  380</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00381"></a><span class="lineno">  381</span>&#160;  <span class="keywordflow">return</span> <a class="code" href="namespaceprocess.html#acfbc29404bc653268289691b0dd59e22">process::dispatch</a>(<a class="code" href="namesp
 aceprocess.html">process</a>, &amp;NetworkProcess::broadcast&lt;Req, Res&gt;,</div><div class="line"><a name="l00382"></a><span class="lineno">  382</span>&#160;                           protocol, req, filter);</div><div class="line"><a name="l00383"></a><span class="lineno">  383</span>&#160;}</div><div class="line"><a name="l00384"></a><span class="lineno">  384</span>&#160;</div><div class="line"><a name="l00385"></a><span class="lineno">  385</span>&#160;</div><div class="line"><a name="l00386"></a><span class="lineno">  386</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> M&gt;</div><div class="line"><a name="l00387"></a><span class="lineno"><a class="line" href="classNetwork.html#a75734a1bb2c17828346e03e8bd959690">  387</a></span>&#160;<a class="code" href="classprocess_1_1Future.html">process::Future&lt;Nothing&gt;</a> <a class="code" href="classNetwork.html#a31e8af8c885552d6cf1000ea846c62dc">Network::broadcast</a>(</div><div class=
 "line"><a name="l00388"></a><span class="lineno">  388</span>&#160;    <span class="keyword">const</span> M&amp; m,</div><div class="line"><a name="l00389"></a><span class="lineno">  389</span>&#160;    <span class="keyword">const</span> std::set&lt;process::UPID&gt;&amp; <a class="code" href="namespaceprocess.html#a3054d5443603436a6315f210a412cbbc">filter</a>)<span class="keyword"> const</span></div><div class="line"><a name="l00390"></a><span class="lineno">  390</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00391"></a><span class="lineno">  391</span>&#160;  <span class="comment">// Need to disambiguate overloaded function.</span></div><div class="line"><a name="l00392"></a><span class="lineno">  392</span>&#160;  <a class="code" href="structNothing.html">Nothing</a> (<a class="code" href="classNetworkProcess.html">NetworkProcess</a>::*<a class="code" href="classNetwork.html#a31e8af8c885552d6cf1000ea846c62dc">broadcast</a>)(<span class="keyword">cons
 t</span> M&amp;, <span class="keyword">const</span> std::set&lt;process::UPID&gt;&amp;)</div><div class="line"><a name="l00393"></a><span class="lineno">  393</span>&#160;    = &amp;NetworkProcess::broadcast&lt;M&gt;;</div><div class="line"><a name="l00394"></a><span class="lineno">  394</span>&#160;</div><div class="line"><a name="l00395"></a><span class="lineno">  395</span>&#160;  <span class="keywordflow">return</span> <a class="code" href="namespaceprocess.html#acfbc29404bc653268289691b0dd59e22">process::dispatch</a>(<a class="code" href="namespaceprocess.html">process</a>, broadcast, m, filter);</div><div class="line"><a name="l00396"></a><span class="lineno">  396</span>&#160;}</div><div class="line"><a name="l00397"></a><span class="lineno">  397</span>&#160;</div><div class="line"><a name="l00398"></a><span class="lineno">  398</span>&#160;</div><div class="line"><a name="l00399"></a><span class="lineno"><a class="line" href="classZooKeeperNetwork.html#adf9c95d172e51c5ff40c
 7c14a9370a72">  399</a></span>&#160;<span class="keyword">inline</span> <a class="code" href="classZooKeeperNetwork.html#adf9c95d172e51c5ff40c7c14a9370a72">ZooKeeperNetwork::ZooKeeperNetwork</a>(</div><div class="line"><a name="l00400"></a><span class="lineno">  400</span>&#160;    <span class="keyword">const</span> std::string&amp; servers,</div><div class="line"><a name="l00401"></a><span class="lineno">  401</span>&#160;    <span class="keyword">const</span> <a class="code" href="classDuration.html">Duration</a>&amp; timeout,</div><div class="line"><a name="l00402"></a><span class="lineno">  402</span>&#160;    <span class="keyword">const</span> std::string&amp; znode,</div><div class="line"><a name="l00403"></a><span class="lineno">  403</span>&#160;    <span class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;zookeeper::Authentication&gt;</a>&amp; auth,</div><div class="line"><a name="l00404"></a><span class="lineno">  404</span>&#160;    <span class=
 "keyword">const</span> std::set&lt;process::UPID&gt;&amp; _base)</div><div class="line"><a name="l00405"></a><span class="lineno">  405</span>&#160;  : <a class="code" href="structgroup.html">group</a>(servers, timeout, znode, auth),</div><div class="line"><a name="l00406"></a><span class="lineno">  406</span>&#160;    <a class="code" href="namespaceprocess.html#a373bd5e2bd8f2694e4589293af477854">base</a>(_base)</div><div class="line"><a name="l00407"></a><span class="lineno">  407</span>&#160;{</div><div class="line"><a name="l00408"></a><span class="lineno">  408</span>&#160;  <span class="comment">// PIDs from the base set are in the network from beginning.</span></div><div class="line"><a name="l00409"></a><span class="lineno">  409</span>&#160;  <span class="keyword">set</span>(base);</div><div class="line"><a name="l00410"></a><span class="lineno">  410</span>&#160;</div><div class="line"><a name="l00411"></a><span class="lineno">  411</span>&#160;  watch(std::set&lt;zookeeper
 ::Group::Membership&gt;());</div><div class="line"><a name="l00412"></a><span class="lineno">  412</span>&#160;}</div><div class="line"><a name="l00413"></a><span class="lineno">  413</span>&#160;</div><div class="line"><a name="l00414"></a><span class="lineno">  414</span>&#160;</div><div class="line"><a name="l00415"></a><span class="lineno">  415</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> ZooKeeperNetwork::watch(</div><div class="line"><a name="l00416"></a><span class="lineno">  416</span>&#160;    <span class="keyword">const</span> std::set&lt;zookeeper::Group::Membership&gt;&amp; expected)</div><div class="line"><a name="l00417"></a><span class="lineno">  417</span>&#160;{</div><div class="line"><a name="l00418"></a><span class="lineno">  418</span>&#160;  memberships = <a class="code" href="structgroup.html">group</a>.watch(expected);</div><div class="line"><a name="l00419"></a><span class="lineno">  419</span>&#160;  memberships</div
 ><div class="line"><a name="l00420"></a><span class="lineno">  420</span>&#160;    .<a class="code" href="classprocess_1_1Future.html#a71bde220aed3c725cef2040f63adf42a">onAny</a>(executor.<a class="code" href="classprocess_1_1Executor.html#aa129606e06f0a2cf30f5b198ad826400">defer</a>(<a class="code" href="namespaceprocess_1_1network.html#ad067110a4b38cc83785a43f49bf6c8e2">lambda::bind</a>(&amp;This::watched, <span class="keyword">this</span>, lambda::_1)));</div><div class="line"><a name="l00421"></a><span class="lineno">  421</span>&#160;}</div><div class="line"><a name="l00422"></a><span class="lineno">  422</span>&#160;</div><div class="line"><a name="l00423"></a><span class="lineno">  423</span>&#160;</div><div class="line"><a name="l00424"></a><span class="lineno">  424</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> ZooKeeperNetwork::watched(</div><div class="line"><a name="l00425"></a><span class="lineno">  425</span>&#160;    <span class
 ="keyword">const</span> <a class="code" href="classprocess_1_1Future.html">process::Future</a>&lt;std::set&lt;zookeeper::Group::Membership&gt;&gt;&amp;)</div><div class="line"><a name="l00426"></a><span class="lineno">  426</span>&#160;{</div><div class="line"><a name="l00427"></a><span class="lineno">  427</span>&#160;  <span class="keywordflow">if</span> (memberships.<a class="code" href="classprocess_1_1Future.html#a493227e57f8848e37777b89c0f81e2ec">isFailed</a>()) {</div><div class="line"><a name="l00428"></a><span class="lineno">  428</span>&#160;    <span class="comment">// We can&#39;t do much here, we could try creating another Group but</span></div><div class="line"><a name="l00429"></a><span class="lineno">  429</span>&#160;    <span class="comment">// that might just continue indefinitely, so we fail early</span></div><div class="line"><a name="l00430"></a><span class="lineno">  430</span>&#160;    <span class="comment">// instead. Note that Group handles all retryable/re
 coverable</span></div><div class="line"><a name="l00431"></a><span class="lineno">  431</span>&#160;    <span class="comment">// ZooKeeper errors internally.</span></div><div class="line"><a name="l00432"></a><span class="lineno">  432</span>&#160;    LOG(FATAL) &lt;&lt; <span class="stringliteral">&quot;Failed to watch ZooKeeper group: &quot;</span> &lt;&lt; memberships.<a class="code" href="classprocess_1_1Future.html#ae649c56b07f44c05e4b7aa3620133ff9">failure</a>();</div><div class="line"><a name="l00433"></a><span class="lineno">  433</span>&#160;  }</div><div class="line"><a name="l00434"></a><span class="lineno">  434</span>&#160;</div><div class="line"><a name="l00435"></a><span class="lineno">  435</span>&#160;  <a class="code" href="libprocess_2include_2process_2check_8hpp.html#a55bf53e1f554470600774a6bf0c09140">CHECK_READY</a>(memberships);  <span class="comment">// Not expecting Group to discard futures.</span></div><div class="line"><a name="l00436"></a><span class="line
 no">  436</span>&#160;</div><div class="line"><a name="l00437"></a><span class="lineno">  437</span>&#160;  LOG(INFO) &lt;&lt; <span class="stringliteral">&quot;ZooKeeper group memberships changed&quot;</span>;</div><div class="line"><a name="l00438"></a><span class="lineno">  438</span>&#160;</div><div class="line"><a name="l00439"></a><span class="lineno">  439</span>&#160;  <span class="comment">// Get data for each membership in order to convert them to PIDs.</span></div><div class="line"><a name="l00440"></a><span class="lineno">  440</span>&#160;  std::vector&lt;process::Future&lt;Option&lt;std::string&gt;&gt;&gt; futures;</div><div class="line"><a name="l00441"></a><span class="lineno">  441</span>&#160;</div><div class="line"><a name="l00442"></a><span class="lineno">  442</span>&#160;  <span class="keywordflow">foreach</span> (<span class="keyword">const</span> <a class="code" href="structzookeeper_1_1Group_1_1Membership.html">zookeeper::Group::Membership</a>&amp; membershi
 p, memberships.<a class="code" href="classprocess_1_1Future.html#aa78977d3b585a5f5ccd682c1e9e2ddc4">get</a>()) {</div><div class="line"><a name="l00443"></a><span class="lineno">  443</span>&#160;    futures.push_back(<a class="code" href="structgroup.html">group</a>.data(membership));</div><div class="line"><a name="l00444"></a><span class="lineno">  444</span>&#160;  }</div><div class="line"><a name="l00445"></a><span class="lineno">  445</span>&#160;</div><div class="line"><a name="l00446"></a><span class="lineno">  446</span>&#160;  <a class="code" href="namespaceprocess.html#a871061d70cd1c8bf39df4d1154cd1857">process::collect</a>(futures)</div><div class="line"><a name="l00447"></a><span class="lineno">  447</span>&#160;    .<a class="code" href="classprocess_1_1Future.html#a7818051e0d3d4ef9aa6a25d9246312ea">after</a>(<a class="code" href="classSeconds.html">Seconds</a>(5),</div><div class="line"><a name="l00448"></a><span class="lineno">  448</span>&#160;           [](<a class
 ="code" href="classprocess_1_1Future.html">process::Future</a>&lt;std::vector&lt;<a class="code" href="classOption.html">Option&lt;std::string&gt;</a>&gt;&gt; datas) {</div><div class="line"><a name="l00449"></a><span class="lineno">  449</span>&#160;             <span class="comment">// Handling time outs when collecting membership</span></div><div class="line"><a name="l00450"></a><span class="lineno">  450</span>&#160;             <span class="comment">// data. For now, a timeout is treated as a failure.</span></div><div class="line"><a name="l00451"></a><span class="lineno">  451</span>&#160;             datas.discard();</div><div class="line"><a name="l00452"></a><span class="lineno">  452</span>&#160;             <span class="keywordflow">return</span> <a class="code" href="structprocess_1_1Failure.html">process::Failure</a>(<span class="stringliteral">&quot;Timed out&quot;</span>);</div><div class="line"><a name="l00453"></a><span class="lineno">  453</span>&#160;           }
 )</div><div class="line"><a name="l00454"></a><span class="lineno">  454</span>&#160;    .onAny(executor.<a class="code" href="classprocess_1_1Executor.html#aa129606e06f0a2cf30f5b198ad826400">defer</a>(<a class="code" href="namespaceprocess_1_1network.html#ad067110a4b38cc83785a43f49bf6c8e2">lambda::bind</a>(&amp;This::collected, <span class="keyword">this</span>, lambda::_1)));</div><div class="line"><a name="l00455"></a><span class="lineno">  455</span>&#160;}</div><div class="line"><a name="l00456"></a><span class="lineno">  456</span>&#160;</div><div class="line"><a name="l00457"></a><span class="lineno">  457</span>&#160;</div><div class="line"><a name="l00458"></a><span class="lineno">  458</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> ZooKeeperNetwork::collected(</div><div class="line"><a name="l00459"></a><span class="lineno">  459</span>&#160;    <span class="keyword">const</span> <a class="code" href="classprocess_1_1Future.html">proc
 ess::Future</a>&lt;std::vector&lt;<a class="code" href="classOption.html">Option&lt;std::string&gt;</a>&gt;&gt;&amp; datas)</div><div class="line"><a name="l00460"></a><span class="lineno">  460</span>&#160;{</div><div class="line"><a name="l00461"></a><span class="lineno">  461</span>&#160;  <span class="keywordflow">if</span> (datas.isFailed()) {</div><div class="line"><a name="l00462"></a><span class="lineno">  462</span>&#160;    LOG(WARNING) &lt;&lt; <span class="stringliteral">&quot;Failed to get data for ZooKeeper group members: &quot;</span></div><div class="line"><a name="l00463"></a><span class="lineno">  463</span>&#160;                 &lt;&lt; datas.failure();</div><div class="line"><a name="l00464"></a><span class="lineno">  464</span>&#160;</div><div class="line"><a name="l00465"></a><span class="lineno">  465</span>&#160;    <span class="comment">// Try again later assuming empty group. Note that this does not</span></div><div class="line"><a name="l00466"></a><span 
 class="lineno">  466</span>&#160;    <span class="comment">// remove any of the current group members.</span></div><div class="line"><a name="l00467"></a><span class="lineno">  467</span>&#160;    watch(std::set&lt;zookeeper::Group::Membership&gt;());</div><div class="line"><a name="l00468"></a><span class="lineno">  468</span>&#160;    <span class="keywordflow">return</span>;</div><div class="line"><a name="l00469"></a><span class="lineno">  469</span>&#160;  }</div><div class="line"><a name="l00470"></a><span class="lineno">  470</span>&#160;</div><div class="line"><a name="l00471"></a><span class="lineno">  471</span>&#160;  <a class="code" href="libprocess_2include_2process_2check_8hpp.html#a55bf53e1f554470600774a6bf0c09140">CHECK_READY</a>(datas);  <span class="comment">// Not expecting collect to discard futures.</span></div><div class="line"><a name="l00472"></a><span class="lineno">  472</span>&#160;</div><div class="line"><a name="l00473"></a><span class="lineno">  473</spa
 n>&#160;  std::set&lt;process::UPID&gt; <a class="code" href="namespaceos.html#a42af1cab63434cedf2b698cd6f49f073">pids</a>;</div><div class="line"><a name="l00474"></a><span class="lineno">  474</span>&#160;</div><div class="line"><a name="l00475"></a><span class="lineno">  475</span>&#160;  <span class="keywordflow">foreach</span> (<span class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;std::string&gt;</a>&amp; data, datas.<a class="code" href="classOption.html#a21358442c0fac1cc978a67a9a9089a79">get</a>()) {</div><div class="line"><a name="l00476"></a><span class="lineno">  476</span>&#160;    <span class="comment">// Data could be None if the membership is gone before its</span></div><div class="line"><a name="l00477"></a><span class="lineno">  477</span>&#160;    <span class="comment">// content can be read.</span></div><div class="line"><a name="l00478"></a><span class="lineno">  478</span>&#160;    <span class="keywordflow">if</span> (data.<a class=
 "code" href="classOption.html#a4e3bf8416d95246f43c91f1b5c309323">isSome</a>()) {</div><div class="line"><a name="l00479"></a><span class="lineno">  479</span>&#160;      <a class="code" href="structprocess_1_1UPID.html">process::UPID</a> pid(data.<a class="code" href="classOption.html#a21358442c0fac1cc978a67a9a9089a79">get</a>());</div><div class="line"><a name="l00480"></a><span class="lineno">  480</span>&#160;      CHECK(pid) &lt;&lt; <span class="stringliteral">&quot;Failed to parse &#39;&quot;</span> &lt;&lt; data.<a class="code" href="classOption.html#a21358442c0fac1cc978a67a9a9089a79">get</a>() &lt;&lt; <span class="stringliteral">&quot;&#39;&quot;</span>;</div><div class="line"><a name="l00481"></a><span class="lineno">  481</span>&#160;      pids.insert(pid);</div><div class="line"><a name="l00482"></a><span class="lineno">  482</span>&#160;    }</div><div class="line"><a name="l00483"></a><span class="lineno">  483</span>&#160;  }</div><div class="line"><a name="l00484"></
 a><span class="lineno">  484</span>&#160;</div><div class="line"><a name="l00485"></a><span class="lineno">  485</span>&#160;  LOG(INFO) &lt;&lt; <span class="stringliteral">&quot;ZooKeeper group PIDs: &quot;</span> &lt;&lt; <a class="code" href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(pids);</div><div class="line"><a name="l00486"></a><span class="lineno">  486</span>&#160;</div><div class="line"><a name="l00487"></a><span class="lineno">  487</span>&#160;  <span class="comment">// Update the network. We make sure that the PIDs from the base set</span></div><div class="line"><a name="l00488"></a><span class="lineno">  488</span>&#160;  <span class="comment">// are always in the network.</span></div><div class="line"><a name="l00489"></a><span class="lineno">  489</span>&#160;  <span class="keyword">set</span>(pids | base);</div><div class="line"><a name="l00490"></a><span class="lineno">  490</span>&#160;</div><div class="line"><a name="l00491"></a><span c
 lass="lineno">  491</span>&#160;  watch(memberships.<a class="code" href="classprocess_1_1Future.html#aa78977d3b585a5f5ccd682c1e9e2ddc4">get</a>());</div><div class="line"><a name="l00492"></a><span class="lineno">  492</span>&#160;}</div><div class="line"><a name="l00493"></a><span class="lineno">  493</span>&#160;</div><div class="line"><a name="l00494"></a><span class="lineno">  494</span>&#160;<span class="preprocessor">#endif // __NETWORK_HPP__</span></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 &amp;prefix=&quot;&quot;)</div><div class="ttdoc">Returns &amp;#39;prefix(N)&amp;#39; where N represents the number of instances where the same prefix (wrt...</div></div>
+<a href="src_2log_2network_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>&#160;<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>&#160;<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>&#160;<span class="comment">// distributed with this work for additional information</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<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>&#160;<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>&#160;<span class="comment">// &quot;License&quot;); you may not use this file except in compliance</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<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>&#160;<span class="comment">//
  distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 

<TRUNCATED>

[48/50] mesos-site git commit: Updated the website built from mesos SHA: 7c9c72d.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/3rdparty_2libprocess_2include_2process_2io_8hpp.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/3rdparty_2libprocess_2include_2process_2io_8hpp.html b/content/api/latest/c++/3rdparty_2libprocess_2include_2process_2io_8hpp.html
index 3b57e0d..d7f7c34 100644
--- a/content/api/latest/c++/3rdparty_2libprocess_2include_2process_2io_8hpp.html
+++ b/content/api/latest/c++/3rdparty_2libprocess_2include_2process_2io_8hpp.html
@@ -72,6 +72,12 @@ Namespaces</h2></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:a9db94d84fb44b21fb669ade7c6a82114"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classTry.html">Try</a>&lt; <a class="el" href="structNothing.html">Nothing</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceprocess_1_1io.html#a9db94d84fb44b21fb669ade7c6a82114">process::io::prepare_async</a> (<a class="el" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> fd)</td></tr>
+<tr class="memdesc:a9db94d84fb44b21fb669ade7c6a82114"><td class="mdescLeft">&#160;</td><td class="mdescRight">Prepares a file descriptor to be ready for asynchronous IO.  <a href="namespaceprocess_1_1io.html#a9db94d84fb44b21fb669ade7c6a82114">More...</a><br /></td></tr>
+<tr class="separator:a9db94d84fb44b21fb669ade7c6a82114"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ada6541d78cad2ecc225be8a26662c748"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classTry.html">Try</a>&lt; bool &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceprocess_1_1io.html#ada6541d78cad2ecc225be8a26662c748">process::io::is_async</a> (<a class="el" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> fd)</td></tr>
+<tr class="memdesc:ada6541d78cad2ecc225be8a26662c748"><td class="mdescLeft">&#160;</td><td class="mdescRight">Checks if <code><a class="el" href="namespaceprocess_1_1io.html#a9db94d84fb44b21fb669ade7c6a82114" title="Prepares a file descriptor to be ready for asynchronous IO. ">io::prepare_async</a></code> has been called on the file descriptor.  <a href="namespaceprocess_1_1io.html#ada6541d78cad2ecc225be8a26662c748">More...</a><br /></td></tr>
+<tr class="separator:ada6541d78cad2ecc225be8a26662c748"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:af71c45e0a85e21f6b39060f4e716cebf"><td class="memItemLeft" align="right" valign="top">Future&lt; short &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceprocess_1_1io.html#af71c45e0a85e21f6b39060f4e716cebf">process::io::poll</a> (<a class="el" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> fd, short events)</td></tr>
 <tr class="memdesc:af71c45e0a85e21f6b39060f4e716cebf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the events (a subset of the events specified) that can be performed on the specified file descriptor without blocking.  <a href="namespaceprocess_1_1io.html#af71c45e0a85e21f6b39060f4e716cebf">More...</a><br /></td></tr>
 <tr class="separator:af71c45e0a85e21f6b39060f4e716cebf"><td class="memSeparator" colspan="2">&#160;</td></tr>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/3rdparty_2libprocess_2include_2process_2io_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/3rdparty_2libprocess_2include_2process_2io_8hpp_source.html b/content/api/latest/c++/3rdparty_2libprocess_2include_2process_2io_8hpp_source.html
index ce0ffd0..bd33e14 100644
--- a/content/api/latest/c++/3rdparty_2libprocess_2include_2process_2io_8hpp_source.html
+++ b/content/api/latest/c++/3rdparty_2libprocess_2include_2process_2io_8hpp_source.html
@@ -52,18 +52,21 @@
 <div class="title">io.hpp</div>  </div>
 </div><!--header-->
 <div class="contents">
-<a href="3rdparty_2libprocess_2include_2process_2io_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>&#160;<span class="comment">// Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<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>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<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>&#160;<span class="comment">// distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<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>&#160;<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>&#160;<span class="comment">// limitations under the License</span></div><div class="line"><a name="l00012"></a><span class="lineno">  
  12</span>&#160;</div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="preprocessor">#ifndef __PROCESS_IO_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="preprocessor">#define __PROCESS_IO_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;</div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="preprocessor">#include &lt;cstring&gt;</span> <span class="comment">// For size_t.</span></div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;</div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="future_8hpp.html">process/future.hpp</a>&gt;</span><
 /div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;</div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="nothing_8hpp.html">stout/nothing.hpp</a>&gt;</span></div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="preprocessor">#ifdef __WINDOWS__</span></div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html">stout/windows.hpp</a>&gt;</span></div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="preprocessor">#endif // __WINDOWS__</span></div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;</div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<span class="keyword">namespace </span><a cl
 ass="code" href="namespaceprocess.html">process</a> {</div><div class="line"><a name="l00027"></a><span class="lineno"><a class="line" href="namespaceprocess_1_1io.html">   27</a></span>&#160;<span class="keyword">namespace </span>io {</div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;</div><div class="line"><a name="l00034"></a><span class="lineno"><a class="line" href="namespaceprocess_1_1io.html#aca1f059ca9f0d7360631c621debeb879">   34</a></span>&#160;<span class="keyword">const</span> <span class="keywordtype">short</span> <a class="code" href="namespaceprocess_1_1io.html#aca1f059ca9f0d7360631c621debeb879">READ</a> = 0x01;</div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="namespaceprocess_1_1io.html#ab005316d71b45c5b05de0a6234c6f8fc">   39</a></span>&#160;<span class="keyword">const</span> <span class="keywordtype">short</span>
  <a class="code" href="namespaceprocess_1_1io.html#ab005316d71b45c5b05de0a6234c6f8fc">WRITE</a> = 0x02;</div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;</div><div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="namespaceprocess_1_1io.html#a34d62916736c1dfebd1585cf51f19d0c">   46</a></span>&#160;<span class="keyword">const</span> <span class="keywordtype">size_t</span> <a class="code" href="namespaceprocess_1_1io.html#a34d62916736c1dfebd1585cf51f19d0c">BUFFERED_READ_SIZE</a> = 16*4096;</div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;</div><div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;<span class="comment">// TODO(benh): Add a version which takes multiple file descriptors.</span></div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;<a class="code" href="classprocess_1_1Future.html">Future&lt;short&gt;</a> <a class="code" href=
 "namespaceprocess_1_1io.html#af71c45e0a85e21f6b39060f4e716cebf">poll</a>(<a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> fd, <span class="keywordtype">short</span> events);</div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;</div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;</div><div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;<a class="code" href="classprocess_1_1Future.html">Future&lt;size_t&gt;</a> <a class="code" href="namespaceprocess_1_1io.html#a4c34d22e475e29f12ac739921dcc580f">read</a>(<a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> fd, <span class="keywordtype">void</span>* data, <span class="keywordtype">size_t</span> <a class="code" href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">size</a>);</div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;</div><div cla
 ss="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;</div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;<a class="code" href="classprocess_1_1Future.html">Future&lt;std::string&gt;</a> <a class="code" href="namespaceprocess_1_1io.html#a4c34d22e475e29f12ac739921dcc580f">read</a>(<a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> fd);</div><div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;</div><div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;</div><div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;<a class="code" href="classprocess_1_1Future.html">Future&lt;size_t&gt;</a> <a class="code" href="namespaceprocess_1_1io.html#a49105dc036ad04225c92bd673da5ce39">write</a>(<a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> fd, <span class="keyword">const</span> <span class="keywordtype">void
 </span>* data, <span class="keywordtype">size_t</span> <a class="code" href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">size</a>);</div><div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;</div><div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;</div><div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;<a class="code" href="classprocess_1_1Future.html">Future&lt;Nothing&gt;</a> <a class="code" href="namespaceprocess_1_1io.html#a49105dc036ad04225c92bd673da5ce39">write</a>(<a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> fd, <span class="keyword">const</span> std::string&amp; data);</div><div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;</div><div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;<a class="code" href="classprocess_1_1Future.html">Future&lt;Nothing&gt;</a> <a class="code" href="namespacepr
 ocess_1_1io.html#ab9c4a52a88fcc9983438e391643424ca">redirect</a>(</div><div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;    <a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> from,</div><div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;    <a class="code" href="classOption.html">Option&lt;int_fd&gt;</a> to,</div><div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;    <span class="keywordtype">size_t</span> chunk = 4096,</div><div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;    <span class="keyword">const</span> std::vector&lt;lambda::function&lt;<span class="keywordtype">void</span>(<span class="keyword">const</span> std::string&amp;)&gt;&gt;&amp; hooks = {});</div><div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;</div><div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;} <span class=
 "comment">// namespace io {</span></div><div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;} <span class="comment">// namespace process {</span></div><div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;</div><div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;<span class="preprocessor">#endif // __PROCESS_IO_HPP__</span></div><div class="ttc" id="namespaceprocess_1_1io_html_aca1f059ca9f0d7360631c621debeb879"><div class="ttname"><a href="namespaceprocess_1_1io.html#aca1f059ca9f0d7360631c621debeb879">process::io::READ</a></div><div class="ttdeci">const short READ</div><div class="ttdoc">A possible event while polling. </div><div class="ttdef"><b>Definition:</b> io.hpp:34</div></div>
+<a href="3rdparty_2libprocess_2include_2process_2io_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>&#160;<span class="comment">// Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<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>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<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>&#160;<span class="comment">// distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<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>&#160;<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>&#160;<span class="comment">// limitations under the License</span></div><div class="line"><a name="l00012"></a><span class="lineno">  
  12</span>&#160;</div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="preprocessor">#ifndef __PROCESS_IO_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="preprocessor">#define __PROCESS_IO_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;</div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="preprocessor">#include &lt;cstring&gt;</span> <span class="comment">// For size_t.</span></div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;</div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="future_8hpp.html">process/future.hpp</a>&gt;</span><
 /div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;</div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="nothing_8hpp.html">stout/nothing.hpp</a>&gt;</span></div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="preprocessor">#ifdef __WINDOWS__</span></div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html">stout/windows.hpp</a>&gt;</span></div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="preprocessor">#endif // __WINDOWS__</span></div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;</div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<span class="keyword">namespace </span><a cl
 ass="code" href="namespaceprocess.html">process</a> {</div><div class="line"><a name="l00027"></a><span class="lineno"><a class="line" href="namespaceprocess_1_1io.html">   27</a></span>&#160;<span class="keyword">namespace </span>io {</div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;</div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="preprocessor">#ifndef ENABLE_LIBWINIO</span></div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;</div><div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="namespaceprocess_1_1io.html#aca1f059ca9f0d7360631c621debeb879">   35</a></span>&#160;<span class="keyword">const</span> <span class="keywordtype">short</span> <a class="code" href="namespaceprocess_1_1io.html#aca1f059ca9f0d7360631c621debeb879">READ</a> = 0x01;</div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;</div><div class="lin
 e"><a name="l00040"></a><span class="lineno"><a class="line" href="namespaceprocess_1_1io.html#ab005316d71b45c5b05de0a6234c6f8fc">   40</a></span>&#160;<span class="keyword">const</span> <span class="keywordtype">short</span> <a class="code" href="namespaceprocess_1_1io.html#ab005316d71b45c5b05de0a6234c6f8fc">WRITE</a> = 0x02;</div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;<span class="preprocessor">#endif // ENABLE_LIBWINIO</span></div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;</div><div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="namespaceprocess_1_1io.html#a34d62916736c1dfebd1585cf51f19d0c">   48</a></span>&#160;<span class="keyword">const</span> <span class="keywordtype">size_t</span> <a class="code" href="namespaceprocess_1_1io.html#a34d62916736c1dfebd1585cf51f19d0c">BUFFERED_READ_SIZE</a> = 16*4096;</div><div class="line"><a name="l00049"></a><span class="lineno">   49</spa
 n>&#160;</div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;<a class="code" href="classTry.html">Try&lt;Nothing&gt;</a> <a class="code" href="namespaceprocess_1_1io.html#a9db94d84fb44b21fb669ade7c6a82114">prepare_async</a>(<a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> fd);</div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;</div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;</div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;<a class="code" href="classTry.html">Try&lt;bool&gt;</a> <a class="code" href="namespaceprocess_1_1io.html#ada6541d78cad2ecc225be8a26662c748">is_async</a>(<a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> fd);</div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;</div><div class="line"><a name="l00074"></a><span class="lineno">   74
 </span>&#160;</div><div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;<span class="preprocessor">#ifndef ENABLE_LIBWINIO</span></div><div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;</div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;<span class="comment">// TODO(benh): Add a version which takes multiple file descriptors.</span></div><div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;<a class="code" href="classprocess_1_1Future.html">Future&lt;short&gt;</a> <a class="code" href="namespaceprocess_1_1io.html#af71c45e0a85e21f6b39060f4e716cebf">poll</a>(<a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> fd, <span class="keywordtype">short</span> events);</div><div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;<span class="preprocessor">#endif // ENABLE_LIBWINIO</span></div><div class="line"><a name="l00086"></a><
 span class="lineno">   86</span>&#160;</div><div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;</div><div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;<a class="code" href="classprocess_1_1Future.html">Future&lt;size_t&gt;</a> <a class="code" href="namespaceprocess_1_1io.html#a4c34d22e475e29f12ac739921dcc580f">read</a>(<a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> fd, <span class="keywordtype">void</span>* data, <span class="keywordtype">size_t</span> <a class="code" href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">size</a>);</div><div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;</div><div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;</div><div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;<a class="code" href="classprocess_1_1Future.html">Future&lt;std::string&gt;</a> <a class="code" href=
 "namespaceprocess_1_1io.html#a4c34d22e475e29f12ac739921dcc580f">read</a>(<a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> fd);</div><div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;</div><div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;</div><div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;<a class="code" href="classprocess_1_1Future.html">Future&lt;size_t&gt;</a> <a class="code" href="namespaceprocess_1_1io.html#a49105dc036ad04225c92bd673da5ce39">write</a>(<a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> fd, <span class="keyword">const</span> <span class="keywordtype">void</span>* data, <span class="keywordtype">size_t</span> <a class="code" href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">size</a>);</div><div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;</div><div class="line"><
 a name="l00131"></a><span class="lineno">  131</span>&#160;</div><div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;<a class="code" href="classprocess_1_1Future.html">Future&lt;Nothing&gt;</a> <a class="code" href="namespaceprocess_1_1io.html#a49105dc036ad04225c92bd673da5ce39">write</a>(<a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> fd, <span class="keyword">const</span> std::string&amp; data);</div><div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;</div><div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;<a class="code" href="classprocess_1_1Future.html">Future&lt;Nothing&gt;</a> <a class="code" href="namespaceprocess_1_1io.html#ab9c4a52a88fcc9983438e391643424ca">redirect</a>(</div><div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;    <a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> from,</div><div c
 lass="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;    <a class="code" href="classOption.html">Option&lt;int_fd&gt;</a> to,</div><div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;    <span class="keywordtype">size_t</span> chunk = 4096,</div><div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;    <span class="keyword">const</span> std::vector&lt;lambda::function&lt;<span class="keywordtype">void</span>(<span class="keyword">const</span> std::string&amp;)&gt;&gt;&amp; hooks = {});</div><div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;</div><div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;} <span class="comment">// namespace io {</span></div><div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;} <span class="comment">// namespace process {</span></div><div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;<
 /div><div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;<span class="preprocessor">#endif // __PROCESS_IO_HPP__</span></div><div class="ttc" id="namespaceprocess_1_1io_html_aca1f059ca9f0d7360631c621debeb879"><div class="ttname"><a href="namespaceprocess_1_1io.html#aca1f059ca9f0d7360631c621debeb879">process::io::READ</a></div><div class="ttdeci">const short READ</div><div class="ttdoc">A possible event while polling. </div><div class="ttdef"><b>Definition:</b> io.hpp:35</div></div>
 <div class="ttc" id="classOption_html"><div class="ttname"><a href="classOption.html">Option&lt; int_fd &gt;</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&lt; Bytes &gt; size(const std::string &amp;path, const FollowSymlink follow=FollowSymlink::FOLLOW_SYMLINK)</div><div class="ttdef"><b>Definition:</b> stat.hpp:121</div></div>
-<div class="ttc" id="namespaceprocess_1_1io_html_a34d62916736c1dfebd1585cf51f19d0c"><div class="ttname"><a href="namespaceprocess_1_1io.html#a34d62916736c1dfebd1585cf51f19d0c">process::io::BUFFERED_READ_SIZE</a></div><div class="ttdeci">const size_t BUFFERED_READ_SIZE</div><div class="ttdoc">Buffered read chunk size. </div><div class="ttdef"><b>Definition:</b> io.hpp:46</div></div>
+<div class="ttc" id="namespaceprocess_1_1io_html_a34d62916736c1dfebd1585cf51f19d0c"><div class="ttname"><a href="namespaceprocess_1_1io.html#a34d62916736c1dfebd1585cf51f19d0c">process::io::BUFFERED_READ_SIZE</a></div><div class="ttdeci">const size_t BUFFERED_READ_SIZE</div><div class="ttdoc">Buffered read chunk size. </div><div class="ttdef"><b>Definition:</b> io.hpp:48</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="namespaceprocess_1_1io_html_a9db94d84fb44b21fb669ade7c6a82114"><div class="ttname"><a href="namespaceprocess_1_1io.html#a9db94d84fb44b21fb669ade7c6a82114">process::io::prepare_async</a></div><div class="ttdeci">Try&lt; Nothing &gt; prepare_async(int_fd fd)</div><div class="ttdoc">Prepares a file descriptor to be ready for asynchronous IO. </div></div>
 <div class="ttc" id="namespaceprocess_1_1io_html_af71c45e0a85e21f6b39060f4e716cebf"><div class="ttname"><a href="namespaceprocess_1_1io.html#af71c45e0a85e21f6b39060f4e716cebf">process::io::poll</a></div><div class="ttdeci">Future&lt; short &gt; poll(int_fd fd, short events)</div><div class="ttdoc">Returns the events (a subset of the events specified) that can be performed on the specified file des...</div></div>
 <div class="ttc" id="namespaceprocess_1_1io_html_ab9c4a52a88fcc9983438e391643424ca"><div class="ttname"><a href="namespaceprocess_1_1io.html#ab9c4a52a88fcc9983438e391643424ca">process::io::redirect</a></div><div class="ttdeci">Future&lt; Nothing &gt; redirect(int_fd from, Option&lt; int_fd &gt; to, size_t chunk=4096, const std::vector&lt; lambda::function&lt; void(const std::string &amp;)&gt;&gt; &amp;hooks={})</div><div class="ttdoc">Redirect output from the &amp;#39;from&amp;#39; file descriptor to the &amp;#39;to&amp;#39; file descriptor (or /dev/null if &amp;#39;to&amp;#39; is ...</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="namespaceprocess_1_1io_html_a49105dc036ad04225c92bd673da5ce39"><div class="ttname"><a href="namespaceprocess_1_1io.html#a49105dc036ad04225c92bd673da5ce39">process::io::write</a></div><div class="ttdeci">Future&lt; size_t &gt; write(int_fd fd, const void *data, size_t size)</div><div class="ttdoc">Performs a single non-blocking write by polling on the specified file descriptor until data can be be...</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="namespaceprocess_1_1io_html_ab005316d71b45c5b05de0a6234c6f8fc"><div class="ttname"><a href="namespaceprocess_1_1io.html#ab005316d71b45c5b05de0a6234c6f8fc">process::io::WRITE</a></div><div class="ttdeci">const short WRITE</div><div class="ttdoc">A possible event while polling. </div><div class="ttdef"><b>Definition:</b> io.hpp:39</div></div>
+<div class="ttc" id="namespaceprocess_1_1io_html_ab005316d71b45c5b05de0a6234c6f8fc"><div class="ttname"><a href="namespaceprocess_1_1io.html#ab005316d71b45c5b05de0a6234c6f8fc">process::io::WRITE</a></div><div class="ttdeci">const short WRITE</div><div class="ttdoc">A possible event while polling. </div><div class="ttdef"><b>Definition:</b> io.hpp:40</div></div>
 <div class="ttc" id="future_8hpp_html"><div class="ttname"><a href="future_8hpp.html">future.hpp</a></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:48</div></div>
+<div class="ttc" id="namespaceprocess_1_1io_html_ada6541d78cad2ecc225be8a26662c748"><div class="ttname"><a href="namespaceprocess_1_1io.html#ada6541d78cad2ecc225be8a26662c748">process::io::is_async</a></div><div class="ttdeci">Try&lt; bool &gt; is_async(int_fd fd)</div><div class="ttdoc">Checks if io::prepare_async has been called on the file descriptor. </div></div>
 <div class="ttc" id="namespaceprocess_1_1io_html_a4c34d22e475e29f12ac739921dcc580f"><div class="ttname"><a href="namespaceprocess_1_1io.html#a4c34d22e475e29f12ac739921dcc580f">process::io::read</a></div><div class="ttdeci">Future&lt; size_t &gt; read(int_fd fd, void *data, size_t size)</div><div class="ttdoc">Performs a single non-blocking read by polling on the specified file descriptor until any data can be...</div></div>
 <div class="ttc" id="int__fd_8hpp_html_aea4dbda01c90455f158ffa9b924c2f07"><div class="ttname"><a href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a></div><div class="ttdeci">int int_fd</div><div class="ttdef"><b>Definition:</b> int_fd.hpp:35</div></div>
 <div class="ttc" id="classprocess_1_1Future_html"><div class="ttname"><a href="classprocess_1_1Future.html">process::Future</a></div><div class="ttdef"><b>Definition:</b> future.hpp:58</div></div>


[46/50] mesos-site git commit: Updated the website built from mesos SHA: 7c9c72d.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/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 fa967f9..f862e4a 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
@@ -110,7 +110,7 @@
 <div class="ttc" id="structos_1_1Memory_html_ab447e8e30892e0d5f0e3a976e6d80cde"><div class="ttname"><a href="structos_1_1Memory.html#ab447e8e30892e0d5f0e3a976e6d80cde">os::Memory::free</a></div><div class="ttdeci">Bytes free</div><div class="ttdef"><b>Definition:</b> os.hpp:37</div></div>
 <div class="ttc" id="namespaceflags_html"><div class="ttname"><a href="namespaceflags.html">flags</a></div><div class="ttdef"><b>Definition:</b> parse.hpp:33</div></div>
 <div class="ttc" id="namespaceos_html_a42af1cab63434cedf2b698cd6f49f073"><div class="ttname"><a href="namespaceos.html#a42af1cab63434cedf2b698cd6f49f073">os::pids</a></div><div class="ttdeci">Try&lt; std::set&lt; pid_t &gt; &gt; pids()</div><div class="ttdef"><b>Definition:</b> freebsd.hpp:62</div></div>
-<div class="ttc" id="namespaceprocess_1_1internal_html_a902e2646d88c41ce674a3009cafe0aad"><div class="ttname"><a href="namespaceprocess_1_1internal.html#a902e2646d88c41ce674a3009cafe0aad">process::internal::childMain</a></div><div class="ttdeci">int childMain(const std::string &amp;path, char **argv, char **envp, const InputFileDescriptors &amp;stdinfds, const OutputFileDescriptors &amp;stdoutfds, const OutputFileDescriptors &amp;stderrfds, bool blocking, int pipes[2], const std::vector&lt; Subprocess::ChildHook &gt; &amp;child_hooks)</div><div class="ttdef"><b>Definition:</b> subprocess_posix.hpp:106</div></div>
+<div class="ttc" id="namespaceprocess_1_1internal_html_a902e2646d88c41ce674a3009cafe0aad"><div class="ttname"><a href="namespaceprocess_1_1internal.html#a902e2646d88c41ce674a3009cafe0aad">process::internal::childMain</a></div><div class="ttdeci">int childMain(const std::string &amp;path, char **argv, char **envp, const InputFileDescriptors &amp;stdinfds, const OutputFileDescriptors &amp;stdoutfds, const OutputFileDescriptors &amp;stderrfds, bool blocking, int pipes[2], const std::vector&lt; Subprocess::ChildHook &gt; &amp;child_hooks)</div><div class="ttdef"><b>Definition:</b> subprocess.hpp:106</div></div>
 <div class="ttc" id="classos_1_1Stack_html"><div class="ttname"><a href="classos_1_1Stack.html">os::Stack</a></div><div class="ttdef"><b>Definition:</b> linux.hpp:54</div></div>
 </div><!-- fragment --></div><!-- contents -->
 <!-- start footer part -->

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/3rdparty_2stout_2include_2stout_2os_2windows_2read_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/3rdparty_2stout_2include_2stout_2os_2windows_2read_8hpp_source.html b/content/api/latest/c++/3rdparty_2stout_2include_2stout_2os_2windows_2read_8hpp_source.html
index f66fc5d..7aac325 100644
--- a/content/api/latest/c++/3rdparty_2stout_2include_2stout_2os_2windows_2read_8hpp_source.html
+++ b/content/api/latest/c++/3rdparty_2stout_2include_2stout_2os_2windows_2read_8hpp_source.html
@@ -52,7 +52,7 @@
 <div class="title">read.hpp</div>  </div>
 </div><!--header-->
 <div class="contents">
-<a href="3rdparty_2stout_2include_2stout_2os_2windows_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>&#160;<span class="comment">// Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<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>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<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>&#160;<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>&#160;<span class="comment">// distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<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>&#160;<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>&#160;<span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="line
 no">   12</span>&#160;</div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="preprocessor">#ifndef __STOUT_OS_WINDOWS_READ_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="preprocessor">#define __STOUT_OS_WINDOWS_READ_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;</div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="result_8hpp.html">stout/result.hpp</a>&gt;</span></div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="unreachable_8hpp.html">stout/unreachable.hpp</a>&gt;</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="3rdparty_2stout_2include_2stout_2wi
 ndows_8hpp.html">stout/windows.hpp</a>&gt;</span></div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="overlapped_8hpp.html">stout/internal/windows/overlapped.hpp</a>&gt;</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;</div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="int__fd_8hpp.html">stout/os/int_fd.hpp</a>&gt;</span></div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="stout_2include_2stout_2os_2socket_8hpp.html">stout/os/socket.hpp</a>&gt;</span></div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;</div><div class="line"><a name="l00025"></a><span c
 lass="lineno">   25</span>&#160;<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>&#160;</div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="comment">// Asynchronous read on a overlapped int_fd. Returns `Error` on fatal errors,</span></div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="comment">// `None()` on a successful pending IO operation or number of bytes read on a</span></div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="comment">// successful IO operation that finished immediately.</span></div><div class="line"><a name="l00030"></a><span class="lineno"><a class="line" href="namespaceos.html#a00b6398808bc7afef46f705c1f92a2fe">   30</a></span>&#160;<span class="keyword">inline</span> <a class="code" href="classResult.html">Result&lt;
 size_t&gt;</a> <a class="code" href="namespaceos.html#a00b6398808bc7afef46f705c1f92a2fe">read_async</a>(</div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;    <span class="keyword">const</span> <a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a>&amp; fd,</div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;    <span class="keywordtype">void</span>* data,</div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;    <span class="keywordtype">size_t</span> <a class="code" href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">size</a>,</div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;    OVERLAPPED* overlapped)</div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;{</div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;  CHECK_LE(size, UINT_MAX);</div><div class="
 line"><a name="l00037"></a><span class="lineno">   37</span>&#160;</div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;  <span class="keywordflow">switch</span> (fd.type()) {</div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;    <span class="keywordflow">case</span> <a class="code" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5ad09c4cb1265f1772bb757a7af277b49f">WindowsFD::Type::HANDLE</a>: {</div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;      DWORD bytes;</div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;      <span class="keyword">const</span> <span class="keywordtype">bool</span> success =</div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;        ::ReadFile(fd, data, static_cast&lt;DWORD&gt;(size), &amp;bytes, overlapped);</div><div class="line"><a name="l00043"></a><span class="lineno">   43</span
 >&#160;</div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;      <span class="comment">// On failure, there are two EOF cases for reads:</span></div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;      <span class="comment">//   1) ERROR_BROKEN_PIPE: The write end is closed and there is no data.</span></div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;      <span class="comment">//   2) ERROR_HANDLE_EOF: We hit the EOF for an asynchronous file handle.</span></div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;      <span class="keyword">const</span> DWORD errorCode = ::GetLastError();</div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;      <span class="keywordflow">if</span> (success == FALSE &amp;&amp;</div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;          (errorCode == ERROR_BROKEN_PIPE
  || errorCode == ERROR_HANDLE_EOF)) {</div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;        <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;      }</div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;</div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;      <a class="code" href="namespaceinternal_1_1windows.html#a4ed4d1bae6b01fb85f8e6fad0b10599d">return ::internal::windows::process_async_io_result</a>(success, bytes);</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>&#160;    <span class="keywordflow">case</span> <a class="code" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5a75fbea08c09e684e6b3f3961761354fa">WindowsFD::Type::SOCKET</a>: {</div><div class="line"><a name="l000
 56"></a><span class="lineno">   56</span>&#160;      static_assert(</div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;          std::is_same&lt;OVERLAPPED, WSAOVERLAPPED&gt;::value,</div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;          <span class="stringliteral">&quot;Expected `WSAOVERLAPPED` to be of type `OVERLAPPED`.&quot;</span>);</div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;</div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;      <span class="comment">// Note that it&#39;s okay to allocate this on the stack, since the WinSock</span></div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;      <span class="comment">// providers must copy the WSABUF to their internal buffers. See</span></div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;      <span class="comment">// https://msdn
 .microsoft.com/en-us/library/windows/desktop/ms741688(v=vs.85).aspx // NOLINT(whitespace/line_length)</span></div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;      WSABUF buf = {</div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;        <span class="keyword">static_cast&lt;</span>u_long<span class="keyword">&gt;</span>(<a class="code" href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">size</a>),</div><div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;        static_cast&lt;char*&gt;(data)</div><div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;      };</div><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;</div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;      DWORD bytes;</div><div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;      DWORD <a class="code" href=
 "namespaceflags.html">flags</a> = 0;</div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;      <span class="keyword">const</span> <span class="keywordtype">int</span> result =</div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;        ::WSARecv(fd, &amp;buf, 1, &amp;bytes, &amp;flags, overlapped, <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;</div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;      <a class="code" href="namespaceinternal_1_1windows.html#a4ed4d1bae6b01fb85f8e6fad0b10599d">return ::internal::windows::process_async_io_result</a>(result == 0, bytes);</div><div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;    }</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>&#1
 60;</div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;  <a class="code" href="unreachable_8hpp.html#a0bc63b24b654ca433be7b97a3edde132">UNREACHABLE</a>();</div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;}</div><div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;</div><div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;</div><div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;<span class="comment">// Synchronous reads on any int_fd. Returns -1 on error and</span></div><div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;<span class="comment">// number of bytes read on success.</span></div><div class="line"><a name="l00083"></a><span class="lineno"><a class="line" href="namespaceos.html#a7e99bac0fb06315c051358c7916fe692">   83</a></span>&#160;<span class="keyword">inline</span> <a class="code" href="3rdparty_2stout_2i
 nclude_2stout_2windows_8hpp.html#a894c4d58faeee7675b9e7e8244de1386">ssize_t</a> <a class="code" href="namespaceos.html#aa1d97ff0a93229e1fe6b33e3e2d567f7">read</a>(<span class="keyword">const</span> <a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a>&amp; fd, <span class="keywordtype">void</span>* data, <span class="keywordtype">size_t</span> <a class="code" href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">size</a>)</div><div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;{</div><div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;  CHECK_LE(size, UINT_MAX);</div><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;</div><div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;  <span class="keywordflow">switch</span> (fd.type()) {</div><div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;    <span class="keywordf
 low">case</span> <a class="code" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5ad09c4cb1265f1772bb757a7af277b49f">WindowsFD::Type::HANDLE</a>: {</div><div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;      <span class="comment">// Handle non-overlapped case. We just use the regular `ReadFile` since</span></div><div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;      <span class="comment">// seekable overlapped files require an offset, which we don&#39;t track.</span></div><div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;      <span class="keywordflow">if</span> (!fd.is_overlapped()) {</div><div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;        DWORD bytes;</div><div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;        <span class="keyword">const</span> BOOL result =</div><div class="line"><a name="l00094"></a><span class="l
 ineno">   94</span>&#160;          ::ReadFile(fd, data, static_cast&lt;DWORD&gt;(size), &amp;bytes, <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;</div><div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;        <span class="keywordflow">if</span> (result == FALSE) {</div><div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;          <span class="comment">// The pipe &quot;breaks&quot; when the other process closes its handle, but we</span></div><div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;          <span class="comment">// still have the data and therefore do not want to return an error.</span></div><div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;          <span class="keywordflow">if</span> (::GetLastError() != ERROR_BROKEN_PIPE) {</div><div class="line"><a name="l00100"></a><span class="lineno
 ">  100</span>&#160;            <span class="comment">// Indicates an error, but we can&#39;t return a `WindowsError`.</span></div><div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;            <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;          }</div><div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;        }</div><div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;</div><div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;        <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a894c4d58faeee7675b9e7e8244de1386">ssize_t</a><span class="keyword">&gt;</span>(bytes);</div><div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;      }</div><div class="line"><a name="l
 00107"></a><span class="lineno">  107</span>&#160;</div><div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;      <span class="comment">// Asynchronous handle, we can use the `read_async` function</span></div><div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;      <span class="comment">// and then wait on the overlapped object for a synchronous read.</span></div><div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;      <a class="code" href="classTry.html">Try&lt;OVERLAPPED&gt;</a> overlapped_ =</div><div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;        <a class="code" href="namespaceinternal_1_1windows.html#a388bd9a30ab487f5d035e542187e379a">::internal::windows::init_overlapped_for_sync_io</a>();</div><div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;</div><div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;      <span 
 class="keywordflow">if</span> (overlapped_.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;        <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;      }</div><div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;</div><div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;      OVERLAPPED overlapped = overlapped_.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>();</div><div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;      <a class="code" href="classResult.html">Result&lt;size_t&gt;</a> result = <a class="code" href="namespaceos.html#a00b6398808bc7afef46f705c1f92a2fe">read_async</a>(fd, data, size, &amp;overlapped);</div><div class="line"><a name="l00119"></a><span class="lineno
 ">  119</span>&#160;</div><div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;      <span class="keywordflow">if</span> (result.<a class="code" href="classResult.html#aeca16ad17d299ad885c9b46c83b12a3d">isError</a>()) {</div><div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;        <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;      }</div><div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;</div><div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;      <span class="keywordflow">if</span> (result.<a class="code" href="classResult.html#a85eaa52037223d71092e65701c166562">isSome</a>()) {</div><div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;        <span class="keywordflow">return</span> result.<a class="code" href="classResult.html#aedf79f3b14dcda5791b84a64ada4d412">get</a>
 ();</div><div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;      }</div><div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;</div><div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;      <span class="comment">// IO is pending, so wait for the overlapped object.</span></div><div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;      DWORD bytes;</div><div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;      <span class="keyword">const</span> BOOL wait_success =</div><div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;        ::GetOverlappedResult(fd, &amp;overlapped, &amp;bytes, TRUE);</div><div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;</div><div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;      <span class="keywordflow">if</span> (wait_success == TRUE) {</div><div clas
 s="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;        <span class="keywordflow">return</span> bytes;</div><div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;      }</div><div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;</div><div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;      <span class="comment">// On failure, there are two EOF cases for reads:</span></div><div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;      <span class="comment">//   1) ERROR_BROKEN_PIPE: The write end is closed and there is no data.</span></div><div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;      <span class="comment">//   2) ERROR_HANDLE_EOF: We hit the EOF for an asynchronous file handle.</span></div><div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;      <span class="keyword">const</span> DWORD <a class="code" h
 ref="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#ae58e703656ab4a1bd5d9870441236727">error</a> = ::GetLastError();</div><div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;      <span class="keywordflow">if</span> (error == ERROR_BROKEN_PIPE || error == ERROR_HANDLE_EOF) {</div><div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;        <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;      }</div><div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;</div><div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;      <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;    }</div><div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;    <span class="keywordflow">case</span> <a class="code" href="classos_
 1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5a75fbea08c09e684e6b3f3961761354fa">WindowsFD::Type::SOCKET</a>: {</div><div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;      <a class="code" href="namespacenet.html#ae1804e10c81f5743b459eeae1f6a701a">return ::recv</a>(fd, (<span class="keywordtype">char</span>*)data, static_cast&lt;unsigned int&gt;(size), 0);</div><div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;    }</div><div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;  }</div><div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;</div><div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;  <a class="code" href="unreachable_8hpp.html#a0bc63b24b654ca433be7b97a3edde132">UNREACHABLE</a>();</div><div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;}</div><div class="line"><a name="l00154"></a><span class="lineno">  154</span>
 &#160;</div><div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;} <span class="comment">// namespace os {</span></div><div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;</div><div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;<span class="preprocessor">#endif // __STOUT_OS_WINDOWS_READ_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>
+<a href="3rdparty_2stout_2include_2stout_2os_2windows_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>&#160;<span class="comment">// Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<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>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<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>&#160;<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>&#160;<span class="comment">// distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<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>&#160;<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>&#160;<span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="line
 no">   12</span>&#160;</div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="preprocessor">#ifndef __STOUT_OS_WINDOWS_READ_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="preprocessor">#define __STOUT_OS_WINDOWS_READ_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;</div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="result_8hpp.html">stout/result.hpp</a>&gt;</span></div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="unreachable_8hpp.html">stout/unreachable.hpp</a>&gt;</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="3rdparty_2stout_2include_2stout_2wi
 ndows_8hpp.html">stout/windows.hpp</a>&gt;</span></div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="overlapped_8hpp.html">stout/internal/windows/overlapped.hpp</a>&gt;</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;</div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="int__fd_8hpp.html">stout/os/int_fd.hpp</a>&gt;</span></div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="stout_2include_2stout_2os_2socket_8hpp.html">stout/os/socket.hpp</a>&gt;</span></div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;</div><div class="line"><a name="l00025"></a><span c
 lass="lineno">   25</span>&#160;<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>&#160;</div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="comment">// Asynchronous read on a overlapped int_fd. Returns `Error` on fatal errors,</span></div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="comment">// `None()` on a successful pending IO operation or number of bytes read on a</span></div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="comment">// successful IO operation that finished immediately.</span></div><div class="line"><a name="l00030"></a><span class="lineno"><a class="line" href="namespaceos.html#a00b6398808bc7afef46f705c1f92a2fe">   30</a></span>&#160;<span class="keyword">inline</span> <a class="code" href="classResult.html">Result&lt;
 size_t&gt;</a> <a class="code" href="namespaceos.html#a00b6398808bc7afef46f705c1f92a2fe">read_async</a>(</div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;    <span class="keyword">const</span> <a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a>&amp; fd,</div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;    <span class="keywordtype">void</span>* data,</div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;    <span class="keywordtype">size_t</span> <a class="code" href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">size</a>,</div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;    OVERLAPPED* overlapped)</div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;{</div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;  CHECK_LE(size, UINT_MAX);</div><div class="
 line"><a name="l00037"></a><span class="lineno">   37</span>&#160;</div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;  <span class="keywordflow">switch</span> (fd.type()) {</div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;    <span class="keywordflow">case</span> <a class="code" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5ad09c4cb1265f1772bb757a7af277b49f">WindowsFD::Type::HANDLE</a>: {</div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;      DWORD bytes;</div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;      <span class="keyword">const</span> <span class="keywordtype">bool</span> success =</div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;        ::ReadFile(fd, data, static_cast&lt;DWORD&gt;(size), &amp;bytes, overlapped);</div><div class="line"><a name="l00043"></a><span class="lineno">   43</span
 >&#160;</div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;      <span class="comment">// On failure, there are two EOF cases for reads:</span></div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;      <span class="comment">//   1) ERROR_BROKEN_PIPE: The write end is closed and there is no data.</span></div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;      <span class="comment">//   2) ERROR_HANDLE_EOF: We hit the EOF for an asynchronous file handle.</span></div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;      <span class="keyword">const</span> DWORD errorCode = ::GetLastError();</div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;      <span class="keywordflow">if</span> (success == FALSE &amp;&amp;</div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;          (errorCode == ERROR_BROKEN_PIPE
  || errorCode == ERROR_HANDLE_EOF)) {</div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;        <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;      }</div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;</div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;      <a class="code" href="namespaceinternal_1_1windows.html#a4ed4d1bae6b01fb85f8e6fad0b10599d">return ::internal::windows::process_async_io_result</a>(success, bytes);</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>&#160;    <span class="keywordflow">case</span> <a class="code" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5a75fbea08c09e684e6b3f3961761354fa">WindowsFD::Type::SOCKET</a>: {</div><div class="line"><a name="l000
 56"></a><span class="lineno">   56</span>&#160;      static_assert(</div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;          std::is_same&lt;OVERLAPPED, WSAOVERLAPPED&gt;::value,</div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;          <span class="stringliteral">&quot;Expected `WSAOVERLAPPED` to be of type `OVERLAPPED`.&quot;</span>);</div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;</div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;      <span class="comment">// Note that it&#39;s okay to allocate this on the stack, since the WinSock</span></div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;      <span class="comment">// providers must copy the WSABUF to their internal buffers. See</span></div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;      <span class="comment">// https://msdn
 .microsoft.com/en-us/library/windows/desktop/ms741688(v=vs.85).aspx // NOLINT(whitespace/line_length)</span></div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;      WSABUF buf = {</div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;        <span class="keyword">static_cast&lt;</span>u_long<span class="keyword">&gt;</span>(<a class="code" href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">size</a>),</div><div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;        static_cast&lt;char*&gt;(data)</div><div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;      };</div><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;</div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;      DWORD bytes;</div><div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;      DWORD <a class="code" href=
 "namespaceflags.html">flags</a> = 0;</div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;      <span class="keyword">const</span> <span class="keywordtype">int</span> result =</div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;        ::WSARecv(fd, &amp;buf, 1, &amp;bytes, &amp;flags, overlapped, <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;</div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;      <a class="code" href="namespaceinternal_1_1windows.html#a4ed4d1bae6b01fb85f8e6fad0b10599d">return ::internal::windows::process_async_io_result</a>(result == 0, bytes);</div><div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;    }</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>&#1
 60;</div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;  <a class="code" href="unreachable_8hpp.html#a0bc63b24b654ca433be7b97a3edde132">UNREACHABLE</a>();</div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;}</div><div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;</div><div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;</div><div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;<span class="comment">// Synchronous reads on any int_fd. Returns -1 on error and</span></div><div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;<span class="comment">// number of bytes read on success.</span></div><div class="line"><a name="l00083"></a><span class="lineno"><a class="line" href="namespaceos.html#a7e99bac0fb06315c051358c7916fe692">   83</a></span>&#160;<span class="keyword">inline</span> <a class="code" href="3rdparty_2stout_2i
 nclude_2stout_2windows_8hpp.html#a894c4d58faeee7675b9e7e8244de1386">ssize_t</a> <a class="code" href="namespaceos.html#aa1d97ff0a93229e1fe6b33e3e2d567f7">read</a>(<span class="keyword">const</span> <a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a>&amp; fd, <span class="keywordtype">void</span>* data, <span class="keywordtype">size_t</span> <a class="code" href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">size</a>)</div><div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;{</div><div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;  CHECK_LE(size, UINT_MAX);</div><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;</div><div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;  <span class="keywordflow">switch</span> (fd.type()) {</div><div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;    <span class="keywordf
 low">case</span> <a class="code" href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5ad09c4cb1265f1772bb757a7af277b49f">WindowsFD::Type::HANDLE</a>: {</div><div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;      <span class="comment">// Handle non-overlapped case. We just use the regular `ReadFile` since</span></div><div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;      <span class="comment">// seekable overlapped files require an offset, which we don&#39;t track.</span></div><div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;      <span class="keywordflow">if</span> (!fd.is_overlapped()) {</div><div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;        DWORD bytes;</div><div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;        <span class="keyword">const</span> BOOL result =</div><div class="line"><a name="l00094"></a><span class="l
 ineno">   94</span>&#160;          ::ReadFile(fd, data, static_cast&lt;DWORD&gt;(size), &amp;bytes, <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;</div><div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;        <span class="keywordflow">if</span> (result == FALSE) {</div><div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;          <span class="comment">// The pipe &quot;breaks&quot; when the other process closes its handle, but we</span></div><div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;          <span class="comment">// still have the data and therefore do not want to return an error.</span></div><div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;          <span class="keywordflow">if</span> (::GetLastError() != ERROR_BROKEN_PIPE) {</div><div class="line"><a name="l00100"></a><span class="lineno
 ">  100</span>&#160;            <span class="comment">// Indicates an error, but we can&#39;t return a `WindowsError`.</span></div><div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;            <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;          }</div><div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;        }</div><div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;</div><div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;        <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a894c4d58faeee7675b9e7e8244de1386">ssize_t</a><span class="keyword">&gt;</span>(bytes);</div><div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;      }</div><div class="line"><a name="l
 00107"></a><span class="lineno">  107</span>&#160;</div><div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;      <span class="comment">// Asynchronous handle, we can use the `read_async` function</span></div><div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;      <span class="comment">// and then wait on the overlapped object for a synchronous read.</span></div><div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;      <a class="code" href="classTry.html">Try&lt;OVERLAPPED&gt;</a> overlapped_ =</div><div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;        <a class="code" href="namespaceinternal_1_1windows.html#a388bd9a30ab487f5d035e542187e379a">::internal::windows::init_overlapped_for_sync_io</a>();</div><div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;</div><div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;      <span 
 class="keywordflow">if</span> (overlapped_.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;        <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;      }</div><div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;</div><div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;      OVERLAPPED overlapped = overlapped_.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>();</div><div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;      <a class="code" href="classResult.html">Result&lt;size_t&gt;</a> result = <a class="code" href="namespaceos.html#a00b6398808bc7afef46f705c1f92a2fe">read_async</a>(fd, data, size, &amp;overlapped);</div><div class="line"><a name="l00119"></a><span class="lineno
 ">  119</span>&#160;</div><div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;      <span class="keywordflow">if</span> (result.<a class="code" href="classResult.html#aeca16ad17d299ad885c9b46c83b12a3d">isError</a>()) {</div><div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;        <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;      }</div><div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;</div><div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;      <span class="keywordflow">if</span> (result.<a class="code" href="classResult.html#a85eaa52037223d71092e65701c166562">isSome</a>()) {</div><div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;        <span class="keywordflow">return</span> result.<a class="code" href="classResult.html#aedf79f3b14dcda5791b84a64ada4d412">get</a>
 ();</div><div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;      }</div><div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;</div><div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;      <span class="comment">// IO is pending, so wait for the overlapped object.</span></div><div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;      DWORD bytes;</div><div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;      <span class="keyword">const</span> BOOL wait_success =</div><div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;        ::GetOverlappedResult(fd, &amp;overlapped, &amp;bytes, TRUE);</div><div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;</div><div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;      <span class="keywordflow">if</span> (wait_success == TRUE) {</div><div clas
 s="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;        <span class="keywordflow">return</span> bytes;</div><div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;      }</div><div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;</div><div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;      <span class="comment">// On failure, there are two EOF cases for reads:</span></div><div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;      <span class="comment">//   1) ERROR_BROKEN_PIPE: The write end is closed and there is no data.</span></div><div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;      <span class="comment">//   2) ERROR_HANDLE_EOF: We hit the EOF for an asynchronous file handle.</span></div><div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;      <span class="keyword">const</span> DWORD <a class="code" h
 ref="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#ae58e703656ab4a1bd5d9870441236727">error</a> = ::GetLastError();</div><div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;      <span class="keywordflow">if</span> (error == ERROR_BROKEN_PIPE || error == ERROR_HANDLE_EOF) {</div><div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;        <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;      }</div><div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;</div><div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;      <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;    }</div><div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;    <span class="keywordflow">case</span> <a class="code" href="classos_
 1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5a75fbea08c09e684e6b3f3961761354fa">WindowsFD::Type::SOCKET</a>: {</div><div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;      <a class="code" href="namespaceprocess_1_1windows.html#a37fde6f31c2f9838a18cf83c2c865134">return ::recv</a>(fd, (<span class="keywordtype">char</span>*)data, static_cast&lt;unsigned int&gt;(size), 0);</div><div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;    }</div><div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;  }</div><div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;</div><div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;  <a class="code" href="unreachable_8hpp.html#a0bc63b24b654ca433be7b97a3edde132">UNREACHABLE</a>();</div><div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;}</div><div class="line"><a name="l00154"></a><span class="linen
 o">  154</span>&#160;</div><div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;} <span class="comment">// namespace os {</span></div><div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;</div><div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;<span class="preprocessor">#endif // __STOUT_OS_WINDOWS_READ_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="namespaceos_1_1stat_html_a7a116891923bc8b5d8c50f78da8657be"><div class="ttname"><a href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">os::stat::size</a></div><div class="ttdeci">Try&lt; Bytes &gt; size(const std::string &amp;path, const FollowSymlink follow=FollowSymlink::FOLLOW_SYMLINK)</div><div class="ttdef"><b>Definition:</b> stat.hpp:121</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 &amp; get()&amp;</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>
@@ -61,11 +61,11 @@
 <div class="ttc" id="namespaceinternal_1_1windows_html_a4ed4d1bae6b01fb85f8e6fad0b10599d"><div class="ttname"><a href="namespaceinternal_1_1windows.html#a4ed4d1bae6b01fb85f8e6fad0b10599d">internal::windows::process_async_io_result</a></div><div class="ttdeci">Result&lt; size_t &gt; process_async_io_result(bool successful_return_code, size_t bytes_transfered)</div><div class="ttdef"><b>Definition:</b> overlapped.hpp:71</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="namespaceprocess_1_1windows_html_a37fde6f31c2f9838a18cf83c2c865134"><div class="ttname"><a href="namespaceprocess_1_1windows.html#a37fde6f31c2f9838a18cf83c2c865134">process::windows::recv</a></div><div class="ttdeci">Future&lt; size_t &gt; recv(const int_fd &amp;fd, void *buf, size_t size)</div></div>
 <div class="ttc" id="classos_1_1WindowsFD_html_ac0377db41e1c167339c97dbd69c79ae5a75fbea08c09e684e6b3f3961761354fa"><div class="ttname"><a href="classos_1_1WindowsFD.html#ac0377db41e1c167339c97dbd69c79ae5a75fbea08c09e684e6b3f3961761354fa">os::WindowsFD::Type::SOCKET</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="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="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_ae1804e10c81f5743b459eeae1f6a701a"><div class="ttname"><a href="namespacenet.html#ae1804e10c81f5743b459eeae1f6a701a">net::recv</a></div><div class="ttdeci">ssize_t recv(const int_fd &amp;fd, void *buf, size_t len, int flags)</div><div class="ttdef"><b>Definition:</b> socket.hpp:168</div></div>
 <div class="ttc" id="classResult_html_aedf79f3b14dcda5791b84a64ada4d412"><div class="ttname"><a href="classResult.html#aedf79f3b14dcda5791b84a64ada4d412">Result::get</a></div><div class="ttdeci">const T &amp; get() const </div><div class="ttdef"><b>Definition:</b> result.hpp:115</div></div>
 <div class="ttc" id="unreachable_8hpp_html_a0bc63b24b654ca433be7b97a3edde132"><div class="ttname"><a href="unreachable_8hpp.html#a0bc63b24b654ca433be7b97a3edde132">UNREACHABLE</a></div><div class="ttdeci">#define UNREACHABLE()</div><div class="ttdef"><b>Definition:</b> unreachable.hpp:22</div></div>
 <div class="ttc" id="namespaceos_html_a00b6398808bc7afef46f705c1f92a2fe"><div class="ttname"><a href="namespaceos.html#a00b6398808bc7afef46f705c1f92a2fe">os::read_async</a></div><div class="ttdeci">Result&lt; size_t &gt; read_async(const int_fd &amp;fd, void *data, size_t size, OVERLAPPED *overlapped)</div><div class="ttdef"><b>Definition:</b> read.hpp:30</div></div>


[10/50] mesos-site git commit: Updated the website built from mesos SHA: 7c9c72d.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/subprocess_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/subprocess_8hpp_source.html b/content/api/latest/c++/subprocess_8hpp_source.html
deleted file mode 100644
index b614de8..0000000
--- a/content/api/latest/c++/subprocess_8hpp_source.html
+++ /dev/null
@@ -1,115 +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: 3rdparty/libprocess/include/process/subprocess.hpp Source File</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&#160;Page</span></a></li>
-      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><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="files.html"><span>File&#160;List</span></a></li>
-      <li><a href="globals.html"><span>File&#160;Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_8cab8f464681f7cc51cee77e79a434cd.html">3rdparty</a></li><li class="navelem"><a class="el" href="dir_043a76de98701f9bddf61b5e98f305ff.html">libprocess</a></li><li class="navelem"><a class="el" href="dir_eac18f7a64f6f8afbd1493ef4e09abdb.html">include</a></li><li class="navelem"><a class="el" href="dir_1894286df79cf582d947dbc4268b06cf.html">process</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">subprocess.hpp</div>  </div>
-</div><!--header-->
-<div class="contents">
-<a href="subprocess_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>&#160;<span class="comment">// Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<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>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<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>&#160;<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>&#160;<span class="comment">// distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<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>&#160;<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>&#160;<span class="comment">// limitations under the License</span></div><div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;</div><div class
 ="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="preprocessor">#ifndef __PROCESS_SUBPROCESS_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="preprocessor">#define __PROCESS_SUBPROCESS_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;</div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="preprocessor">#include &lt;map&gt;</span></div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="preprocessor">#include &lt;memory&gt;</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span></div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;<span class="preprocessor">#include &lt;vector&gt;</span></div><div class="line"><a name="l00020"></a><span class="lineno
 ">   20</span>&#160;</div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="future_8hpp.html">process/future.hpp</a>&gt;</span></div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="3rdparty_2stout_2include_2stout_2flags_8hpp.html">stout/flags.hpp</a>&gt;</span></div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="lambda_8hpp.html">stout/lambda.hpp</a>&gt;</span></div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="none_8hpp.html">stout/none.hpp</a>&gt;</span></div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;
 <span class="preprocessor">#include &lt;<a class="code" href="option_8hpp.html">stout/option.hpp</a>&gt;</span></div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="try_8hpp.html">stout/try.hpp</a>&gt;</span></div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;</div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="shell_8hpp.html">stout/os/shell.hpp</a>&gt;</span></div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="int__fd_8hpp.html">stout/os/int_fd.hpp</a>&gt;</span></div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;</div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;</div><div class="line"><a name="l00033"></a><span
  class="lineno">   33</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceprocess.html">process</a> {</div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;</div><div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="classprocess_1_1Subprocess.html">   43</a></span>&#160;<span class="keyword">class </span><a class="code" href="classprocess_1_1Subprocess.html">Subprocess</a></div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;{</div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;  <span class="comment">// Forward declarations.</span></div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;  <span class="keyword">struct </span><a class="code" href="structprocess_1_1Subprocess_1_1ParentHook.html"
 >ParentHook</a>;</div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;  <span class="keyword">class </span><a class="code" href="classprocess_1_1Subprocess_1_1ChildHook.html">ChildHook</a>;</div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;</div><div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="classprocess_1_1Subprocess_1_1IO.html">   61</a></span>&#160;  <span class="keyword">class </span><a class="code" href="classprocess_1_1Subprocess_1_1IO.html">IO</a></div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;  {</div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;  <span class="keyword">public</span>:</div><div class="line"><a name="l00073"></a><span class="lineno"><a class="line" href="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors.html">   73</a></span>&#160;    <span class="keyword">struct </span><a class="code" hr
 ef="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors.html">InputFileDescriptors</a></div><div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;    {</div><div class="line"><a name="l00075"></a><span class="lineno"><a class="line" href="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors.html#a0a3f315345ef7b7ee6f3f1d4d337854d">   75</a></span>&#160;      <a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> <a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors.html#a0a3f315345ef7b7ee6f3f1d4d337854d">read</a> = -1;</div><div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors.html#ab812da47364d793d9ec0471d3dc8c1bc">   76</a></span>&#160;      <a class="code" href="classOption.html">Option&lt;int_fd&gt;</a> <a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors.html#ab812da47364d793d9
 ec0471d3dc8c1bc">write</a> = <a class="code" href="structNone.html">None</a>();</div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;    };</div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;</div><div class="line"><a name="l00088"></a><span class="lineno"><a class="line" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html">   88</a></span>&#160;    <span class="keyword">struct </span><a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html">OutputFileDescriptors</a></div><div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;    {</div><div class="line"><a name="l00090"></a><span class="lineno"><a class="line" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html#ac4af678c631a700d4be4410a250e3bce">   90</a></span>&#160;      <a class="code" href="classOption.html">Option&lt;int_fd&gt;</a> <a class="code" href="structprocess_1_1Subproces
 s_1_1IO_1_1InputFileDescriptors.html#a0a3f315345ef7b7ee6f3f1d4d337854d">read</a> = <a class="code" href="structNone.html">None</a>();</div><div class="line"><a name="l00091"></a><span class="lineno"><a class="line" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html#a5dabb8e3008efd61ce42478f260b54ac">   91</a></span>&#160;      <a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> <a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors.html#ab812da47364d793d9ec0471d3dc8c1bc">write</a> = -1;</div><div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;    };</div><div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;</div><div class="line"><a name="l00098"></a><span class="lineno"><a class="line" href="classprocess_1_1Subprocess_1_1IO.html#adb9433454d727de27b2440f729d19990">   98</a></span>&#160;    <span class="keyword">enum</span> <a class="code" href="classproces
 s_1_1Subprocess_1_1IO.html#adb9433454d727de27b2440f729d19990">FDType</a> {</div><div class="line"><a name="l00103"></a><span class="lineno"><a class="line" href="classprocess_1_1Subprocess_1_1IO.html#adb9433454d727de27b2440f729d19990af648d44b624da021da40a80190291380">  103</a></span>&#160;      <a class="code" href="classprocess_1_1Subprocess_1_1IO.html#adb9433454d727de27b2440f729d19990af648d44b624da021da40a80190291380">DUPLICATED</a>,</div><div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;</div><div class="line"><a name="l00110"></a><span class="lineno"><a class="line" href="classprocess_1_1Subprocess_1_1IO.html#adb9433454d727de27b2440f729d19990ad3f73761156a6e75873cf903a0d62994">  110</a></span>&#160;      <a class="code" href="classprocess_1_1Subprocess_1_1IO.html#adb9433454d727de27b2440f729d19990ad3f73761156a6e75873cf903a0d62994">OWNED</a></div><div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;    };</div><div class="line"><
 a name="l00112"></a><span class="lineno">  112</span>&#160;</div><div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;</div><div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;  <span class="keyword">private</span>:</div><div class="line"><a name="l00115"></a><span class="lineno"><a class="line" href="classprocess_1_1Subprocess_1_1IO.html#a3d12fd22e5deb76d3529ce4e6d9179dc">  115</a></span>&#160;    <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classprocess_1_1Subprocess.html">Subprocess</a>;</div><div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;</div><div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;    <span class="keyword">friend</span> <a class="code" href="classTry.html">Try&lt;Subprocess&gt;</a> <a class="code" href="classprocess_1_1Subprocess_1_1IO.html#afa34ca045f618704548708d7c5e5d82a">subprocess</a>(</div><div class="line
 "><a name="l00118"></a><span class="lineno">  118</span>&#160;        <span class="keyword">const</span> std::string&amp; <a class="code" href="namespacepath.html">path</a>,</div><div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;        std::vector&lt;std::string&gt; argv,</div><div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;        <span class="keyword">const</span> <a class="code" href="classprocess_1_1Subprocess_1_1IO.html">Subprocess::IO</a>&amp; <a class="code" href="classprocess_1_1Subprocess.html#a60535054108d572796c25011c2aa379d">in</a>,</div><div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;        <span class="keyword">const</span> <a class="code" href="classprocess_1_1Subprocess_1_1IO.html">Subprocess::IO</a>&amp; <a class="code" href="classprocess_1_1Subprocess.html#a1c1a81931671b15c0c4b310bc49dea56">out</a>,</div><div class="line"><a name="l00122"></a><span class="lineno">  122</span>&
 #160;        <span class="keyword">const</span> <a class="code" href="classprocess_1_1Subprocess_1_1IO.html">Subprocess::IO</a>&amp; <a class="code" href="classprocess_1_1Subprocess.html#a98180558f1427a64a03cf3f656310bc4">err</a>,</div><div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;        <span class="keyword">const</span> <a class="code" href="classflags_1_1FlagsBase.html">flags::FlagsBase</a>* <a class="code" href="namespaceflags.html">flags</a>,</div><div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;        <span class="keyword">const</span> <a class="code" href="classOption.html">Option</a>&lt;std::map&lt;std::string, std::string&gt;&gt;&amp; <a class="code" href="namespacemesos_1_1internal_1_1tests.html#a1396c5e3b0a179220de2792d74770ec2">environment</a>,</div><div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;        <span class="keyword">const</span> <a class="code" href="classOption.html">O
 ption</a>&lt;lambda::function&lt;</div><div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;            <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a>(<span class="keyword">const</span> lambda::function&lt;<span class="keywordtype">int</span>()&gt;&amp;)&gt;&gt;&amp; <a class="code" href="namespacens.html#a98bf4d9e11d546326250997a6493f835">clone</a>,</div><div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;        <span class="keyword">const</span> std::vector&lt;Subprocess::ParentHook&gt;&amp; parent_hooks,</div><div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;        <span class="keyword">const</span> std::vector&lt;Subprocess::ChildHook&gt;&amp; child_hooks,</div><div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;        <span class="keyword">const</span> std::vector&lt;int_fd&gt;&amp; whitelist_fds);</di
 v><div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;</div><div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;    <a class="code" href="classprocess_1_1Subprocess_1_1IO.html">IO</a>(<span class="keyword">const</span> lambda::function&lt;<a class="code" href="classTry.html">Try&lt;InputFileDescriptors&gt;</a>()&gt;&amp; _input,</div><div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;       <span class="keyword">const</span> lambda::function&lt;<a class="code" href="classTry.html">Try&lt;OutputFileDescriptors&gt;</a>()&gt;&amp; _output)</div><div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;      : input(_input),</div><div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;        output(_output) {}</div><div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;</div><div class="line"><a name="l00139"></a><span class="lineno">  139</spa
 n>&#160;    lambda::function&lt;Try&lt;InputFileDescriptors&gt;()&gt; input;</div><div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;</div><div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;    lambda::function&lt;Try&lt;OutputFileDescriptors&gt;()&gt; output;</div><div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;  };</div><div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;</div><div class="line"><a name="l00152"></a><span class="lineno"><a class="line" href="structprocess_1_1Subprocess_1_1ParentHook.html">  152</a></span>&#160;  <span class="keyword">struct </span><a class="code" href="structprocess_1_1Subprocess_1_1ParentHook.html">ParentHook</a></div><div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;  {</div><div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;    <a class="code" href="structprocess_1_1Subprocess_1_1Par
 entHook.html">ParentHook</a>(<span class="keyword">const</span> lambda::function&lt;<a class="code" href="classTry.html">Try&lt;Nothing&gt;</a>(<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a>)&gt;&amp; _parent_setup);</div><div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;</div><div class="line"><a name="l00163"></a><span class="lineno"><a class="line" href="structprocess_1_1Subprocess_1_1ParentHook.html#aaf9ff141314d619cd65cd8ec9320fb7d">  163</a></span>&#160;    <span class="keyword">const</span> lambda::function&lt;Try&lt;Nothing&gt;(<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a>)&gt; parent_setup;</div><div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;</div><div class="line"><a name="l00165"></a><span class="lineno"><a class="line" href="structprocess_1_1Subprocess_1_1ParentHook.html#a
 3d12fd22e5deb76d3529ce4e6d9179dc">  165</a></span>&#160;    <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classprocess_1_1Subprocess.html">Subprocess</a>;</div><div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;</div><div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;<span class="preprocessor">#ifdef __WINDOWS__</span></div><div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;</div><div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;    <span class="keyword">static</span> <a class="code" href="structprocess_1_1Subprocess_1_1ParentHook.html">ParentHook</a> CREATE_JOB();</div><div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;<span class="preprocessor">#endif // __WINDOWS__</span></div><div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;  };</div><div class="line"><a name="l00179"></
 a><span class="lineno">  179</span>&#160;</div><div class="line"><a name="l00190"></a><span class="lineno"><a class="line" href="classprocess_1_1Subprocess_1_1ChildHook.html">  190</a></span>&#160;  <span class="keyword">class </span><a class="code" href="classprocess_1_1Subprocess_1_1ChildHook.html">ChildHook</a></div><div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160;  {</div><div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;  <span class="keyword">public</span>:</div><div class="line"><a name="l00196"></a><span class="lineno">  196</span>&#160;    <span class="keyword">static</span> <a class="code" href="classprocess_1_1Subprocess_1_1ChildHook.html">ChildHook</a> CHDIR(<span class="keyword">const</span> std::string&amp; working_directory);</div><div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;</div><div class="line"><a name="l00201"></a><span class="lineno">  201</span>&#160;    <span class="keywo
 rd">static</span> <a class="code" href="classprocess_1_1Subprocess_1_1ChildHook.html">ChildHook</a> SETSID();</div><div class="line"><a name="l00202"></a><span class="lineno">  202</span>&#160;</div><div class="line"><a name="l00203"></a><span class="lineno">  203</span>&#160;<span class="preprocessor">#ifndef __WINDOWS__</span></div><div class="line"><a name="l00204"></a><span class="lineno">  204</span>&#160;</div><div class="line"><a name="l00207"></a><span class="lineno">  207</span>&#160;    <span class="keyword">static</span> <a class="code" href="classprocess_1_1Subprocess_1_1ChildHook.html">ChildHook</a> DUP2(<span class="keywordtype">int</span> oldFd, <span class="keywordtype">int</span> newFd);</div><div class="line"><a name="l00208"></a><span class="lineno">  208</span>&#160;</div><div class="line"><a name="l00213"></a><span class="lineno">  213</span>&#160;    <span class="keyword">static</span> <a class="code" href="classprocess_1_1Subprocess_1_1ChildHook.html">ChildHoo
 k</a> UNSET_CLOEXEC(<span class="keywordtype">int</span> fd);</div><div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160;<span class="preprocessor">#endif // __WINDOWS__</span></div><div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160;</div><div class="line"><a name="l00224"></a><span class="lineno">  224</span>&#160;    <span class="keyword">static</span> <a class="code" href="classprocess_1_1Subprocess_1_1ChildHook.html">ChildHook</a> SUPERVISOR();</div><div class="line"><a name="l00225"></a><span class="lineno">  225</span>&#160;</div><div class="line"><a name="l00226"></a><span class="lineno"><a class="line" href="classprocess_1_1Subprocess_1_1ChildHook.html#ae9a996c6b3aa1113709a3d5ceba37f2c">  226</a></span>&#160;    <a class="code" href="classTry.html">Try&lt;Nothing&gt;</a> <a class="code" href="classprocess_1_1Subprocess_1_1ChildHook.html#ae9a996c6b3aa1113709a3d5ceba37f2c">operator()</a>()<span class="keyword"> const </span>{ 
 <span class="keywordflow">return</span> child_setup(); }</div><div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160;</div><div class="line"><a name="l00228"></a><span class="lineno">  228</span>&#160;  <span class="keyword">private</span>:</div><div class="line"><a name="l00229"></a><span class="lineno">  229</span>&#160;    <a class="code" href="classprocess_1_1Subprocess_1_1ChildHook.html">ChildHook</a>(<span class="keyword">const</span> lambda::function&lt;<a class="code" href="classTry.html">Try&lt;Nothing&gt;</a>()&gt;&amp; _child_setup);</div><div class="line"><a name="l00230"></a><span class="lineno">  230</span>&#160;</div><div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160;    <span class="keyword">const</span> lambda::function&lt;Try&lt;Nothing&gt;()&gt; child_setup;</div><div class="line"><a name="l00232"></a><span class="lineno">  232</span>&#160;  };</div><div class="line"><a name="l00233"></a><span class="lineno">  233<
 /span>&#160;</div><div class="line"><a name="l00234"></a><span class="lineno">  234</span>&#160;  <span class="comment">// Some syntactic sugar to create an IO::PIPE redirector.</span></div><div class="line"><a name="l00235"></a><span class="lineno">  235</span>&#160;  <span class="keyword">static</span> <a class="code" href="classprocess_1_1Subprocess_1_1IO.html">IO</a> <a class="code" href="classprocess_1_1Subprocess.html#a6af5024bd1932707893908fceb86ddad">PIPE</a>();</div><div class="line"><a name="l00236"></a><span class="lineno">  236</span>&#160;  <span class="keyword">static</span> <a class="code" href="classprocess_1_1Subprocess_1_1IO.html">IO</a> <a class="code" href="classprocess_1_1Subprocess.html#a54793e9c516257d68776f63f0872c3c7">PATH</a>(<span class="keyword">const</span> std::string&amp; path);</div><div class="line"><a name="l00237"></a><span class="lineno">  237</span>&#160;  <span class="keyword">static</span> <a class="code" href="classprocess_1_1Subprocess_1_1IO.
 html">IO</a> <a class="code" href="classprocess_1_1Subprocess.html#aaa6e1b76ef54ed6db34d595811122ce0">FD</a>(<a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> fd, <a class="code" href="classprocess_1_1Subprocess_1_1IO.html#adb9433454d727de27b2440f729d19990">IO::FDType</a> <a class="code" href="namespacemesos_1_1internal_1_1fs.html#a2343e2642db514496ba8380776487fba">type</a> = <a class="code" href="classprocess_1_1Subprocess_1_1IO.html#adb9433454d727de27b2440f729d19990af648d44b624da021da40a80190291380">IO::DUPLICATED</a>);</div><div class="line"><a name="l00238"></a><span class="lineno">  238</span>&#160;</div><div class="line"><a name="l00242"></a><span class="lineno"><a class="line" href="classprocess_1_1Subprocess.html#ac3af3805968fc8b53e6c5a2a3cbdad2b">  242</a></span>&#160;  <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a> <a class="code" href="classprocess_1_1Subprocess.html
 #ac3af3805968fc8b53e6c5a2a3cbdad2b">pid</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> data-&gt;pid; }</div><div class="line"><a name="l00243"></a><span class="lineno">  243</span>&#160;</div><div class="line"><a name="l00249"></a><span class="lineno"><a class="line" href="classprocess_1_1Subprocess.html#a60535054108d572796c25011c2aa379d">  249</a></span>&#160;  <a class="code" href="classOption.html">Option&lt;int_fd&gt;</a> <a class="code" href="classprocess_1_1Subprocess.html#a60535054108d572796c25011c2aa379d">in</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00250"></a><span class="lineno">  250</span>&#160;<span class="keyword">  </span>{</div><div class="line"><a name="l00251"></a><span class="lineno">  251</span>&#160;    <span class="keywordflow">return</span> data-&gt;in;</div><div class="line"><a name="l00252"></a><span class="lineno">  252</span>&#160;  }</div><div class="line"><a name="l00253"></a><span class
 ="lineno">  253</span>&#160;</div><div class="line"><a name="l00259"></a><span class="lineno"><a class="line" href="classprocess_1_1Subprocess.html#a1c1a81931671b15c0c4b310bc49dea56">  259</a></span>&#160;  <a class="code" href="classOption.html">Option&lt;int_fd&gt;</a> <a class="code" href="classprocess_1_1Subprocess.html#a1c1a81931671b15c0c4b310bc49dea56">out</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00260"></a><span class="lineno">  260</span>&#160;<span class="keyword">  </span>{</div><div class="line"><a name="l00261"></a><span class="lineno">  261</span>&#160;    <span class="keywordflow">return</span> data-&gt;out;</div><div class="line"><a name="l00262"></a><span class="lineno">  262</span>&#160;  }</div><div class="line"><a name="l00263"></a><span class="lineno">  263</span>&#160;</div><div class="line"><a name="l00269"></a><span class="lineno"><a class="line" href="classprocess_1_1Subprocess.html#a98180558f1427a64a03cf3f656310bc4">  269</a>
 </span>&#160;  <a class="code" href="classOption.html">Option&lt;int_fd&gt;</a> <a class="code" href="classprocess_1_1Subprocess.html#a98180558f1427a64a03cf3f656310bc4">err</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00270"></a><span class="lineno">  270</span>&#160;<span class="keyword">  </span>{</div><div class="line"><a name="l00271"></a><span class="lineno">  271</span>&#160;    <span class="keywordflow">return</span> data-&gt;err;</div><div class="line"><a name="l00272"></a><span class="lineno">  272</span>&#160;  }</div><div class="line"><a name="l00273"></a><span class="lineno">  273</span>&#160;</div><div class="line"><a name="l00295"></a><span class="lineno"><a class="line" href="classprocess_1_1Subprocess.html#a3946c31d16c0625ea554d5216cd4fa3b">  295</a></span>&#160;  <a class="code" href="classprocess_1_1Future.html">Future&lt;Option&lt;int&gt;</a>&gt; <a class="code" href="classprocess_1_1Subprocess.html#a3946c31d16c0625ea554d5216cd4fa3b">s
 tatus</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> data-&gt;status; }</div><div class="line"><a name="l00296"></a><span class="lineno">  296</span>&#160;</div><div class="line"><a name="l00297"></a><span class="lineno">  297</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00298"></a><span class="lineno">  298</span>&#160;  <span class="keyword">friend</span> <a class="code" href="classTry.html">Try&lt;Subprocess&gt;</a> <a class="code" href="classprocess_1_1Subprocess_1_1IO.html#afa34ca045f618704548708d7c5e5d82a">subprocess</a>(</div><div class="line"><a name="l00299"></a><span class="lineno">  299</span>&#160;      <span class="keyword">const</span> std::string&amp; path,</div><div class="line"><a name="l00300"></a><span class="lineno">  300</span>&#160;      std::vector&lt;std::string&gt; argv,</div><div class="line"><a name="l00301"></a><span class="lineno">  301</span>&#160;      <span class="keyword">const
 </span> <a class="code" href="classprocess_1_1Subprocess_1_1IO.html">Subprocess::IO</a>&amp; in,</div><div class="line"><a name="l00302"></a><span class="lineno">  302</span>&#160;      <span class="keyword">const</span> <a class="code" href="classprocess_1_1Subprocess_1_1IO.html">Subprocess::IO</a>&amp; out,</div><div class="line"><a name="l00303"></a><span class="lineno">  303</span>&#160;      <span class="keyword">const</span> <a class="code" href="classprocess_1_1Subprocess_1_1IO.html">Subprocess::IO</a>&amp; err,</div><div class="line"><a name="l00304"></a><span class="lineno">  304</span>&#160;      <span class="keyword">const</span> <a class="code" href="classflags_1_1FlagsBase.html">flags::FlagsBase</a>* flags,</div><div class="line"><a name="l00305"></a><span class="lineno">  305</span>&#160;      <span class="keyword">const</span> <a class="code" href="classOption.html">Option</a>&lt;std::map&lt;std::string, std::string&gt;&gt;&amp; <a class="code" href="namespacemesos_1_
 1internal_1_1tests.html#a1396c5e3b0a179220de2792d74770ec2">environment</a>,</div><div class="line"><a name="l00306"></a><span class="lineno">  306</span>&#160;      <span class="keyword">const</span> <a class="code" href="classOption.html">Option</a>&lt;lambda::function&lt;</div><div class="line"><a name="l00307"></a><span class="lineno">  307</span>&#160;          <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a>(<span class="keyword">const</span> lambda::function&lt;<span class="keywordtype">int</span>()&gt;&amp;)&gt;&gt;&amp; <a class="code" href="namespacens.html#a98bf4d9e11d546326250997a6493f835">clone</a>,</div><div class="line"><a name="l00308"></a><span class="lineno">  308</span>&#160;      <span class="keyword">const</span> std::vector&lt;Subprocess::ParentHook&gt;&amp; parent_hooks,</div><div class="line"><a name="l00309"></a><span class="lineno">  309</span>&#160;      <span class="keyword">const</span> 
 std::vector&lt;Subprocess::ChildHook&gt;&amp; child_hooks,</div><div class="line"><a name="l00310"></a><span class="lineno">  310</span>&#160;      <span class="keyword">const</span> std::vector&lt;int_fd&gt;&amp; whitelist_fds);</div><div class="line"><a name="l00311"></a><span class="lineno">  311</span>&#160;</div><div class="line"><a name="l00312"></a><span class="lineno">  312</span>&#160;  <span class="keyword">struct </span>Data</div><div class="line"><a name="l00313"></a><span class="lineno">  313</span>&#160;  {</div><div class="line"><a name="l00314"></a><span class="lineno">  314</span>&#160;    ~Data()</div><div class="line"><a name="l00315"></a><span class="lineno">  315</span>&#160;    {</div><div class="line"><a name="l00316"></a><span class="lineno">  316</span>&#160;      <span class="keywordflow">if</span> (in.isSome()) { <a class="code" href="namespaceos.html#a8df77ec6d6b8d32d9b287a41bc74cfdc">os::close</a>(in.get()); }</div><div class="line"><a name="l00317"></a>
 <span class="lineno">  317</span>&#160;      <span class="keywordflow">if</span> (out.isSome()) { <a class="code" href="namespaceos.html#a8df77ec6d6b8d32d9b287a41bc74cfdc">os::close</a>(out.get()); }</div><div class="line"><a name="l00318"></a><span class="lineno">  318</span>&#160;      <span class="keywordflow">if</span> (err.isSome()) { <a class="code" href="namespaceos.html#a8df77ec6d6b8d32d9b287a41bc74cfdc">os::close</a>(err.get()); }</div><div class="line"><a name="l00319"></a><span class="lineno">  319</span>&#160;    }</div><div class="line"><a name="l00320"></a><span class="lineno">  320</span>&#160;</div><div class="line"><a name="l00321"></a><span class="lineno">  321</span>&#160;    <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a> <a class="code" href="classprocess_1_1Subprocess.html#ac3af3805968fc8b53e6c5a2a3cbdad2b">pid</a>;</div><div class="line"><a name="l00322"></a><span class="lineno">  322</span>
 &#160;</div><div class="line"><a name="l00323"></a><span class="lineno">  323</span>&#160;<span class="preprocessor">#ifdef __WINDOWS__</span></div><div class="line"><a name="l00324"></a><span class="lineno">  324</span>&#160;    <a class="code" href="classOption.html">Option&lt;::internal::windows::ProcessData&gt;</a> process_data;</div><div class="line"><a name="l00325"></a><span class="lineno">  325</span>&#160;<span class="preprocessor">#endif // __WINDOWS__</span></div><div class="line"><a name="l00326"></a><span class="lineno">  326</span>&#160;</div><div class="line"><a name="l00327"></a><span class="lineno">  327</span>&#160;    <span class="comment">// The parent side of the pipe for stdin/stdout/stderr. If the</span></div><div class="line"><a name="l00328"></a><span class="lineno">  328</span>&#160;    <span class="comment">// IO mode is not a pipe, `None` will be stored.</span></div><div class="line"><a name="l00329"></a><span class="lineno">  329</span>&#160;    <span cl
 ass="comment">// NOTE: stdin, stdout, stderr are macros on some systems, hence</span></div><div class="line"><a name="l00330"></a><span class="lineno">  330</span>&#160;    <span class="comment">// these names instead.</span></div><div class="line"><a name="l00331"></a><span class="lineno">  331</span>&#160;    <a class="code" href="classOption.html">Option&lt;int_fd&gt;</a> <a class="code" href="classprocess_1_1Subprocess.html#a60535054108d572796c25011c2aa379d">in</a>;</div><div class="line"><a name="l00332"></a><span class="lineno">  332</span>&#160;    <a class="code" href="classOption.html">Option&lt;int_fd&gt;</a> <a class="code" href="classprocess_1_1Subprocess.html#a1c1a81931671b15c0c4b310bc49dea56">out</a>;</div><div class="line"><a name="l00333"></a><span class="lineno">  333</span>&#160;    <a class="code" href="classOption.html">Option&lt;int_fd&gt;</a> <a class="code" href="classprocess_1_1Subprocess.html#a98180558f1427a64a03cf3f656310bc4">err</a>;</div><div class="line"
 ><a name="l00334"></a><span class="lineno">  334</span>&#160;</div><div class="line"><a name="l00335"></a><span class="lineno">  335</span>&#160;    <a class="code" href="classprocess_1_1Future.html">Future&lt;Option&lt;int&gt;</a>&gt; <a class="code" href="classprocess_1_1Subprocess.html#a3946c31d16c0625ea554d5216cd4fa3b">status</a>;</div><div class="line"><a name="l00336"></a><span class="lineno">  336</span>&#160;  };</div><div class="line"><a name="l00337"></a><span class="lineno">  337</span>&#160;</div><div class="line"><a name="l00338"></a><span class="lineno">  338</span>&#160;  <a class="code" href="classprocess_1_1Subprocess_1_1IO.html#a3d12fd22e5deb76d3529ce4e6d9179dc">Subprocess</a>() : data(<span class="keyword">new</span> Data()) {}</div><div class="line"><a name="l00339"></a><span class="lineno">  339</span>&#160;</div><div class="line"><a name="l00340"></a><span class="lineno">  340</span>&#160;  std::shared_ptr&lt;Data&gt; data;</div><div class="line"><a name="l0034
 1"></a><span class="lineno">  341</span>&#160;};</div><div class="line"><a name="l00342"></a><span class="lineno">  342</span>&#160;</div><div class="line"><a name="l00343"></a><span class="lineno"><a class="line" href="namespaceprocess.html#afc6611c4913642642277b44447a16e55">  343</a></span>&#160;<span class="keyword">using</span> <a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors.html">InputFileDescriptors</a> = <a class="code" href="namespaceprocess.html#afc6611c4913642642277b44447a16e55">Subprocess::IO::InputFileDescriptors</a>;</div><div class="line"><a name="l00344"></a><span class="lineno"><a class="line" href="namespaceprocess.html#a882829822afa4f33b90aafc9c4ffa9af">  344</a></span>&#160;<span class="keyword">using</span> <a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html">OutputFileDescriptors</a> = <a class="code" href="namespaceprocess.html#a882829822afa4f33b90aafc9c4ffa9af">Subprocess::IO::OutputFileDescript
 ors</a>;</div><div class="line"><a name="l00345"></a><span class="lineno">  345</span>&#160;</div><div class="line"><a name="l00369"></a><span class="lineno">  369</span>&#160;<span class="comment">// TODO(jmlvanre): Consider removing default argument for</span></div><div class="line"><a name="l00370"></a><span class="lineno">  370</span>&#160;<span class="comment">// `parent_hooks` to force the caller to think about setting them.</span></div><div class="line"><a name="l00371"></a><span class="lineno">  371</span>&#160;<a class="code" href="classTry.html">Try&lt;Subprocess&gt;</a> <a class="code" href="classprocess_1_1Subprocess_1_1IO.html#afa34ca045f618704548708d7c5e5d82a">subprocess</a>(</div><div class="line"><a name="l00372"></a><span class="lineno">  372</span>&#160;    <span class="keyword">const</span> std::string&amp; path,</div><div class="line"><a name="l00373"></a><span class="lineno">  373</span>&#160;    std::vector&lt;std::string&gt; argv,</div><div class="line"><a nam
 e="l00374"></a><span class="lineno">  374</span>&#160;    <span class="keyword">const</span> <a class="code" href="classprocess_1_1Subprocess_1_1IO.html">Subprocess::IO</a>&amp; in = <a class="code" href="classprocess_1_1Subprocess.html#aaa6e1b76ef54ed6db34d595811122ce0">Subprocess::FD</a>(<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#afcf80a6d91178952d107ad00b165752b">STDIN_FILENO</a>),</div><div class="line"><a name="l00375"></a><span class="lineno">  375</span>&#160;    <span class="keyword">const</span> <a class="code" href="classprocess_1_1Subprocess_1_1IO.html">Subprocess::IO</a>&amp; out = <a class="code" href="classprocess_1_1Subprocess.html#aaa6e1b76ef54ed6db34d595811122ce0">Subprocess::FD</a>(<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#abd165ee6474b5b75bf075842fff13a04">STDOUT_FILENO</a>),</div><div class="line"><a name="l00376"></a><span class="lineno">  376</span>&#160;    <span class="keyword">const</span> <a class
 ="code" href="classprocess_1_1Subprocess_1_1IO.html">Subprocess::IO</a>&amp; err = <a class="code" href="classprocess_1_1Subprocess.html#aaa6e1b76ef54ed6db34d595811122ce0">Subprocess::FD</a>(<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ae2fe1725bb5e9823d089c46b9ed5266e">STDERR_FILENO</a>),</div><div class="line"><a name="l00377"></a><span class="lineno">  377</span>&#160;    <span class="keyword">const</span> <a class="code" href="classflags_1_1FlagsBase.html">flags::FlagsBase</a>* flags = <span class="keyword">nullptr</span>,</div><div class="line"><a name="l00378"></a><span class="lineno">  378</span>&#160;    <span class="keyword">const</span> <a class="code" href="classOption.html">Option</a>&lt;std::map&lt;std::string, std::string&gt;&gt;&amp; <a class="code" href="namespacemesos_1_1internal_1_1tests.html#a1396c5e3b0a179220de2792d74770ec2">environment</a> = <a class="code" href="structNone.html">None</a>(),</div><div class="line"><a name="l00379"></a
 ><span class="lineno">  379</span>&#160;    <span class="keyword">const</span> <a class="code" href="classOption.html">Option</a>&lt;lambda::function&lt;</div><div class="line"><a name="l00380"></a><span class="lineno">  380</span>&#160;        <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a>(<span class="keyword">const</span> lambda::function&lt;<span class="keywordtype">int</span>()&gt;&amp;)&gt;&gt;&amp; <a class="code" href="namespacens.html#a98bf4d9e11d546326250997a6493f835">clone</a> = <a class="code" href="structNone.html">None</a>(),</div><div class="line"><a name="l00381"></a><span class="lineno">  381</span>&#160;    <span class="keyword">const</span> std::vector&lt;Subprocess::ParentHook&gt;&amp; parent_hooks = {},</div><div class="line"><a name="l00382"></a><span class="lineno">  382</span>&#160;    <span class="keyword">const</span> std::vector&lt;Subprocess::ChildHook&gt;&amp; child_hooks = {},</div><
 div class="line"><a name="l00383"></a><span class="lineno">  383</span>&#160;    <span class="keyword">const</span> std::vector&lt;int_fd&gt;&amp; whitelist_fds = {});</div><div class="line"><a name="l00384"></a><span class="lineno">  384</span>&#160;</div><div class="line"><a name="l00385"></a><span class="lineno">  385</span>&#160;</div><div class="line"><a name="l00408"></a><span class="lineno">  408</span>&#160;<span class="comment">// TODO(jmlvanre): Consider removing default argument for</span></div><div class="line"><a name="l00409"></a><span class="lineno">  409</span>&#160;<span class="comment">// `parent_hooks` to force the caller to think about setting them.</span></div><div class="line"><a name="l00410"></a><span class="lineno"><a class="line" href="namespaceprocess.html#a0a748c548ad3a094196c98f00f9674cf">  410</a></span>&#160;<span class="keyword">inline</span> <a class="code" href="classTry.html">Try&lt;Subprocess&gt;</a> <a class="code" href="classprocess_1_1Subproces
 s_1_1IO.html#afa34ca045f618704548708d7c5e5d82a">subprocess</a>(</div><div class="line"><a name="l00411"></a><span class="lineno">  411</span>&#160;    <span class="keyword">const</span> std::string&amp; command,</div><div class="line"><a name="l00412"></a><span class="lineno">  412</span>&#160;    <span class="keyword">const</span> <a class="code" href="classprocess_1_1Subprocess_1_1IO.html">Subprocess::IO</a>&amp; in = <a class="code" href="classprocess_1_1Subprocess.html#aaa6e1b76ef54ed6db34d595811122ce0">Subprocess::FD</a>(<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#afcf80a6d91178952d107ad00b165752b">STDIN_FILENO</a>),</div><div class="line"><a name="l00413"></a><span class="lineno">  413</span>&#160;    <span class="keyword">const</span> <a class="code" href="classprocess_1_1Subprocess_1_1IO.html">Subprocess::IO</a>&amp; out = <a class="code" href="classprocess_1_1Subprocess.html#aaa6e1b76ef54ed6db34d595811122ce0">Subprocess::FD</a>(<a class="code" h
 ref="3rdparty_2stout_2include_2stout_2windows_8hpp.html#abd165ee6474b5b75bf075842fff13a04">STDOUT_FILENO</a>),</div><div class="line"><a name="l00414"></a><span class="lineno">  414</span>&#160;    <span class="keyword">const</span> <a class="code" href="classprocess_1_1Subprocess_1_1IO.html">Subprocess::IO</a>&amp; err = <a class="code" href="classprocess_1_1Subprocess.html#aaa6e1b76ef54ed6db34d595811122ce0">Subprocess::FD</a>(<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ae2fe1725bb5e9823d089c46b9ed5266e">STDERR_FILENO</a>),</div><div class="line"><a name="l00415"></a><span class="lineno">  415</span>&#160;    <span class="keyword">const</span> <a class="code" href="classOption.html">Option</a>&lt;std::map&lt;std::string, std::string&gt;&gt;&amp; <a class="code" href="namespacemesos_1_1internal_1_1tests.html#a1396c5e3b0a179220de2792d74770ec2">environment</a> = <a class="code" href="structNone.html">None</a>(),</div><div class="line"><a name="l00416"></a>
 <span class="lineno">  416</span>&#160;    <span class="keyword">const</span> <a class="code" href="classOption.html">Option</a>&lt;lambda::function&lt;</div><div class="line"><a name="l00417"></a><span class="lineno">  417</span>&#160;        <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a>(<span class="keyword">const</span> lambda::function&lt;<span class="keywordtype">int</span>()&gt;&amp;)&gt;&gt;&amp; <a class="code" href="namespacens.html#a98bf4d9e11d546326250997a6493f835">clone</a> = <a class="code" href="structNone.html">None</a>(),</div><div class="line"><a name="l00418"></a><span class="lineno">  418</span>&#160;    <span class="keyword">const</span> std::vector&lt;Subprocess::ParentHook&gt;&amp; parent_hooks = {},</div><div class="line"><a name="l00419"></a><span class="lineno">  419</span>&#160;    <span class="keyword">const</span> std::vector&lt;Subprocess::ChildHook&gt;&amp; child_hooks = {},</div><d
 iv class="line"><a name="l00420"></a><span class="lineno">  420</span>&#160;    <span class="keyword">const</span> std::vector&lt;int_fd&gt;&amp; whitelist_fds = {})</div><div class="line"><a name="l00421"></a><span class="lineno">  421</span>&#160;{</div><div class="line"><a name="l00422"></a><span class="lineno">  422</span>&#160;  std::vector&lt;std::string&gt; argv = {<a class="code" href="namespaceos_1_1Shell.html#adeacb41dacfa03ad5ceebd9a53582997">os::Shell::arg0</a>, <a class="code" href="namespaceos_1_1Shell.html#a44f50f66f2a231de974b53c9f4384ba5">os::Shell::arg1</a>, command};</div><div class="line"><a name="l00423"></a><span class="lineno">  423</span>&#160;</div><div class="line"><a name="l00424"></a><span class="lineno">  424</span>&#160;  <span class="keywordflow">return</span> <a class="code" href="classprocess_1_1Subprocess_1_1IO.html#afa34ca045f618704548708d7c5e5d82a">subprocess</a>(</div><div class="line"><a name="l00425"></a><span class="lineno">  425</span>&#160; 
      <a class="code" href="namespaceos_1_1Shell.html#acfe16ef2b1146ad49a8651c0a457ce46">os::Shell::name</a>,</div><div class="line"><a name="l00426"></a><span class="lineno">  426</span>&#160;      argv,</div><div class="line"><a name="l00427"></a><span class="lineno">  427</span>&#160;      in,</div><div class="line"><a name="l00428"></a><span class="lineno">  428</span>&#160;      out,</div><div class="line"><a name="l00429"></a><span class="lineno">  429</span>&#160;      err,</div><div class="line"><a name="l00430"></a><span class="lineno">  430</span>&#160;      <span class="keyword">nullptr</span>,</div><div class="line"><a name="l00431"></a><span class="lineno">  431</span>&#160;      <a class="code" href="namespacemesos_1_1internal_1_1tests.html#a1396c5e3b0a179220de2792d74770ec2">environment</a>,</div><div class="line"><a name="l00432"></a><span class="lineno">  432</span>&#160;      <a class="code" href="namespacens.html#a98bf4d9e11d546326250997a6493f835">clone</a>,</div><d
 iv class="line"><a name="l00433"></a><span class="lineno">  433</span>&#160;      parent_hooks,</div><div class="line"><a name="l00434"></a><span class="lineno">  434</span>&#160;      child_hooks,</div><div class="line"><a name="l00435"></a><span class="lineno">  435</span>&#160;      whitelist_fds);</div><div class="line"><a name="l00436"></a><span class="lineno">  436</span>&#160;}</div><div class="line"><a name="l00437"></a><span class="lineno">  437</span>&#160;</div><div class="line"><a name="l00438"></a><span class="lineno">  438</span>&#160;} <span class="comment">// namespace process {</span></div><div class="line"><a name="l00439"></a><span class="lineno">  439</span>&#160;</div><div class="line"><a name="l00440"></a><span class="lineno">  440</span>&#160;<span class="preprocessor">#endif // __PROCESS_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> pat
 h.hpp:26</div></div>
-<div class="ttc" id="classprocess_1_1Subprocess_html_a60535054108d572796c25011c2aa379d"><div class="ttname"><a href="classprocess_1_1Subprocess.html#a60535054108d572796c25011c2aa379d">process::Subprocess::in</a></div><div class="ttdeci">Option&lt; int_fd &gt; in() const </div><div class="ttdef"><b>Definition:</b> subprocess.hpp:249</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="classprocess_1_1Subprocess_1_1IO_html_a3d12fd22e5deb76d3529ce4e6d9179dc"><div class="ttname"><a href="classprocess_1_1Subprocess_1_1IO.html#a3d12fd22e5deb76d3529ce4e6d9179dc">process::Subprocess::IO::Subprocess</a></div><div class="ttdeci">friend class Subprocess</div><div class="ttdef"><b>Definition:</b> subprocess.hpp:115</div></div>
-<div class="ttc" id="classOption_html"><div class="ttname"><a href="classOption.html">Option&lt; int_fd &gt;</a></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&lt; pid_t &gt; clone(pid_t target, int nstypes, const lambda::function&lt; int()&gt; &amp;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="namespaceprocess_html_a882829822afa4f33b90aafc9c4ffa9af"><div class="ttname"><a href="namespaceprocess.html#a882829822afa4f33b90aafc9c4ffa9af">process::OutputFileDescriptors</a></div><div class="ttdeci">Subprocess::IO::OutputFileDescriptors OutputFileDescriptors</div><div class="ttdef"><b>Definition:</b> subprocess.hpp:344</div></div>
-<div class="ttc" id="classprocess_1_1Subprocess_1_1ChildHook_html"><div class="ttname"><a href="classprocess_1_1Subprocess_1_1ChildHook.html">process::Subprocess::ChildHook</a></div><div class="ttdoc">A ChildHook can be passed to a subprocess call. </div><div class="ttdef"><b>Definition:</b> subprocess.hpp:190</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="classprocess_1_1Subprocess_html_a54793e9c516257d68776f63f0872c3c7"><div class="ttname"><a href="classprocess_1_1Subprocess.html#a54793e9c516257d68776f63f0872c3c7">process::Subprocess::PATH</a></div><div class="ttdeci">static IO PATH(const std::string &amp;path)</div></div>
-<div class="ttc" id="classprocess_1_1Subprocess_1_1IO_html_adb9433454d727de27b2440f729d19990ad3f73761156a6e75873cf903a0d62994"><div class="ttname"><a href="classprocess_1_1Subprocess_1_1IO.html#adb9433454d727de27b2440f729d19990ad3f73761156a6e75873cf903a0d62994">process::Subprocess::IO::OWNED</a></div><div class="ttdoc">The file descriptor is not duplicated before being passed to the subprocess. </div><div class="ttdef"><b>Definition:</b> subprocess.hpp:110</div></div>
-<div class="ttc" id="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors_html_a0a3f315345ef7b7ee6f3f1d4d337854d"><div class="ttname"><a href="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors.html#a0a3f315345ef7b7ee6f3f1d4d337854d">process::Subprocess::IO::InputFileDescriptors::read</a></div><div class="ttdeci">int_fd read</div><div class="ttdef"><b>Definition:</b> subprocess.hpp:75</div></div>
-<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="classprocess_1_1Subprocess_html_ac3af3805968fc8b53e6c5a2a3cbdad2b"><div class="ttname"><a href="classprocess_1_1Subprocess.html#ac3af3805968fc8b53e6c5a2a3cbdad2b">process::Subprocess::pid</a></div><div class="ttdeci">pid_t pid() const </div><div class="ttdef"><b>Definition:</b> subprocess.hpp:242</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="lambda_8hpp_html"><div class="ttname"><a href="lambda_8hpp.html">lambda.hpp</a></div></div>
-<div class="ttc" id="namespaceprocess_html_afc6611c4913642642277b44447a16e55"><div class="ttname"><a href="namespaceprocess.html#afc6611c4913642642277b44447a16e55">process::InputFileDescriptors</a></div><div class="ttdeci">Subprocess::IO::InputFileDescriptors InputFileDescriptors</div><div class="ttdef"><b>Definition:</b> subprocess.hpp:343</div></div>
-<div class="ttc" id="namespaceos_1_1Shell_html_adeacb41dacfa03ad5ceebd9a53582997"><div class="ttname"><a href="namespaceos_1_1Shell.html#adeacb41dacfa03ad5ceebd9a53582997">os::Shell::arg0</a></div><div class="ttdeci">constexpr const char * arg0</div><div class="ttdef"><b>Definition:</b> shell.hpp:44</div></div>
-<div class="ttc" id="classprocess_1_1Subprocess_html"><div class="ttname"><a href="classprocess_1_1Subprocess.html">process::Subprocess</a></div><div class="ttdoc">Represents a fork() exec()ed subprocess. </div><div class="ttdef"><b>Definition:</b> subprocess.hpp:43</div></div>
-<div class="ttc" id="namespacemesos_1_1internal_1_1tests_html_a1396c5e3b0a179220de2792d74770ec2"><div class="ttname"><a href="namespacemesos_1_1internal_1_1tests.html#a1396c5e3b0a179220de2792d74770ec2">mesos::internal::tests::environment</a></div><div class="ttdeci">Environment * environment</div></div>
-<div class="ttc" id="3rdparty_2stout_2include_2stout_2windows_8hpp_html_ab03ced250ed239bc3b50b669493997f9"><div class="ttname"><a href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a></div><div class="ttdeci">DWORD pid_t</div><div class="ttdef"><b>Definition:</b> windows.hpp:181</div></div>
-<div class="ttc" id="classprocess_1_1Subprocess_html_aaa6e1b76ef54ed6db34d595811122ce0"><div class="ttname"><a href="classprocess_1_1Subprocess.html#aaa6e1b76ef54ed6db34d595811122ce0">process::Subprocess::FD</a></div><div class="ttdeci">static IO FD(int_fd fd, IO::FDType type=IO::DUPLICATED)</div></div>
-<div class="ttc" id="3rdparty_2stout_2include_2stout_2windows_8hpp_html_abd165ee6474b5b75bf075842fff13a04"><div class="ttname"><a href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#abd165ee6474b5b75bf075842fff13a04">STDOUT_FILENO</a></div><div class="ttdeci">#define STDOUT_FILENO</div><div class="ttdef"><b>Definition:</b> windows.hpp:154</div></div>
-<div class="ttc" id="classprocess_1_1Subprocess_html_a98180558f1427a64a03cf3f656310bc4"><div class="ttname"><a href="classprocess_1_1Subprocess.html#a98180558f1427a64a03cf3f656310bc4">process::Subprocess::err</a></div><div class="ttdeci">Option&lt; int_fd &gt; err() const </div><div class="ttdef"><b>Definition:</b> subprocess.hpp:269</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&lt; Nothing &gt; close(int fd)</div><div class="ttdef"><b>Definition:</b> close.hpp:24</div></div>
-<div class="ttc" id="classprocess_1_1Subprocess_1_1IO_html"><div class="ttname"><a href="classprocess_1_1Subprocess_1_1IO.html">process::Subprocess::IO</a></div><div class="ttdoc">Describes how the I/O is redirected for stdin/stdout/stderr. </div><div class="ttdef"><b>Definition:</b> subprocess.hpp:61</div></div>
-<div class="ttc" id="classflags_1_1FlagsBase_html"><div class="ttname"><a href="classflags_1_1FlagsBase.html">flags::FlagsBase</a></div><div class="ttdef"><b>Definition:</b> flags.hpp:44</div></div>
-<div class="ttc" id="3rdparty_2stout_2include_2stout_2flags_8hpp_html"><div class="ttname"><a href="3rdparty_2stout_2include_2stout_2flags_8hpp.html">flags.hpp</a></div></div>
-<div class="ttc" id="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors_html"><div class="ttname"><a href="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors.html">process::Subprocess::IO::InputFileDescriptors</a></div><div class="ttdoc">For input file descriptors a child reads from the read file descriptor and a parent may write to the ...</div><div class="ttdef"><b>Definition:</b> subprocess.hpp:73</div></div>
-<div class="ttc" id="classprocess_1_1Subprocess_1_1IO_html_adb9433454d727de27b2440f729d19990af648d44b624da021da40a80190291380"><div class="ttname"><a href="classprocess_1_1Subprocess_1_1IO.html#adb9433454d727de27b2440f729d19990af648d44b624da021da40a80190291380">process::Subprocess::IO::DUPLICATED</a></div><div class="ttdoc">The file descriptor is duplicated before being passed to the subprocess. </div><div class="ttdef"><b>Definition:</b> subprocess.hpp:103</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="3rdparty_2stout_2include_2stout_2windows_8hpp_html_afcf80a6d91178952d107ad00b165752b"><div class="ttname"><a href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#afcf80a6d91178952d107ad00b165752b">STDIN_FILENO</a></div><div class="ttdeci">#define STDIN_FILENO</div><div class="ttdef"><b>Definition:</b> windows.hpp:153</div></div>
-<div class="ttc" id="classprocess_1_1Subprocess_html_a1c1a81931671b15c0c4b310bc49dea56"><div class="ttname"><a href="classprocess_1_1Subprocess.html#a1c1a81931671b15c0c4b310bc49dea56">process::Subprocess::out</a></div><div class="ttdeci">Option&lt; int_fd &gt; out() const </div><div class="ttdef"><b>Definition:</b> subprocess.hpp:259</div></div>
-<div class="ttc" id="classprocess_1_1Subprocess_1_1IO_html_afa34ca045f618704548708d7c5e5d82a"><div class="ttname"><a href="classprocess_1_1Subprocess_1_1IO.html#afa34ca045f618704548708d7c5e5d82a">process::Subprocess::IO::subprocess</a></div><div class="ttdeci">friend Try&lt; Subprocess &gt; subprocess(const std::string &amp;path, std::vector&lt; std::string &gt; argv, const Subprocess::IO &amp;in, const Subprocess::IO &amp;out, const Subprocess::IO &amp;err, const flags::FlagsBase *flags, const Option&lt; std::map&lt; std::string, std::string &gt;&gt; &amp;environment, const Option&lt; lambda::function&lt; pid_t(const lambda::function&lt; int()&gt; &amp;)&gt;&gt; &amp;clone, const std::vector&lt; Subprocess::ParentHook &gt; &amp;parent_hooks, const std::vector&lt; Subprocess::ChildHook &gt; &amp;child_hooks, const std::vector&lt; int_fd &gt; &amp;whitelist_fds)</div></div>
-<div class="ttc" id="future_8hpp_html"><div class="ttname"><a href="future_8hpp.html">future.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="classprocess_1_1Subprocess_1_1IO_html_adb9433454d727de27b2440f729d19990"><div class="ttname"><a href="classprocess_1_1Subprocess_1_1IO.html#adb9433454d727de27b2440f729d19990">process::Subprocess::IO::FDType</a></div><div class="ttdeci">FDType</div><div class="ttdoc">Describes the lifecycle of a file descriptor passed into a subprocess via the Subprocess::FD helper...</div><div class="ttdef"><b>Definition:</b> subprocess.hpp:98</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:48</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>
-<div class="ttc" id="namespacemesos_1_1internal_1_1fs_html_a2343e2642db514496ba8380776487fba"><div class="ttname"><a href="namespacemesos_1_1internal_1_1fs.html#a2343e2642db514496ba8380776487fba">mesos::internal::fs::type</a></div><div class="ttdeci">Try&lt; uint32_t &gt; type(const std::string &amp;path)</div></div>
-<div class="ttc" id="shell_8hpp_html"><div class="ttname"><a href="shell_8hpp.html">shell.hpp</a></div></div>
-<div class="ttc" id="classprocess_1_1Subprocess_html_a6af5024bd1932707893908fceb86ddad"><div class="ttname"><a href="classprocess_1_1Subprocess.html#a6af5024bd1932707893908fceb86ddad">process::Subprocess::PIPE</a></div><div class="ttdeci">static IO PIPE()</div></div>
-<div class="ttc" id="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors_html_ab812da47364d793d9ec0471d3dc8c1bc"><div class="ttname"><a href="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors.html#ab812da47364d793d9ec0471d3dc8c1bc">process::Subprocess::IO::InputFileDescriptors::write</a></div><div class="ttdeci">Option&lt; int_fd &gt; write</div><div class="ttdef"><b>Definition:</b> subprocess.hpp:76</div></div>
-<div class="ttc" id="structprocess_1_1Subprocess_1_1ParentHook_html"><div class="ttname"><a href="structprocess_1_1Subprocess_1_1ParentHook.html">process::Subprocess::ParentHook</a></div><div class="ttdoc">A hook can be passed to a subprocess call. </div><div class="ttdef"><b>Definition:</b> subprocess.hpp:152</div></div>
-<div class="ttc" id="int__fd_8hpp_html_aea4dbda01c90455f158ffa9b924c2f07"><div class="ttname"><a href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a></div><div class="ttdeci">int int_fd</div><div class="ttdef"><b>Definition:</b> int_fd.hpp:35</div></div>
-<div class="ttc" id="namespaceflags_html"><div class="ttname"><a href="namespaceflags.html">flags</a></div><div class="ttdef"><b>Definition:</b> parse.hpp:33</div></div>
-<div class="ttc" id="namespaceos_1_1Shell_html_acfe16ef2b1146ad49a8651c0a457ce46"><div class="ttname"><a href="namespaceos_1_1Shell.html#acfe16ef2b1146ad49a8651c0a457ce46">os::Shell::name</a></div><div class="ttdeci">constexpr const char * name</div><div class="ttdef"><b>Definition:</b> shell.hpp:43</div></div>
-<div class="ttc" id="classprocess_1_1Subprocess_html_a3946c31d16c0625ea554d5216cd4fa3b"><div class="ttname"><a href="classprocess_1_1Subprocess.html#a3946c31d16c0625ea554d5216cd4fa3b">process::Subprocess::status</a></div><div class="ttdeci">Future&lt; Option&lt; int &gt; &gt; status() const </div><div class="ttdoc">Exit status of this subprocess captured as a Future (completed when the subprocess exits)...</div><div class="ttdef"><b>Definition:</b> subprocess.hpp:295</div></div>
-<div class="ttc" id="classprocess_1_1Subprocess_1_1ChildHook_html_ae9a996c6b3aa1113709a3d5ceba37f2c"><div class="ttname"><a href="classprocess_1_1Subprocess_1_1ChildHook.html#ae9a996c6b3aa1113709a3d5ceba37f2c">process::Subprocess::ChildHook::operator()</a></div><div class="ttdeci">Try&lt; Nothing &gt; operator()() const </div><div class="ttdef"><b>Definition:</b> subprocess.hpp:226</div></div>
-<div class="ttc" id="classprocess_1_1Future_html"><div class="ttname"><a href="classprocess_1_1Future.html">process::Future</a></div><div class="ttdef"><b>Definition:</b> future.hpp:58</div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated by &#160;<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.11
-</small></address>
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/subprocess__posix_8hpp.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/subprocess__posix_8hpp.html b/content/api/latest/c++/subprocess__posix_8hpp.html
deleted file mode 100644
index 1bd7023..0000000
--- a/content/api/latest/c++/subprocess__posix_8hpp.html
+++ /dev/null
@@ -1,108 +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: 3rdparty/libprocess/src/subprocess_posix.hpp File 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&#160;Page</span></a></li>
-      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><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="files.html"><span>File&#160;List</span></a></li>
-      <li><a href="globals.html"><span>File&#160;Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_8cab8f464681f7cc51cee77e79a434cd.html">3rdparty</a></li><li class="navelem"><a class="el" href="dir_043a76de98701f9bddf61b5e98f305ff.html">libprocess</a></li><li class="navelem"><a class="el" href="dir_01cbbd8dcbf9de3825992568658f467e.html">src</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="summary">
-<a href="#namespaces">Namespaces</a> &#124;
-<a href="#func-members">Functions</a>  </div>
-  <div class="headertitle">
-<div class="title">subprocess_posix.hpp File Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="textblock"><code>#include &lt;sys/types.h&gt;</code><br />
-<code>#include &lt;string&gt;</code><br />
-<code>#include &lt;glog/logging.h&gt;</code><br />
-<code>#include &lt;<a class="el" href="subprocess_8hpp_source.html">process/subprocess.hpp</a>&gt;</code><br />
-<code>#include &lt;<a class="el" href="stout_2include_2stout_2check_8hpp_source.html">stout/check.hpp</a>&gt;</code><br />
-<code>#include &lt;<a class="el" href="error_8hpp_source.html">stout/error.hpp</a>&gt;</code><br />
-<code>#include &lt;<a class="el" href="exit_8hpp_source.html">stout/exit.hpp</a>&gt;</code><br />
-<code>#include &lt;<a class="el" href="foreach_8hpp_source.html">stout/foreach.hpp</a>&gt;</code><br />
-<code>#include &lt;<a class="el" href="hashset_8hpp_source.html">stout/hashset.hpp</a>&gt;</code><br />
-<code>#include &lt;<a class="el" href="nothing_8hpp_source.html">stout/nothing.hpp</a>&gt;</code><br />
-<code>#include &lt;<a class="el" href="lambda_8hpp_source.html">stout/lambda.hpp</a>&gt;</code><br />
-<code>#include &lt;<a class="el" href="none_8hpp_source.html">stout/none.hpp</a>&gt;</code><br />
-<code>#include &lt;<a class="el" href="option_8hpp_source.html">stout/option.hpp</a>&gt;</code><br />
-<code>#include &lt;<a class="el" href="os_8hpp_source.html">stout/os.hpp</a>&gt;</code><br />
-<code>#include &lt;<a class="el" href="try_8hpp_source.html">stout/try.hpp</a>&gt;</code><br />
-<code>#include &lt;<a class="el" href="unreachable_8hpp_source.html">stout/unreachable.hpp</a>&gt;</code><br />
-<code>#include &lt;<a class="el" href="close_8hpp_source.html">stout/os/close.hpp</a>&gt;</code><br />
-<code>#include &lt;<a class="el" href="3rdparty_2stout_2include_2stout_2os_2environment_8hpp_source.html">stout/os/environment.hpp</a>&gt;</code><br />
-<code>#include &lt;<a class="el" href="fcntl_8hpp_source.html">stout/os/fcntl.hpp</a>&gt;</code><br />
-<code>#include &lt;<a class="el" href="signals_8hpp_source.html">stout/os/signals.hpp</a>&gt;</code><br />
-<code>#include &lt;<a class="el" href="strerror_8hpp_source.html">stout/os/strerror.hpp</a>&gt;</code><br />
-</div>
-<p><a href="subprocess__posix_8hpp_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr class="memitem:namespaceprocess"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceprocess.html">process</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:namespaceprocess_1_1internal"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceprocess_1_1internal.html">process::internal</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</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:af2f19b6f367cddc0c8283560a9cd9215"><td class="memItemLeft" align="right" valign="top"><a class="el" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceprocess_1_1internal.html#af2f19b6f367cddc0c8283560a9cd9215">process::internal::defaultClone</a> (const lambda::function&lt; int()&gt; &amp;func)</td></tr>
-<tr class="separator:af2f19b6f367cddc0c8283560a9cd9215"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a345a534b82b79bf20333fb6faef43e93"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classTry.html">Try</a>&lt; <a class="el" href="structNothing.html">Nothing</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceprocess_1_1internal.html#a345a534b82b79bf20333fb6faef43e93">process::internal::cloexec</a> (const InputFileDescriptors &amp;stdinfds, const OutputFileDescriptors &amp;stdoutfds, const OutputFileDescriptors &amp;stderrfds)</td></tr>
-<tr class="separator:a345a534b82b79bf20333fb6faef43e93"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a902e2646d88c41ce674a3009cafe0aad"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceprocess_1_1internal.html#a902e2646d88c41ce674a3009cafe0aad">process::internal::childMain</a> (const std::string &amp;path, char **argv, char **envp, const InputFileDescriptors &amp;stdinfds, const OutputFileDescriptors &amp;stdoutfds, const OutputFileDescriptors &amp;stderrfds, bool blocking, int pipes[2], const std::vector&lt; Subprocess::ChildHook &gt; &amp;child_hooks)</td></tr>
-<tr class="separator:a902e2646d88c41ce674a3009cafe0aad"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:afe2c3a3ffdd0ee6fda82e198ece80a37"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classTry.html">Try</a>&lt; <a class="el" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceprocess_1_1internal.html#afe2c3a3ffdd0ee6fda82e198ece80a37">process::internal::cloneChild</a> (const std::string &amp;path, std::vector&lt; std::string &gt; argv, const <a class="el" href="classOption.html">Option</a>&lt; std::map&lt; std::string, std::string &gt;&gt; &amp;environment, const <a class="el" href="classOption.html">Option</a>&lt; lambda::function&lt; <a class="el" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a>(const lambda::function&lt; int()&gt; &amp;)&gt;&gt; &amp;_clone, const std::vector&lt; Subprocess::ParentHook &gt; &amp;parent_hooks, const std::vector&lt; Subpr
 ocess::ChildHook &gt; &amp;child_hooks, const InputFileDescriptors stdinfds, const OutputFileDescriptors stdoutfds, const OutputFileDescriptors stderrfds)</td></tr>
-<tr class="separator:afe2c3a3ffdd0ee6fda82e198ece80a37"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table>
-</div><!-- contents -->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated by &#160;<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.11
-</small></address>
-</body>
-</html>


[45/50] mesos-site git commit: Updated the website built from mesos SHA: 7c9c72d.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/Nodes.xml
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/Nodes.xml b/content/api/latest/c++/Nodes.xml
index ba4eb2f..7349642 100644
--- a/content/api/latest/c++/Nodes.xml
+++ b/content/api/latest/c++/Nodes.xml
@@ -1119,6 +1119,12 @@
              <Node>
               <Name>io</Name>
               <Path>namespaceprocess_1_1io.html</Path>
+              <Subnodes>
+               <Node>
+                <Name>internal</Name>
+                <Path>namespaceprocess_1_1io_1_1internal.html</Path>
+               </Node>
+              </Subnodes>
              </Node>
              <Node>
               <Name>metrics</Name>
@@ -1164,6 +1170,10 @@
                </Node>
               </Subnodes>
              </Node>
+             <Node>
+              <Name>windows</Name>
+              <Path>namespaceprocess_1_1windows.html</Path>
+             </Node>
             </Subnodes>
            </Node>
            <Node>
@@ -23678,11 +23688,21 @@
                 <Anchor>ad2ce21d9f77710472e19843e3e86343e</Anchor>
                </Node>
                <Node>
+                <Name>assign_iocp</Name>
+                <Path>classos_1_1WindowsFD.html</Path>
+                <Anchor>a1a9c96c20213e1b94ba8dcc1bb059163</Anchor>
+               </Node>
+               <Node>
                 <Name>crt</Name>
                 <Path>classos_1_1WindowsFD.html</Path>
                 <Anchor>a94b69cae4edb8f3549845fbfa0355b7c</Anchor>
                </Node>
                <Node>
+                <Name>get_iocp</Name>
+                <Path>classos_1_1WindowsFD.html</Path>
+                <Anchor>a380eb8d9b7bc0e6b3bfae0e8e9c6bb0f</Anchor>
+               </Node>
+               <Node>
                 <Name>is_overlapped</Name>
                 <Path>classos_1_1WindowsFD.html</Path>
                 <Anchor>a4dce5dbc3d019589b4b61d6d17e1da45</Anchor>
@@ -23723,6 +23743,11 @@
                 <Anchor>a3ce17a730ace5352a1fc6d49f8336d52</Anchor>
                </Node>
                <Node>
+                <Name>dup</Name>
+                <Path>classos_1_1WindowsFD.html</Path>
+                <Anchor>ae8d4fd38b52ea9f38605f46195fd040b</Anchor>
+               </Node>
+               <Node>
                 <Name>operator!=</Name>
                 <Path>classos_1_1WindowsFD.html</Path>
                 <Anchor>a342803d2a16f81ca20f0e0c1c2e598d0</Anchor>
@@ -25473,6 +25498,12 @@
               </Subnodes>
              </Node>
              <Node>
+              <Name>io</Name>
+              <Path>namespaceprocess_1_1io.html</Path>
+              <Subnodes>
+              </Subnodes>
+             </Node>
+             <Node>
               <Name>metrics</Name>
               <Path>namespaceprocess_1_1metrics.html</Path>
               <Subnodes>
@@ -26277,6 +26308,38 @@
               </Subnodes>
              </Node>
              <Node>
+              <Name>windows</Name>
+              <Path>namespaceprocess_1_1windows.html</Path>
+              <Subnodes>
+               <Node>
+                <Name>EventLoop</Name>
+                <Path>classprocess_1_1windows_1_1EventLoop.html</Path>
+                <Subnodes>
+                 <Node>
+                  <Name>launchTimer</Name>
+                  <Path>classprocess_1_1windows_1_1EventLoop.html</Path>
+                  <Anchor>a006cb0c8efb7aaadadf0a692d9c2659a</Anchor>
+                 </Node>
+                 <Node>
+                  <Name>registerHandle</Name>
+                  <Path>classprocess_1_1windows_1_1EventLoop.html</Path>
+                  <Anchor>a832a73998bb3b26b7caa770ceef38827</Anchor>
+                 </Node>
+                 <Node>
+                  <Name>run</Name>
+                  <Path>classprocess_1_1windows_1_1EventLoop.html</Path>
+                  <Anchor>a2578b5fad0eb039f995955c798310c86</Anchor>
+                 </Node>
+                 <Node>
+                  <Name>stop</Name>
+                  <Path>classprocess_1_1windows_1_1EventLoop.html</Path>
+                  <Anchor>a8a07fc602e31875e6cbcaeac8008f09a</Anchor>
+                 </Node>
+                </Subnodes>
+               </Node>
+              </Subnodes>
+             </Node>
+             <Node>
               <Name>_Deferred</Name>
               <Path>structprocess_1_1__Deferred.html</Path>
               <Subnodes>
@@ -36610,6 +36673,10 @@
             <Path>classprocess_1_1EventLoop.html</Path>
            </Node>
            <Node>
+            <Name>process::windows::EventLoop</Name>
+            <Path>classprocess_1_1windows_1_1EventLoop.html</Path>
+           </Node>
+           <Node>
             <Name>process::EventQueue</Name>
             <Path>classprocess_1_1EventQueue.html</Path>
            </Node>
@@ -39216,14 +39283,14 @@
             <Path>structprotobuf_1_1internal_1_1Read_3_01google_1_1protobuf_1_1RepeatedPtrField_3_01T_01_4_01_4.html</Path>
            </Node>
            <Node>
-            <Name>mesos::log::Log::Reader</Name>
-            <Path>classmesos_1_1log_1_1Log_1_1Reader.html</Path>
-           </Node>
-           <Node>
             <Name>mesos::internal::recordio::Reader&lt; T &gt;</Name>
             <Path>classmesos_1_1internal_1_1recordio_1_1Reader.html</Path>
            </Node>
            <Node>
+            <Name>mesos::log::Log::Reader</Name>
+            <Path>classmesos_1_1log_1_1Log_1_1Reader.html</Path>
+           </Node>
+           <Node>
             <Name>process::http::Pipe::Reader</Name>
             <Path>classprocess_1_1http_1_1Pipe_1_1Reader.html</Path>
            </Node>
@@ -39256,6 +39323,16 @@
             </Subnodes>
            </Node>
            <Node>
+            <Name>mesos::internal::master::Registrar</Name>
+            <Path>classmesos_1_1internal_1_1master_1_1Registrar.html</Path>
+            <Subnodes>
+             <Node>
+              <Name>mesos::internal::tests::MockRegistrar</Name>
+              <Path>classmesos_1_1internal_1_1tests_1_1MockRegistrar.html</Path>
+             </Node>
+            </Subnodes>
+           </Node>
+           <Node>
             <Name>mesos::resource_provider::Registrar</Name>
             <Path>classmesos_1_1resource__provider_1_1Registrar.html</Path>
             <Subnodes>
@@ -39270,16 +39347,6 @@
             </Subnodes>
            </Node>
            <Node>
-            <Name>mesos::internal::master::Registrar</Name>
-            <Path>classmesos_1_1internal_1_1master_1_1Registrar.html</Path>
-            <Subnodes>
-             <Node>
-              <Name>mesos::internal::tests::MockRegistrar</Name>
-              <Path>classmesos_1_1internal_1_1tests_1_1MockRegistrar.html</Path>
-             </Node>
-            </Subnodes>
-           </Node>
-           <Node>
             <Name>mesos::internal::log::Replica</Name>
             <Path>classmesos_1_1internal_1_1log_1_1Replica.html</Path>
            </Node>
@@ -39670,10 +39737,6 @@
             </Subnodes>
            </Node>
            <Node>
-            <Name>mesos::internal::tests::cluster::Slave</Name>
-            <Path>classmesos_1_1internal_1_1tests_1_1cluster_1_1Slave.html</Path>
-           </Node>
-           <Node>
             <Name>mesos::internal::master::Slave</Name>
             <Path>structmesos_1_1internal_1_1master_1_1Slave.html</Path>
            </Node>
@@ -39682,6 +39745,10 @@
             <Path>classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess_1_1Slave.html</Path>
            </Node>
            <Node>
+            <Name>mesos::internal::tests::cluster::Slave</Name>
+            <Path>classmesos_1_1internal_1_1tests_1_1cluster_1_1Slave.html</Path>
+           </Node>
+           <Node>
             <Name>mesos::internal::slave::state::SlaveState</Name>
             <Path>structmesos_1_1internal_1_1slave_1_1state_1_1SlaveState.html</Path>
            </Node>
@@ -39720,6 +39787,14 @@
             <Path>classos_1_1Stack.html</Path>
            </Node>
            <Node>
+            <Name>mesos::internal::StatusUpdateManagerProcess&lt; IDType, CheckpointType, UpdateType &gt;::State</Name>
+            <Path>structmesos_1_1internal_1_1StatusUpdateManagerProcess_1_1State.html</Path>
+           </Node>
+           <Node>
+            <Name>mesos::internal::slave::state::State</Name>
+            <Path>structmesos_1_1internal_1_1slave_1_1state_1_1State.html</Path>
+           </Node>
+           <Node>
             <Name>mesos::state::State</Name>
             <Path>classmesos_1_1state_1_1State.html</Path>
             <Subnodes>
@@ -39730,10 +39805,6 @@
             </Subnodes>
            </Node>
            <Node>
-            <Name>mesos::internal::StatusUpdateManagerProcess&lt; IDType, CheckpointType, UpdateType &gt;::State</Name>
-            <Path>structmesos_1_1internal_1_1StatusUpdateManagerProcess_1_1State.html</Path>
-           </Node>
-           <Node>
             <Name>mesos::internal::StatusUpdateManagerProcess&lt; IDType, CheckpointType, UpdateType &gt;::StatusUpdateStream::State</Name>
             <Path>structmesos_1_1internal_1_1StatusUpdateManagerProcess_1_1StatusUpdateStream_1_1State.html</Path>
            </Node>
@@ -39742,10 +39813,6 @@
             <Path>structmesos_1_1internal_1_1log_1_1Storage_1_1State.html</Path>
            </Node>
            <Node>
-            <Name>mesos::internal::slave::state::State</Name>
-            <Path>structmesos_1_1internal_1_1slave_1_1state_1_1State.html</Path>
-           </Node>
-           <Node>
             <Name>process::StateMachine&lt; State &gt;</Name>
             <Path>classprocess_1_1StateMachine.html</Path>
            </Node>
@@ -41358,22 +41425,26 @@
             <Path>structprocess_1_1TimeSeries_1_1Value.html</Path>
            </Node>
            <Node>
-            <Name>Jvm::Variable&lt; T, name, signature &gt;</Name>
-            <Path>classJvm_1_1Variable.html</Path>
+            <Name>mesos::state::protobuf::Variable&lt; T &gt;</Name>
+            <Path>classmesos_1_1state_1_1protobuf_1_1Variable.html</Path>
            </Node>
            <Node>
             <Name>mesos::state::Variable</Name>
             <Path>classmesos_1_1state_1_1Variable.html</Path>
            </Node>
            <Node>
-            <Name>mesos::state::protobuf::Variable&lt; T &gt;</Name>
-            <Path>classmesos_1_1state_1_1protobuf_1_1Variable.html</Path>
+            <Name>Jvm::Variable&lt; T, name, signature &gt;</Name>
+            <Path>classJvm_1_1Variable.html</Path>
            </Node>
            <Node>
             <Name>Jvm::Variable&lt; org::apache::zookeeper::server::SessionTracker, ZOOKEEPERSERVER_SESSIONTRACKER, ZOOKEEPERSERVER_SESSIONTRACKER_SIGNATURE &gt;</Name>
             <Path>classJvm_1_1Variable.html</Path>
            </Node>
            <Node>
+            <Name>Variant&lt; T, Ts &gt;</Name>
+            <Path>classVariant.html</Path>
+           </Node>
+           <Node>
             <Name>Variant</Name>
             <Path></Path>
             <Subnodes>
@@ -41384,10 +41455,6 @@
             </Subnodes>
            </Node>
            <Node>
-            <Name>Variant&lt; T, Ts &gt;</Name>
-            <Path>classVariant.html</Path>
-           </Node>
-           <Node>
             <Name>Variant&lt; check::Command, check::Http, check::Tcp &gt;</Name>
             <Path>classVariant.html</Path>
            </Node>
@@ -41456,14 +41523,14 @@
             <Path>structprocess_1_1internal_1_1wrap_3_01Future_3_01X_01_4_01_4.html</Path>
            </Node>
            <Node>
-            <Name>process::http::Pipe::Writer</Name>
-            <Path>classprocess_1_1http_1_1Pipe_1_1Writer.html</Path>
-           </Node>
-           <Node>
             <Name>mesos::log::Log::Writer</Name>
             <Path>classmesos_1_1log_1_1Log_1_1Writer.html</Path>
            </Node>
            <Node>
+            <Name>process::http::Pipe::Writer</Name>
+            <Path>classprocess_1_1http_1_1Pipe_1_1Writer.html</Path>
+           </Node>
+           <Node>
             <Name>JSON::WriterProxy</Name>
             <Path>classJSON_1_1WriterProxy.html</Path>
            </Node>
@@ -47270,11 +47337,21 @@
                     <Path>3rdparty_2libprocess_2include_2process_2io_8hpp.html</Path>
                     <Subnodes>
                      <Node>
+                      <Name>is_async</Name>
+                      <Path>3rdparty_2libprocess_2include_2process_2io_8hpp.html</Path>
+                      <Anchor>ada6541d78cad2ecc225be8a26662c748</Anchor>
+                     </Node>
+                     <Node>
                       <Name>poll</Name>
                       <Path>3rdparty_2libprocess_2include_2process_2io_8hpp.html</Path>
                       <Anchor>af71c45e0a85e21f6b39060f4e716cebf</Anchor>
                      </Node>
                      <Node>
+                      <Name>prepare_async</Name>
+                      <Path>3rdparty_2libprocess_2include_2process_2io_8hpp.html</Path>
+                      <Anchor>a9db94d84fb44b21fb669ade7c6a82114</Anchor>
+                     </Node>
+                     <Node>
                       <Name>read</Name>
                       <Path>3rdparty_2libprocess_2include_2process_2io_8hpp.html</Path>
                       <Anchor>a4c34d22e475e29f12ac739921dcc580f</Anchor>
@@ -49659,7 +49736,7 @@
                    </Node>
                    <Node>
                     <Name>subprocess.hpp</Name>
-                    <Path>subprocess_8hpp.html</Path>
+                    <Path>include_2process_2subprocess_8hpp.html</Path>
                     <Subnodes>
                      <Node>
                       <Name>Subprocess</Name>
@@ -49925,22 +50002,22 @@
                      </Node>
                      <Node>
                       <Name>InputFileDescriptors</Name>
-                      <Path>subprocess_8hpp.html</Path>
+                      <Path>include_2process_2subprocess_8hpp.html</Path>
                       <Anchor>afc6611c4913642642277b44447a16e55</Anchor>
                      </Node>
                      <Node>
                       <Name>OutputFileDescriptors</Name>
-                      <Path>subprocess_8hpp.html</Path>
+                      <Path>include_2process_2subprocess_8hpp.html</Path>
                       <Anchor>a882829822afa4f33b90aafc9c4ffa9af</Anchor>
                      </Node>
                      <Node>
                       <Name>subprocess</Name>
-                      <Path>subprocess_8hpp.html</Path>
+                      <Path>include_2process_2subprocess_8hpp.html</Path>
                       <Anchor>a2d7e0a283bc0c9eca8a8b0532e026269</Anchor>
                      </Node>
                      <Node>
                       <Name>subprocess</Name>
-                      <Path>subprocess_8hpp.html</Path>
+                      <Path>include_2process_2subprocess_8hpp.html</Path>
                       <Anchor>a0a748c548ad3a094196c98f00f9674cf</Anchor>
                      </Node>
                     </Subnodes>
@@ -50318,6 +50395,301 @@
                 <Path>dir_01cbbd8dcbf9de3825992568658f467e.html</Path>
                 <Subnodes>
                  <Node>
+                  <Name>posix</Name>
+                  <Path>dir_0ac73505685689cb4a842e520ca4cca6.html</Path>
+                  <Subnodes>
+                   <Node>
+                    <Name>libev</Name>
+                    <Path>dir_ecbc207ab261ae6376e9b7d1e9eba3c1.html</Path>
+                    <Subnodes>
+                     <Node>
+                      <Name>libev.hpp</Name>
+                      <Path>libev_8hpp.html</Path>
+                      <Subnodes>
+                       <Node>
+                        <Name>__in_event_loop__</Name>
+                        <Path>libev_8hpp.html</Path>
+                        <Anchor>a8a6cf2ec36d767c973bd04779f513986</Anchor>
+                       </Node>
+                       <Node>
+                        <Name>_run_in_event_loop</Name>
+                        <Path>libev_8hpp.html</Path>
+                        <Anchor>ad224a6bc6e6b3ca551939fea690af936</Anchor>
+                       </Node>
+                       <Node>
+                        <Name>run_in_event_loop</Name>
+                        <Path>libev_8hpp.html</Path>
+                        <Anchor>abd611a6cc14dc5e3d73fad6c84268342</Anchor>
+                       </Node>
+                       <Node>
+                        <Name>_in_event_loop_</Name>
+                        <Path>libev_8hpp.html</Path>
+                        <Anchor>a3d7b11f4e8691d998daa100de16ed8bc</Anchor>
+                       </Node>
+                       <Node>
+                        <Name>async_watcher</Name>
+                        <Path>libev_8hpp.html</Path>
+                        <Anchor>abde24dee21e5f3c5110d36020c9f8d89</Anchor>
+                       </Node>
+                       <Node>
+                        <Name>functions</Name>
+                        <Path>libev_8hpp.html</Path>
+                        <Anchor>a2f79b2f1afbe2c85db95b8276735d861</Anchor>
+                       </Node>
+                       <Node>
+                        <Name>loop</Name>
+                        <Path>libev_8hpp.html</Path>
+                        <Anchor>a59c192ee8ea5abbbee1642957f47c92a</Anchor>
+                       </Node>
+                       <Node>
+                        <Name>watchers</Name>
+                        <Path>libev_8hpp.html</Path>
+                        <Anchor>a73ddff05d642ba235230804b85c7ee43</Anchor>
+                       </Node>
+                       <Node>
+                        <Name>watchers_mutex</Name>
+                        <Path>libev_8hpp.html</Path>
+                        <Anchor>ac2a375f1a48140736670146a43426b85</Anchor>
+                       </Node>
+                      </Subnodes>
+                     </Node>
+                    </Subnodes>
+                   </Node>
+                   <Node>
+                    <Name>libevent</Name>
+                    <Path>dir_b2935a02400d93f2f95b894ab5508ef6.html</Path>
+                    <Subnodes>
+                     <Node>
+                      <Name>libevent.hpp</Name>
+                      <Path>libevent_8hpp.html</Path>
+                      <Subnodes>
+                       <Node>
+                        <Name>__in_event_loop__</Name>
+                        <Path>libevent_8hpp.html</Path>
+                        <Anchor>a8a6cf2ec36d767c973bd04779f513986</Anchor>
+                       </Node>
+                       <Node>
+                        <Name>EventLoopLogicFlow</Name>
+                        <Path>libevent_8hpp.html</Path>
+                        <Anchor>af8d01fbc04e5157d594146e377243573</Anchor>
+                        <Subnodes>
+                         <Node>
+                          <Name>ALLOW_SHORT_CIRCUIT</Name>
+                          <Path>libevent_8hpp.html</Path>
+                          <Anchor>af8d01fbc04e5157d594146e377243573a240417b1e0b6d0ddcbe488f9b18f679c</Anchor>
+                         </Node>
+                         <Node>
+                          <Name>DISALLOW_SHORT_CIRCUIT</Name>
+                          <Path>libevent_8hpp.html</Path>
+                          <Anchor>af8d01fbc04e5157d594146e377243573a22a3dd39a9c94dd501273e0a76806c41</Anchor>
+                         </Node>
+                        </Subnodes>
+                       </Node>
+                       <Node>
+                        <Name>run_in_event_loop</Name>
+                        <Path>libevent_8hpp.html</Path>
+                        <Anchor>ad91a0486ed34c25dc10ba404f4a1fc9b</Anchor>
+                       </Node>
+                       <Node>
+                        <Name>base</Name>
+                        <Path>libevent_8hpp.html</Path>
+                        <Anchor>a373bd5e2bd8f2694e4589293af477854</Anchor>
+                       </Node>
+                      </Subnodes>
+                     </Node>
+                     <Node>
+                      <Name>libevent_ssl_socket.hpp</Name>
+                      <Path>libevent__ssl__socket_8hpp.html</Path>
+                      <Subnodes>
+                       <Node>
+                        <Name>LibeventSSLSocketImpl</Name>
+                        <Path>classprocess_1_1network_1_1internal_1_1LibeventSSLSocketImpl.html</Path>
+                        <Subnodes>
+                         <Node>
+                          <Name>LibeventSSLSocketImpl</Name>
+                          <Path>classprocess_1_1network_1_1internal_1_1LibeventSSLSocketImpl.html</Path>
+                          <Anchor>a8c1ea3c61d392c14a70d594c8e930df8</Anchor>
+                         </Node>
+                         <Node>
+                          <Name>~LibeventSSLSocketImpl</Name>
+                          <Path>classprocess_1_1network_1_1internal_1_1LibeventSSLSocketImpl.html</Path>
+                          <Anchor>ad2077833906c7d37189588ff67b43a20</Anchor>
+                         </Node>
+                         <Node>
+                          <Name>accept</Name>
+                          <Path>classprocess_1_1network_1_1internal_1_1LibeventSSLSocketImpl.html</Path>
+                          <Anchor>a5dd3f53871f2152a0092a222ff63a778</Anchor>
+                         </Node>
+                         <Node>
+                          <Name>connect</Name>
+                          <Path>classprocess_1_1network_1_1internal_1_1LibeventSSLSocketImpl.html</Path>
+                          <Anchor>a4ee00c94cb838618b65c5f231e7c367a</Anchor>
+                         </Node>
+                         <Node>
+                          <Name>initialize</Name>
+                          <Path>classprocess_1_1network_1_1internal_1_1LibeventSSLSocketImpl.html</Path>
+                          <Anchor>a0585a14478590e525165a418df7beb3a</Anchor>
+                         </Node>
+                         <Node>
+                          <Name>kind</Name>
+                          <Path>classprocess_1_1network_1_1internal_1_1LibeventSSLSocketImpl.html</Path>
+                          <Anchor>ad0ecd3ed460c9cf93b32e4d68b0107e7</Anchor>
+                         </Node>
+                         <Node>
+                          <Name>listen</Name>
+                          <Path>classprocess_1_1network_1_1internal_1_1LibeventSSLSocketImpl.html</Path>
+                          <Anchor>a107ac49390f671b4cd5d180e5bddb4ad</Anchor>
+                         </Node>
+                         <Node>
+                          <Name>recv</Name>
+                          <Path>classprocess_1_1network_1_1internal_1_1LibeventSSLSocketImpl.html</Path>
+                          <Anchor>a25118017aa15a1ee25039e69fdfd8ea4</Anchor>
+                         </Node>
+                         <Node>
+                          <Name>send</Name>
+                          <Path>classprocess_1_1network_1_1internal_1_1LibeventSSLSocketImpl.html</Path>
+                          <Anchor>a6c91fd87e95efe9c12fe77e02bf306da</Anchor>
+                         </Node>
+                         <Node>
+                          <Name>sendfile</Name>
+                          <Path>classprocess_1_1network_1_1internal_1_1LibeventSSLSocketImpl.html</Path>
+                          <Anchor>a3ee2460274ef43b0665de263b08e3539</Anchor>
+                         </Node>
+                         <Node>
+                          <Name>shutdown</Name>
+                          <Path>classprocess_1_1network_1_1internal_1_1LibeventSSLSocketImpl.html</Path>
+                          <Anchor>a5d1386c7494d6681a764ddf0cff19e40</Anchor>
+                         </Node>
+                        </Subnodes>
+                       </Node>
+                      </Subnodes>
+                     </Node>
+                    </Subnodes>
+                   </Node>
+                   <Node>
+                    <Name>subprocess.hpp</Name>
+                    <Path>src_2posix_2subprocess_8hpp.html</Path>
+                    <Subnodes>
+                     <Node>
+                      <Name>childMain</Name>
+                      <Path>src_2posix_2subprocess_8hpp.html</Path>
+                      <Anchor>a902e2646d88c41ce674a3009cafe0aad</Anchor>
+                     </Node>
+                     <Node>
+                      <Name>cloexec</Name>
+                      <Path>src_2posix_2subprocess_8hpp.html</Path>
+                      <Anchor>a345a534b82b79bf20333fb6faef43e93</Anchor>
+                     </Node>
+                     <Node>
+                      <Name>cloneChild</Name>
+                      <Path>src_2posix_2subprocess_8hpp.html</Path>
+                      <Anchor>afe2c3a3ffdd0ee6fda82e198ece80a37</Anchor>
+                     </Node>
+                     <Node>
+                      <Name>defaultClone</Name>
+                      <Path>src_2posix_2subprocess_8hpp.html</Path>
+                      <Anchor>af2f19b6f367cddc0c8283560a9cd9215</Anchor>
+                     </Node>
+                    </Subnodes>
+                   </Node>
+                  </Subnodes>
+                 </Node>
+                 <Node>
+                  <Name>windows</Name>
+                  <Path>dir_4f303781ded361ff602a549327c53cc9.html</Path>
+                  <Subnodes>
+                   <Node>
+                    <Name>event_loop.hpp</Name>
+                    <Path>windows_2event__loop_8hpp.html</Path>
+                    <Subnodes>
+                     <Node>
+                      <Name>libwinio_loop</Name>
+                      <Path>windows_2event__loop_8hpp.html</Path>
+                      <Anchor>a3b1f9b3719ea6358ad426ae31bc8eae6</Anchor>
+                     </Node>
+                    </Subnodes>
+                   </Node>
+                   <Node>
+                    <Name>libwinio.hpp</Name>
+                    <Path>libwinio_8hpp.html</Path>
+                    <Subnodes>
+                     <Node>
+                      <Name>EventLoop</Name>
+                      <Path>classprocess_1_1windows_1_1EventLoop.html</Path>
+                      <Subnodes>
+                       <Node>
+                        <Name>launchTimer</Name>
+                        <Path>classprocess_1_1windows_1_1EventLoop.html</Path>
+                        <Anchor>a006cb0c8efb7aaadadf0a692d9c2659a</Anchor>
+                       </Node>
+                       <Node>
+                        <Name>registerHandle</Name>
+                        <Path>classprocess_1_1windows_1_1EventLoop.html</Path>
+                        <Anchor>a832a73998bb3b26b7caa770ceef38827</Anchor>
+                       </Node>
+                       <Node>
+                        <Name>run</Name>
+                        <Path>classprocess_1_1windows_1_1EventLoop.html</Path>
+                        <Anchor>a2578b5fad0eb039f995955c798310c86</Anchor>
+                       </Node>
+                       <Node>
+                        <Name>stop</Name>
+                        <Path>classprocess_1_1windows_1_1EventLoop.html</Path>
+                        <Anchor>a8a07fc602e31875e6cbcaeac8008f09a</Anchor>
+                       </Node>
+                      </Subnodes>
+                     </Node>
+                     <Node>
+                      <Name>accept</Name>
+                      <Path>libwinio_8hpp.html</Path>
+                      <Anchor>a1f34e4ee3092afe93c37c170430c03f5</Anchor>
+                     </Node>
+                     <Node>
+                      <Name>connect</Name>
+                      <Path>libwinio_8hpp.html</Path>
+                      <Anchor>a5afdaeaeb57343d0aca728b74dcd3f71</Anchor>
+                     </Node>
+                     <Node>
+                      <Name>read</Name>
+                      <Path>libwinio_8hpp.html</Path>
+                      <Anchor>a7436ed89e84ff3415987de0ca9428d08</Anchor>
+                     </Node>
+                     <Node>
+                      <Name>recv</Name>
+                      <Path>libwinio_8hpp.html</Path>
+                      <Anchor>a37fde6f31c2f9838a18cf83c2c865134</Anchor>
+                     </Node>
+                     <Node>
+                      <Name>send</Name>
+                      <Path>libwinio_8hpp.html</Path>
+                      <Anchor>a04c64346155d34517acdf8b587162868</Anchor>
+                     </Node>
+                     <Node>
+                      <Name>sendfile</Name>
+                      <Path>libwinio_8hpp.html</Path>
+                      <Anchor>afc59f27e725b5feb12f76e1c008ba767</Anchor>
+                     </Node>
+                     <Node>
+                      <Name>write</Name>
+                      <Path>libwinio_8hpp.html</Path>
+                      <Anchor>a69a29846581bb7bb1084e9ee90cbe8e6</Anchor>
+                     </Node>
+                    </Subnodes>
+                   </Node>
+                   <Node>
+                    <Name>subprocess.hpp</Name>
+                    <Path>src_2windows_2subprocess_8hpp.html</Path>
+                    <Subnodes>
+                     <Node>
+                      <Name>createChildProcess</Name>
+                      <Path>src_2windows_2subprocess_8hpp.html</Path>
+                      <Anchor>a32020f2bbbcc116f2e055e209b4b8ce7</Anchor>
+                     </Node>
+                    </Subnodes>
+                   </Node>
+                  </Subnodes>
+                 </Node>
+                 <Node>
                   <Name>authenticator_manager.hpp</Name>
                   <Path>authenticator__manager_8hpp.html</Path>
                   <Subnodes>
@@ -50854,158 +51226,28 @@
                   </Subnodes>
                  </Node>
                  <Node>
-                  <Name>libev.hpp</Name>
-                  <Path>libev_8hpp.html</Path>
-                  <Subnodes>
-                   <Node>
-                    <Name>__in_event_loop__</Name>
-                    <Path>libev_8hpp.html</Path>
-                    <Anchor>a8a6cf2ec36d767c973bd04779f513986</Anchor>
-                   </Node>
-                   <Node>
-                    <Name>_run_in_event_loop</Name>
-                    <Path>libev_8hpp.html</Path>
-                    <Anchor>ad224a6bc6e6b3ca551939fea690af936</Anchor>
-                   </Node>
-                   <Node>
-                    <Name>run_in_event_loop</Name>
-                    <Path>libev_8hpp.html</Path>
-                    <Anchor>abd611a6cc14dc5e3d73fad6c84268342</Anchor>
-                   </Node>
-                   <Node>
-                    <Name>_in_event_loop_</Name>
-                    <Path>libev_8hpp.html</Path>
-                    <Anchor>a3d7b11f4e8691d998daa100de16ed8bc</Anchor>
-                   </Node>
-                   <Node>
-                    <Name>async_watcher</Name>
-                    <Path>libev_8hpp.html</Path>
-                    <Anchor>abde24dee21e5f3c5110d36020c9f8d89</Anchor>
-                   </Node>
-                   <Node>
-                    <Name>functions</Name>
-                    <Path>libev_8hpp.html</Path>
-                    <Anchor>a2f79b2f1afbe2c85db95b8276735d861</Anchor>
-                   </Node>
-                   <Node>
-                    <Name>loop</Name>
-                    <Path>libev_8hpp.html</Path>
-                    <Anchor>a59c192ee8ea5abbbee1642957f47c92a</Anchor>
-                   </Node>
-                   <Node>
-                    <Name>watchers</Name>
-                    <Path>libev_8hpp.html</Path>
-                    <Anchor>a73ddff05d642ba235230804b85c7ee43</Anchor>
-                   </Node>
-                   <Node>
-                    <Name>watchers_mutex</Name>
-                    <Path>libev_8hpp.html</Path>
-                    <Anchor>ac2a375f1a48140736670146a43426b85</Anchor>
-                   </Node>
-                  </Subnodes>
-                 </Node>
-                 <Node>
-                  <Name>libevent.hpp</Name>
-                  <Path>libevent_8hpp.html</Path>
+                  <Name>io_internal.hpp</Name>
+                  <Path>io__internal_8hpp.html</Path>
                   <Subnodes>
                    <Node>
-                    <Name>__in_event_loop__</Name>
-                    <Path>libevent_8hpp.html</Path>
-                    <Anchor>a8a6cf2ec36d767c973bd04779f513986</Anchor>
+                    <Name>is_async</Name>
+                    <Path>io__internal_8hpp.html</Path>
+                    <Anchor>a2291f1f69f4bdf80f3b114c493eb1e37</Anchor>
                    </Node>
                    <Node>
-                    <Name>EventLoopLogicFlow</Name>
-                    <Path>libevent_8hpp.html</Path>
-                    <Anchor>af8d01fbc04e5157d594146e377243573</Anchor>
-                    <Subnodes>
-                     <Node>
-                      <Name>ALLOW_SHORT_CIRCUIT</Name>
-                      <Path>libevent_8hpp.html</Path>
-                      <Anchor>af8d01fbc04e5157d594146e377243573a240417b1e0b6d0ddcbe488f9b18f679c</Anchor>
-                     </Node>
-                     <Node>
-                      <Name>DISALLOW_SHORT_CIRCUIT</Name>
-                      <Path>libevent_8hpp.html</Path>
-                      <Anchor>af8d01fbc04e5157d594146e377243573a22a3dd39a9c94dd501273e0a76806c41</Anchor>
-                     </Node>
-                    </Subnodes>
+                    <Name>prepare_async</Name>
+                    <Path>io__internal_8hpp.html</Path>
+                    <Anchor>a9458b24220892124c2112b3fe85e585e</Anchor>
                    </Node>
                    <Node>
-                    <Name>run_in_event_loop</Name>
-                    <Path>libevent_8hpp.html</Path>
-                    <Anchor>ad91a0486ed34c25dc10ba404f4a1fc9b</Anchor>
-                   </Node>
-                   <Node>
-                    <Name>base</Name>
-                    <Path>libevent_8hpp.html</Path>
-                    <Anchor>a373bd5e2bd8f2694e4589293af477854</Anchor>
+                    <Name>read</Name>
+                    <Path>io__internal_8hpp.html</Path>
+                    <Anchor>ac0a90b8abf47098e5a57d90e744a42a8</Anchor>
                    </Node>
-                  </Subnodes>
-                 </Node>
-                 <Node>
-                  <Name>libevent_ssl_socket.hpp</Name>
-                  <Path>libevent__ssl__socket_8hpp.html</Path>
-                  <Subnodes>
                    <Node>
-                    <Name>LibeventSSLSocketImpl</Name>
-                    <Path>classprocess_1_1network_1_1internal_1_1LibeventSSLSocketImpl.html</Path>
-                    <Subnodes>
-                     <Node>
-                      <Name>LibeventSSLSocketImpl</Name>
-                      <Path>classprocess_1_1network_1_1internal_1_1LibeventSSLSocketImpl.html</Path>
-                      <Anchor>a8c1ea3c61d392c14a70d594c8e930df8</Anchor>
-                     </Node>
-                     <Node>
-                      <Name>~LibeventSSLSocketImpl</Name>
-                      <Path>classprocess_1_1network_1_1internal_1_1LibeventSSLSocketImpl.html</Path>
-                      <Anchor>ad2077833906c7d37189588ff67b43a20</Anchor>
-                     </Node>
-                     <Node>
-                      <Name>accept</Name>
-                      <Path>classprocess_1_1network_1_1internal_1_1LibeventSSLSocketImpl.html</Path>
-                      <Anchor>a5dd3f53871f2152a0092a222ff63a778</Anchor>
-                     </Node>
-                     <Node>
-                      <Name>connect</Name>
-                      <Path>classprocess_1_1network_1_1internal_1_1LibeventSSLSocketImpl.html</Path>
-                      <Anchor>a4ee00c94cb838618b65c5f231e7c367a</Anchor>
-                     </Node>
-                     <Node>
-                      <Name>initialize</Name>
-                      <Path>classprocess_1_1network_1_1internal_1_1LibeventSSLSocketImpl.html</Path>
-                      <Anchor>a0585a14478590e525165a418df7beb3a</Anchor>
-                     </Node>
-                     <Node>
-                      <Name>kind</Name>
-                      <Path>classprocess_1_1network_1_1internal_1_1LibeventSSLSocketImpl.html</Path>
-                      <Anchor>ad0ecd3ed460c9cf93b32e4d68b0107e7</Anchor>
-                     </Node>
-                     <Node>
-                      <Name>listen</Name>
-                      <Path>classprocess_1_1network_1_1internal_1_1LibeventSSLSocketImpl.html</Path>
-                      <Anchor>a107ac49390f671b4cd5d180e5bddb4ad</Anchor>
-                     </Node>
-                     <Node>
-                      <Name>recv</Name>
-                      <Path>classprocess_1_1network_1_1internal_1_1LibeventSSLSocketImpl.html</Path>
-                      <Anchor>a25118017aa15a1ee25039e69fdfd8ea4</Anchor>
-                     </Node>
-                     <Node>
-                      <Name>send</Name>
-                      <Path>classprocess_1_1network_1_1internal_1_1LibeventSSLSocketImpl.html</Path>
-                      <Anchor>a6c91fd87e95efe9c12fe77e02bf306da</Anchor>
-                     </Node>
-                     <Node>
-                      <Name>sendfile</Name>
-                      <Path>classprocess_1_1network_1_1internal_1_1LibeventSSLSocketImpl.html</Path>
-                      <Anchor>a3ee2460274ef43b0665de263b08e3539</Anchor>
-                     </Node>
-                     <Node>
-                      <Name>shutdown</Name>
-                      <Path>classprocess_1_1network_1_1internal_1_1LibeventSSLSocketImpl.html</Path>
-                      <Anchor>a5d1386c7494d6681a764ddf0cff19e40</Anchor>
-                     </Node>
-                    </Subnodes>
+                    <Name>write</Name>
+                    <Path>io__internal_8hpp.html</Path>
+                    <Anchor>ab4ecbbe96ef3c0600060e16c47988798</Anchor>
                    </Node>
                   </Subnodes>
                  </Node>
@@ -51434,43 +51676,6 @@
                    </Node>
                   </Subnodes>
                  </Node>
-                 <Node>
-                  <Name>subprocess_posix.hpp</Name>
-                  <Path>subprocess__posix_8hpp.html</Path>
-                  <Subnodes>
-                   <Node>
-                    <Name>childMain</Name>
-                    <Path>subprocess__posix_8hpp.html</Path>
-                    <Anchor>a902e2646d88c41ce674a3009cafe0aad</Anchor>
-                   </Node>
-                   <Node>
-                    <Name>cloexec</Name>
-                    <Path>subprocess__posix_8hpp.html</Path>
-                    <Anchor>a345a534b82b79bf20333fb6faef43e93</Anchor>
-                   </Node>
-                   <Node>
-                    <Name>cloneChild</Name>
-                    <Path>subprocess__posix_8hpp.html</Path>
-                    <Anchor>afe2c3a3ffdd0ee6fda82e198ece80a37</Anchor>
-                   </Node>
-                   <Node>
-                    <Name>defaultClone</Name>
-                    <Path>subprocess__posix_8hpp.html</Path>
-                    <Anchor>af2f19b6f367cddc0c8283560a9cd9215</Anchor>
-                   </Node>
-                  </Subnodes>
-                 </Node>
-                 <Node>
-                  <Name>subprocess_windows.hpp</Name>
-                  <Path>subprocess__windows_8hpp.html</Path>
-                  <Subnodes>
-                   <Node>
-                    <Name>createChildProcess</Name>
-                    <Path>subprocess__windows_8hpp.html</Path>
-                    <Anchor>a32020f2bbbcc116f2e055e209b4b8ce7</Anchor>
-                   </Node>
-                  </Subnodes>
-                 </Node>
                 </Subnodes>
                </Node>
               </Subnodes>
@@ -53384,11 +53589,21 @@
                             <Anchor>ad2ce21d9f77710472e19843e3e86343e</Anchor>
                            </Node>
                            <Node>
+                            <Name>assign_iocp</Name>
+                            <Path>classos_1_1WindowsFD.html</Path>
+                            <Anchor>a1a9c96c20213e1b94ba8dcc1bb059163</Anchor>
+                           </Node>
+                           <Node>
                             <Name>crt</Name>
                             <Path>classos_1_1WindowsFD.html</Path>
                             <Anchor>a94b69cae4edb8f3549845fbfa0355b7c</Anchor>
                            </Node>
                            <Node>
+                            <Name>get_iocp</Name>
+                            <Path>classos_1_1WindowsFD.html</Path>
+                            <Anchor>a380eb8d9b7bc0e6b3bfae0e8e9c6bb0f</Anchor>
+                           </Node>
+                           <Node>
                             <Name>is_overlapped</Name>
                             <Path>classos_1_1WindowsFD.html</Path>
                             <Anchor>a4dce5dbc3d019589b4b61d6d17e1da45</Anchor>
@@ -53429,6 +53644,11 @@
                             <Anchor>a3ce17a730ace5352a1fc6d49f8336d52</Anchor>
                            </Node>
                            <Node>
+                            <Name>dup</Name>
+                            <Path>classos_1_1WindowsFD.html</Path>
+                            <Anchor>ae8d4fd38b52ea9f38605f46195fd040b</Anchor>
+                           </Node>
+                           <Node>
                             <Name>operator!=</Name>
                             <Path>classos_1_1WindowsFD.html</Path>
                             <Anchor>a342803d2a16f81ca20f0e0c1c2e598d0</Anchor>
@@ -55900,6 +56120,11 @@
                         <Path>windows_2os_8hpp.html</Path>
                         <Anchor>a59caf358baf81de389c29d983b8e21ad</Anchor>
                        </Node>
+                       <Node>
+                        <Name>windows_to_unix_epoch</Name>
+                        <Path>windows_2os_8hpp.html</Path>
+                        <Anchor>a1493e5fcc92753702d08b36881ee8f97</Anchor>
+                       </Node>
                       </Subnodes>
                      </Node>
                     </Subnodes>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/Tokens.xml
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/Tokens.xml b/content/api/latest/c++/Tokens.xml
index e1e795c..5215e1d 100644
--- a/content/api/latest/c++/Tokens.xml
+++ b/content/api/latest/c++/Tokens.xml
@@ -3782,6 +3782,61 @@
   </Token>
   <Token>
     <TokenIdentifier>
+      <Name>defaultClone</Name>
+      <APILanguage>cpp</APILanguage>
+      <Type>func</Type>
+      <Scope>process::internal</Scope>
+    </TokenIdentifier>
+    <Path>namespaceprocess_1_1internal.html</Path>
+    <Anchor>af2f19b6f367cddc0c8283560a9cd9215</Anchor>
+    <DeclaredIn>subprocess.hpp</DeclaredIn>
+  </Token>
+  <Token>
+    <TokenIdentifier>
+      <Name>cloexec</Name>
+      <APILanguage>cpp</APILanguage>
+      <Type>func</Type>
+      <Scope>process::internal</Scope>
+    </TokenIdentifier>
+    <Path>namespaceprocess_1_1internal.html</Path>
+    <Anchor>a345a534b82b79bf20333fb6faef43e93</Anchor>
+    <DeclaredIn>subprocess.hpp</DeclaredIn>
+  </Token>
+  <Token>
+    <TokenIdentifier>
+      <Name>childMain</Name>
+      <APILanguage>cpp</APILanguage>
+      <Type>func</Type>
+      <Scope>process::internal</Scope>
+    </TokenIdentifier>
+    <Path>namespaceprocess_1_1internal.html</Path>
+    <Anchor>a902e2646d88c41ce674a3009cafe0aad</Anchor>
+    <DeclaredIn>subprocess.hpp</DeclaredIn>
+  </Token>
+  <Token>
+    <TokenIdentifier>
+      <Name>cloneChild</Name>
+      <APILanguage>cpp</APILanguage>
+      <Type>func</Type>
+      <Scope>process::internal</Scope>
+    </TokenIdentifier>
+    <Path>namespaceprocess_1_1internal.html</Path>
+    <Anchor>afe2c3a3ffdd0ee6fda82e198ece80a37</Anchor>
+    <DeclaredIn>subprocess.hpp</DeclaredIn>
+  </Token>
+  <Token>
+    <TokenIdentifier>
+      <Name>createChildProcess</Name>
+      <APILanguage>cpp</APILanguage>
+      <Type>func</Type>
+      <Scope>process::internal</Scope>
+    </TokenIdentifier>
+    <Path>namespaceprocess_1_1internal.html</Path>
+    <Anchor>a32020f2bbbcc116f2e055e209b4b8ce7</Anchor>
+    <DeclaredIn>subprocess.hpp</DeclaredIn>
+  </Token>
+  <Token>
+    <TokenIdentifier>
       <Name>operator&lt;&lt;</Name>
       <APILanguage>cpp</APILanguage>
       <Type>func</Type>
@@ -4034,6 +4089,94 @@
   </Token>
   <Token>
     <TokenIdentifier>
+      <Name>libwinio_loop</Name>
+      <APILanguage>cpp</APILanguage>
+      <Type>data</Type>
+      <Scope>process</Scope>
+    </TokenIdentifier>
+    <Path>namespaceprocess.html</Path>
+    <Anchor>a3b1f9b3719ea6358ad426ae31bc8eae6</Anchor>
+    <DeclaredIn>event_loop.hpp</DeclaredIn>
+  </Token>
+  <Token>
+    <TokenIdentifier>
+      <Name>read</Name>
+      <APILanguage>cpp</APILanguage>
+      <Type>func</Type>
+      <Scope>process::io::internal</Scope>
+    </TokenIdentifier>
+    <Path>namespaceprocess_1_1io_1_1internal.html</Path>
+    <Anchor>ac0a90b8abf47098e5a57d90e744a42a8</Anchor>
+    <DeclaredIn>io_internal.hpp</DeclaredIn>
+  </Token>
+  <Token>
+    <TokenIdentifier>
+      <Name>write</Name>
+      <APILanguage>cpp</APILanguage>
+      <Type>func</Type>
+      <Scope>process::io::internal</Scope>
+    </TokenIdentifier>
+    <Path>namespaceprocess_1_1io_1_1internal.html</Path>
+    <Anchor>ab4ecbbe96ef3c0600060e16c47988798</Anchor>
+    <DeclaredIn>io_internal.hpp</DeclaredIn>
+  </Token>
+  <Token>
+    <TokenIdentifier>
+      <Name>prepare_async</Name>
+      <APILanguage>cpp</APILanguage>
+      <Type>func</Type>
+      <Scope>process::io::internal</Scope>
+    </TokenIdentifier>
+    <Path>namespaceprocess_1_1io_1_1internal.html</Path>
+    <Anchor>a9458b24220892124c2112b3fe85e585e</Anchor>
+    <DeclaredIn>io_internal.hpp</DeclaredIn>
+  </Token>
+  <Token>
+    <TokenIdentifier>
+      <Name>is_async</Name>
+      <APILanguage>cpp</APILanguage>
+      <Type>func</Type>
+      <Scope>process::io::internal</Scope>
+    </TokenIdentifier>
+    <Path>namespaceprocess_1_1io_1_1internal.html</Path>
+    <Anchor>a2291f1f69f4bdf80f3b114c493eb1e37</Anchor>
+    <DeclaredIn>io_internal.hpp</DeclaredIn>
+  </Token>
+  <Token>
+    <TokenIdentifier>
+      <Name>initialize</Name>
+      <APILanguage>cpp</APILanguage>
+      <Type>func</Type>
+      <Scope>process::network::openssl</Scope>
+    </TokenIdentifier>
+    <Path>namespaceprocess_1_1network_1_1openssl.html</Path>
+    <Anchor>a65e51dfe9ceb18ebbce4e14e2a4fae78</Anchor>
+    <DeclaredIn>openssl.hpp</DeclaredIn>
+  </Token>
+  <Token>
+    <TokenIdentifier>
+      <Name>context</Name>
+      <APILanguage>cpp</APILanguage>
+      <Type>func</Type>
+      <Scope>process::network::openssl</Scope>
+    </TokenIdentifier>
+    <Path>namespaceprocess_1_1network_1_1openssl.html</Path>
+    <Anchor>a9ea7f1e144d9731d6fb4e4a0d80a7c56</Anchor>
+    <DeclaredIn>openssl.hpp</DeclaredIn>
+  </Token>
+  <Token>
+    <TokenIdentifier>
+      <Name>verify</Name>
+      <APILanguage>cpp</APILanguage>
+      <Type>func</Type>
+      <Scope>process::network::openssl</Scope>
+    </TokenIdentifier>
+    <Path>namespaceprocess_1_1network_1_1openssl.html</Path>
+    <Anchor>ab3f1f55b3c3d85018b68e649fbb0bc8a</Anchor>
+    <DeclaredIn>openssl.hpp</DeclaredIn>
+  </Token>
+  <Token>
+    <TokenIdentifier>
       <Name>__in_event_loop__</Name>
       <APILanguage>c</APILanguage>
       <Type>macro</Type>
@@ -4164,39 +4307,6 @@
   </Token>
   <Token>
     <TokenIdentifier>
-      <Name>initialize</Name>
-      <APILanguage>cpp</APILanguage>
-      <Type>func</Type>
-      <Scope>process::network::openssl</Scope>
-    </TokenIdentifier>
-    <Path>namespaceprocess_1_1network_1_1openssl.html</Path>
-    <Anchor>a65e51dfe9ceb18ebbce4e14e2a4fae78</Anchor>
-    <DeclaredIn>openssl.hpp</DeclaredIn>
-  </Token>
-  <Token>
-    <TokenIdentifier>
-      <Name>context</Name>
-      <APILanguage>cpp</APILanguage>
-      <Type>func</Type>
-      <Scope>process::network::openssl</Scope>
-    </TokenIdentifier>
-    <Path>namespaceprocess_1_1network_1_1openssl.html</Path>
-    <Anchor>a9ea7f1e144d9731d6fb4e4a0d80a7c56</Anchor>
-    <DeclaredIn>openssl.hpp</DeclaredIn>
-  </Token>
-  <Token>
-    <TokenIdentifier>
-      <Name>verify</Name>
-      <APILanguage>cpp</APILanguage>
-      <Type>func</Type>
-      <Scope>process::network::openssl</Scope>
-    </TokenIdentifier>
-    <Path>namespaceprocess_1_1network_1_1openssl.html</Path>
-    <Anchor>ab3f1f55b3c3d85018b68e649fbb0bc8a</Anchor>
-    <DeclaredIn>openssl.hpp</DeclaredIn>
-  </Token>
-  <Token>
-    <TokenIdentifier>
       <Name>_semaphore_</Name>
       <APILanguage>unknown</APILanguage>
       <Type>macro</Type>
@@ -4228,58 +4338,80 @@
   </Token>
   <Token>
     <TokenIdentifier>
-      <Name>defaultClone</Name>
+      <Name>read</Name>
       <APILanguage>cpp</APILanguage>
       <Type>func</Type>
-      <Scope>process::internal</Scope>
+      <Scope>process::windows</Scope>
     </TokenIdentifier>
-    <Path>namespaceprocess_1_1internal.html</Path>
-    <Anchor>af2f19b6f367cddc0c8283560a9cd9215</Anchor>
-    <DeclaredIn>subprocess_posix.hpp</DeclaredIn>
+    <Path>namespaceprocess_1_1windows.html</Path>
+    <Anchor>a7436ed89e84ff3415987de0ca9428d08</Anchor>
+    <DeclaredIn>libwinio.hpp</DeclaredIn>
   </Token>
   <Token>
     <TokenIdentifier>
-      <Name>cloexec</Name>
+      <Name>write</Name>
       <APILanguage>cpp</APILanguage>
       <Type>func</Type>
-      <Scope>process::internal</Scope>
+      <Scope>process::windows</Scope>
     </TokenIdentifier>
-    <Path>namespaceprocess_1_1internal.html</Path>
-    <Anchor>a345a534b82b79bf20333fb6faef43e93</Anchor>
-    <DeclaredIn>subprocess_posix.hpp</DeclaredIn>
+    <Path>namespaceprocess_1_1windows.html</Path>
+    <Anchor>a69a29846581bb7bb1084e9ee90cbe8e6</Anchor>
+    <DeclaredIn>libwinio.hpp</DeclaredIn>
   </Token>
   <Token>
     <TokenIdentifier>
-      <Name>childMain</Name>
+      <Name>recv</Name>
       <APILanguage>cpp</APILanguage>
       <Type>func</Type>
-      <Scope>process::internal</Scope>
+      <Scope>process::windows</Scope>
     </TokenIdentifier>
-    <Path>namespaceprocess_1_1internal.html</Path>
-    <Anchor>a902e2646d88c41ce674a3009cafe0aad</Anchor>
-    <DeclaredIn>subprocess_posix.hpp</DeclaredIn>
+    <Path>namespaceprocess_1_1windows.html</Path>
+    <Anchor>a37fde6f31c2f9838a18cf83c2c865134</Anchor>
+    <DeclaredIn>libwinio.hpp</DeclaredIn>
   </Token>
   <Token>
     <TokenIdentifier>
-      <Name>cloneChild</Name>
+      <Name>send</Name>
       <APILanguage>cpp</APILanguage>
       <Type>func</Type>
-      <Scope>process::internal</Scope>
+      <Scope>process::windows</Scope>
     </TokenIdentifier>
-    <Path>namespaceprocess_1_1internal.html</Path>
-    <Anchor>afe2c3a3ffdd0ee6fda82e198ece80a37</Anchor>
-    <DeclaredIn>subprocess_posix.hpp</DeclaredIn>
+    <Path>namespaceprocess_1_1windows.html</Path>
+    <Anchor>a04c64346155d34517acdf8b587162868</Anchor>
+    <DeclaredIn>libwinio.hpp</DeclaredIn>
   </Token>
   <Token>
     <TokenIdentifier>
-      <Name>createChildProcess</Name>
+      <Name>accept</Name>
       <APILanguage>cpp</APILanguage>
       <Type>func</Type>
-      <Scope>process::internal</Scope>
+      <Scope>process::windows</Scope>
     </TokenIdentifier>
-    <Path>namespaceprocess_1_1internal.html</Path>
-    <Anchor>a32020f2bbbcc116f2e055e209b4b8ce7</Anchor>
-    <DeclaredIn>subprocess_windows.hpp</DeclaredIn>
+    <Path>namespaceprocess_1_1windows.html</Path>
+    <Anchor>a1f34e4ee3092afe93c37c170430c03f5</Anchor>
+    <DeclaredIn>libwinio.hpp</DeclaredIn>
+  </Token>
+  <Token>
+    <TokenIdentifier>
+      <Name>connect</Name>
+      <APILanguage>cpp</APILanguage>
+      <Type>func</Type>
+      <Scope>process::windows</Scope>
+    </TokenIdentifier>
+    <Path>namespaceprocess_1_1windows.html</Path>
+    <Anchor>a5afdaeaeb57343d0aca728b74dcd3f71</Anchor>
+    <DeclaredIn>libwinio.hpp</DeclaredIn>
+  </Token>
+  <Token>
+    <TokenIdentifier>
+      <Name>sendfile</Name>
+      <APILanguage>cpp</APILanguage>
+      <Type>func</Type>
+      <Scope>process::windows</Scope>
+    </TokenIdentifier>
+    <Path>namespaceprocess_1_1windows.html</Path>
+    <Anchor>afc59f27e725b5feb12f76e1c008ba767</Anchor>
+    <DeclaredIn>libwinio.hpp</DeclaredIn>
   </Token>
   <Token>
     <TokenIdentifier>
@@ -6976,6 +7108,17 @@
   </Token>
   <Token>
     <TokenIdentifier>
+      <Name>windows_to_unix_epoch</Name>
+      <APILanguage>cpp</APILanguage>
+      <Type>func</Type>
+      <Scope>os::internal</Scope>
+    </TokenIdentifier>
+    <Path>namespaceos_1_1internal.html</Path>
+    <Anchor>a1493e5fcc92753702d08b36881ee8f97</Anchor>
+    <DeclaredIn>os.hpp</DeclaredIn>
+  </Token>
+  <Token>
+    <TokenIdentifier>
       <Name>pids</Name>
       <APILanguage>cpp</APILanguage>
       <Type>func</Type>
@@ -22977,6 +23120,30 @@
   </Token>
   <Token>
     <TokenIdentifier>
+      <Name>prepare_async</Name>
+      <APILanguage>cpp</APILanguage>
+      <Type>func</Type>
+      <Scope>process::io</Scope>
+    </TokenIdentifier>
+    <Path>namespaceprocess_1_1io.html</Path>
+    <Anchor>a9db94d84fb44b21fb669ade7c6a82114</Anchor>
+    <Abstract>Prepares a file descriptor to be ready for asynchronous IO. </Abstract>
+    <DeclaredIn>io.hpp</DeclaredIn>
+  </Token>
+  <Token>
+    <TokenIdentifier>
+      <Name>is_async</Name>
+      <APILanguage>cpp</APILanguage>
+      <Type>func</Type>
+      <Scope>process::io</Scope>
+    </TokenIdentifier>
+    <Path>namespaceprocess_1_1io.html</Path>
+    <Anchor>ada6541d78cad2ecc225be8a26662c748</Anchor>
+    <Abstract>Checks if io::prepare_async has been called on the file descriptor. </Abstract>
+    <DeclaredIn>io.hpp</DeclaredIn>
+  </Token>
+  <Token>
+    <TokenIdentifier>
       <Name>poll</Name>
       <APILanguage>cpp</APILanguage>
       <Type>func</Type>
@@ -167384,6 +167551,28 @@
   </Token>
   <Token>
     <TokenIdentifier>
+      <Name>assign_iocp</Name>
+      <APILanguage>cpp</APILanguage>
+      <Type>instm</Type>
+      <Scope>os::WindowsFD</Scope>
+    </TokenIdentifier>
+    <Path>classos_1_1WindowsFD.html</Path>
+    <Anchor>a1a9c96c20213e1b94ba8dcc1bb059163</Anchor>
+    <DeclaredIn>fd.hpp</DeclaredIn>
+  </Token>
+  <Token>
+    <TokenIdentifier>
+      <Name>get_iocp</Name>
+      <APILanguage>cpp</APILanguage>
+      <Type>instm</Type>
+      <Scope>os::WindowsFD</Scope>
+    </TokenIdentifier>
+    <Path>classos_1_1WindowsFD.html</Path>
+    <Anchor>a380eb8d9b7bc0e6b3bfae0e8e9c6bb0f</Anchor>
+    <DeclaredIn>fd.hpp</DeclaredIn>
+  </Token>
+  <Token>
+    <TokenIdentifier>
       <Name>operator&lt;</Name>
       <APILanguage>cpp</APILanguage>
       <Type>ffunc</Type>
@@ -167516,6 +167705,17 @@
   </Token>
   <Token>
     <TokenIdentifier>
+      <Name>dup</Name>
+      <APILanguage>cpp</APILanguage>
+      <Type>ffunc</Type>
+      <Scope>os::WindowsFD</Scope>
+    </TokenIdentifier>
+    <Path>classos_1_1WindowsFD.html</Path>
+    <Anchor>ae8d4fd38b52ea9f38605f46195fd040b</Anchor>
+    <DeclaredIn>fd.hpp</DeclaredIn>
+  </Token>
+  <Token>
+    <TokenIdentifier>
       <Name>HANDLE</Name>
       <APILanguage>cpp</APILanguage>
       <Type>econst</Type>
@@ -167622,6 +167822,17 @@
   </Token>
   <Token>
     <TokenIdentifier>
+      <Name>windows_to_unix_epoch</Name>
+      <APILanguage>cpp</APILanguage>
+      <Type>func</Type>
+      <Scope>os::internal</Scope>
+    </TokenIdentifier>
+    <Path>namespaceos_1_1internal.html</Path>
+    <Anchor>a1493e5fcc92753702d08b36881ee8f97</Anchor>
+    <DeclaredIn>os.hpp</DeclaredIn>
+  </Token>
+  <Token>
+    <TokenIdentifier>
       <Name>signaledWrapper</Name>
       <APILanguage>cpp</APILanguage>
       <Type>data</Type>
@@ -170577,6 +170788,17 @@
   </Token>
   <Token>
     <TokenIdentifier>
+      <Name>libwinio_loop</Name>
+      <APILanguage>cpp</APILanguage>
+      <Type>data</Type>
+      <Scope>process</Scope>
+    </TokenIdentifier>
+    <Path>namespaceprocess.html</Path>
+    <Anchor>a3b1f9b3719ea6358ad426ae31bc8eae6</Anchor>
+    <DeclaredIn>event_loop.hpp</DeclaredIn>
+  </Token>
+  <Token>
+    <TokenIdentifier>
       <Name>ALLOW_SHORT_CIRCUIT</Name>
       <APILanguage>cpp</APILanguage>
       <Type>econst</Type>
@@ -187464,7 +187686,7 @@
     </TokenIdentifier>
     <Path>namespaceprocess_1_1internal.html</Path>
     <Anchor>af2f19b6f367cddc0c8283560a9cd9215</Anchor>
-    <DeclaredIn>subprocess_posix.hpp</DeclaredIn>
+    <DeclaredIn>subprocess.hpp</DeclaredIn>
   </Token>
   <Token>
     <TokenIdentifier>
@@ -187475,7 +187697,7 @@
     </TokenIdentifier>
     <Path>namespaceprocess_1_1internal.html</Path>
     <Anchor>a345a534b82b79bf20333fb6faef43e93</Anchor>
-    <DeclaredIn>subprocess_posix.hpp</DeclaredIn>
+    <DeclaredIn>subprocess.hpp</DeclaredIn>
   </Token>
   <Token>
     <TokenIdentifier>
@@ -187486,7 +187708,7 @@
     </TokenIdentifier>
     <Path>namespaceprocess_1_1internal.html</Path>
     <Anchor>a902e2646d88c41ce674a3009cafe0aad</Anchor>
-    <DeclaredIn>subprocess_posix.hpp</DeclaredIn>
+    <DeclaredIn>subprocess.hpp</DeclaredIn>
   </Token>
   <Token>
     <TokenIdentifier>
@@ -187497,7 +187719,7 @@
     </TokenIdentifier>
     <Path>namespaceprocess_1_1internal.html</Path>
     <Anchor>afe2c3a3ffdd0ee6fda82e198ece80a37</Anchor>
-    <DeclaredIn>subprocess_posix.hpp</DeclaredIn>
+    <DeclaredIn>subprocess.hpp</DeclaredIn>
   </Token>
   <Token>
     <TokenIdentifier>
@@ -187508,7 +187730,7 @@
     </TokenIdentifier>
     <Path>namespaceprocess_1_1internal.html</Path>
     <Anchor>a32020f2bbbcc116f2e055e209b4b8ce7</Anchor>
-    <DeclaredIn>subprocess_windows.hpp</DeclaredIn>
+    <DeclaredIn>subprocess.hpp</DeclaredIn>
   </Token>
   <Token>
     <TokenIdentifier>
@@ -189907,6 +190129,30 @@
   </Token>
   <Token>
     <TokenIdentifier>
+      <Name>prepare_async</Name>
+      <APILanguage>cpp</APILanguage>
+      <Type>func</Type>
+      <Scope>process::io</Scope>
+    </TokenIdentifier>
+    <Path>namespaceprocess_1_1io.html</Path>
+    <Anchor>a9db94d84fb44b21fb669ade7c6a82114</Anchor>
+    <Abstract>Prepares a file descriptor to be ready for asynchronous IO. </Abstract>
+    <DeclaredIn>io.hpp</DeclaredIn>
+  </Token>
+  <Token>
+    <TokenIdentifier>
+      <Name>is_async</Name>
+      <APILanguage>cpp</APILanguage>
+      <Type>func</Type>
+      <Scope>process::io</Scope>
+    </TokenIdentifier>
+    <Path>namespaceprocess_1_1io.html</Path>
+    <Anchor>ada6541d78cad2ecc225be8a26662c748</Anchor>
+    <Abstract>Checks if io::prepare_async has been called on the file descriptor. </Abstract>
+    <DeclaredIn>io.hpp</DeclaredIn>
+  </Token>
+  <Token>
+    <TokenIdentifier>
       <Name>poll</Name>
       <APILanguage>cpp</APILanguage>
       <Type>func</Type>
@@ -190015,6 +190261,59 @@
   </Token>
   <Token>
     <TokenIdentifier>
+      <Name>process::io::internal</Name>
+      <APILanguage>c</APILanguage>
+      <Type>ns</Type>
+      <Scope>process::io::internal</Scope>
+    </TokenIdentifier>
+    <Path>namespaceprocess_1_1io_1_1internal.html</Path>
+  </Token>
+  <Token>
+    <TokenIdentifier>
+      <Name>read</Name>
+      <APILanguage>cpp</APILanguage>
+      <Type>func</Type>
+      <Scope>process::io::internal</Scope>
+    </TokenIdentifier>
+    <Path>namespaceprocess_1_1io_1_1internal.html</Path>
+    <Anchor>ac0a90b8abf47098e5a57d90e744a42a8</Anchor>
+    <DeclaredIn>io_internal.hpp</DeclaredIn>
+  </Token>
+  <Token>
+    <TokenIdentifier>
+      <Name>write</Name>
+      <APILanguage>cpp</APILanguage>
+      <Type>func</Type>
+      <Scope>process::io::internal</Scope>
+    </TokenIdentifier>
+    <Path>namespaceprocess_1_1io_1_1internal.html</Path>
+    <Anchor>ab4ecbbe96ef3c0600060e16c47988798</Anchor>
+    <DeclaredIn>io_internal.hpp</DeclaredIn>
+  </Token>
+  <Token>
+    <TokenIdentifier>
+      <Name>prepare_async</Name>
+      <APILanguage>cpp</APILanguage>
+      <Type>func</Type>
+      <Scope>process::io::internal</Scope>
+    </TokenIdentifier>
+    <Path>namespaceprocess_1_1io_1_1internal.html</Path>
+    <Anchor>a9458b24220892124c2112b3fe85e585e</Anchor>
+    <DeclaredIn>io_internal.hpp</DeclaredIn>
+  </Token>
+  <Token>
+    <TokenIdentifier>
+      <Name>is_async</Name>
+      <APILanguage>cpp</APILanguage>
+      <Type>func</Type>
+      <Scope>process::io::internal</Scope>
+    </TokenIdentifier>
+    <Path>namespaceprocess_1_1io_1_1internal.html</Path>
+    <Anchor>a2291f1f69f4bdf80f3b114c493eb1e37</Anchor>
+    <DeclaredIn>io_internal.hpp</DeclaredIn>
+  </Token>
+  <Token>
+    <TokenIdentifier>
       <Name>process::metrics</Name>
       <APILanguage>c</APILanguage>
       <Type>ns</Type>
@@ -193292,6 +193591,157 @@
   </Token>
   <Token>
     <TokenIdentifier>
+      <Name>process::windows</Name>
+      <APILanguage>c</APILanguage>
+      <Type>ns</Type>
+      <Scope>process::windows</Scope>
+    </TokenIdentifier>
+    <Path>namespaceprocess_1_1windows.html</Path>
+  </Token>
+  <Token>
+    <TokenIdentifier>
+      <Name>read</Name>
+      <APILanguage>cpp</APILanguage>
+      <Type>func</Type>
+      <Scope>process::windows</Scope>
+    </TokenIdentifier>
+    <Path>namespaceprocess_1_1windows.html</Path>
+    <Anchor>a7436ed89e84ff3415987de0ca9428d08</Anchor>
+    <DeclaredIn>libwinio.hpp</DeclaredIn>
+  </Token>
+  <Token>
+    <TokenIdentifier>
+      <Name>write</Name>
+      <APILanguage>cpp</APILanguage>
+      <Type>func</Type>
+      <Scope>process::windows</Scope>
+    </TokenIdentifier>
+    <Path>namespaceprocess_1_1windows.html</Path>
+    <Anchor>a69a29846581bb7bb1084e9ee90cbe8e6</Anchor>
+    <DeclaredIn>libwinio.hpp</DeclaredIn>
+  </Token>
+  <Token>
+    <TokenIdentifier>
+      <Name>recv</Name>
+      <APILanguage>cpp</APILanguage>
+      <Type>func</Type>
+      <Scope>process::windows</Scope>
+    </TokenIdentifier>
+    <Path>namespaceprocess_1_1windows.html</Path>
+    <Anchor>a37fde6f31c2f9838a18cf83c2c865134</Anchor>
+    <DeclaredIn>libwinio.hpp</DeclaredIn>
+  </Token>
+  <Token>
+    <TokenIdentifier>
+      <Name>send</Name>
+      <APILanguage>cpp</APILanguage>
+      <Type>func</Type>
+      <Scope>process::windows</Scope>
+    </TokenIdentifier>
+    <Path>namespaceprocess_1_1windows.html</Path>
+    <Anchor>a04c64346155d34517acdf8b587162868</Anchor>
+    <DeclaredIn>libwinio.hpp</DeclaredIn>
+  </Token>
+  <Token>
+    <TokenIdentifier>
+      <Name>accept</Name>
+      <APILanguage>cpp</APILanguage>
+      <Type>func</Type>
+      <Scope>process::windows</Scope>
+    </TokenIdentifier>
+    <Path>namespaceprocess_1_1windows.html</Path>
+    <Anchor>a1f34e4ee3092afe93c37c170430c03f5</Anchor>
+    <DeclaredIn>libwinio.hpp</DeclaredIn>
+  </Token>
+  <Token>
+    <TokenIdentifier>
+      <Name>connect</Name>
+      <APILanguage>cpp</APILanguage>
+      <Type>func</Type>
+      <Scope>process::windows</Scope>
+    </TokenIdentifier>
+    <Path>namespaceprocess_1_1windows.html</Path>
+    <Anchor>a5afdaeaeb57343d0aca728b74dcd3f71</Anchor>
+    <DeclaredIn>libwinio.hpp</DeclaredIn>
+  </Token>
+  <Token>
+    <TokenIdentifier>
+      <Name>sendfile</Name>
+      <APILanguage>cpp</APILanguage>
+      <Type>func</Type>
+      <Scope>process::windows</Scope>
+    </TokenIdentifier>
+    <Path>namespaceprocess_1_1windows.html</Path>
+    <Anchor>afc59f27e725b5feb12f76e1c008ba767</Anchor>
+    <DeclaredIn>libwinio.hpp</DeclaredIn>
+  </Token>
+  <Token>
+    <TokenIdentifier>
+      <Name>process::windows::EventLoop</Name>
+      <APILanguage>c</APILanguage>
+      <Type>cl</Type>
+      <Scope>process::windows::EventLoop</Scope>
+    </TokenIdentifier>
+    <Path>classprocess_1_1windows_1_1EventLoop.html</Path>
+    <DeclaredIn>libwinio.hpp</DeclaredIn>
+  </Token>
+  <Token>
+    <TokenIdentifier>
+      <Name>run</Name>
+      <APILanguage>cpp</APILanguage>
+      <Type>instm</Type>
+      <Scope>process::windows::EventLoop</Scope>
+    </TokenIdentifier>
+    <Path>classprocess_1_1windows_1_1EventLoop.html</Path>
+    <Anchor>a2578b5fad0eb039f995955c798310c86</Anchor>
+    <DeclaredIn>libwinio.hpp</DeclaredIn>
+  </Token>
+  <Token>
+    <TokenIdentifier>
+      <Name>stop</Name>
+      <APILanguage>cpp</APILanguage>
+      <Type>instm</Type>
+      <Scope>process::windows::EventLoop</Scope>
+    </TokenIdentifier>
+    <Path>classprocess_1_1windows_1_1EventLoop.html</Path>
+    <Anchor>a8a07fc602e31875e6cbcaeac8008f09a</Anchor>
+    <DeclaredIn>libwinio.hpp</DeclaredIn>
+  </Token>
+  <Token>
+    <TokenIdentifier>
+      <Name>launchTimer</Name>
+      <APILanguage>cpp</APILanguage>
+      <Type>instm</Type>
+      <Scope>process::windows::EventLoop</Scope>
+    </TokenIdentifier>
+    <Path>classprocess_1_1windows_1_1EventLoop.html</Path>
+    <Anchor>a006cb0c8efb7aaadadf0a692d9c2659a</Anchor>
+    <DeclaredIn>libwinio.hpp</DeclaredIn>
+  </Token>
+  <Token>
+    <TokenIdentifier>
+      <Name>registerHandle</Name>
+      <APILanguage>cpp</APILanguage>
+      <Type>instm</Type>
+      <Scope>process::windows::EventLoop</Scope>
+    </TokenIdentifier>
+    <Path>classprocess_1_1windows_1_1EventLoop.html</Path>
+    <Anchor>a832a73998bb3b26b7caa770ceef38827</Anchor>
+    <DeclaredIn>libwinio.hpp</DeclaredIn>
+  </Token>
+  <Token>
+    <TokenIdentifier>
+      <Name>create</Name>
+      <APILanguage>cpp</APILanguage>
+      <Type>clm</Type>
+      <Scope>process::windows::EventLoop</Scope>
+    </TokenIdentifier>
+    <Path>classprocess_1_1windows_1_1EventLoop.html</Path>
+    <Anchor>a3bd3da5d721cf2c4db9c5551bdccc3a4</Anchor>
+    <DeclaredIn>libwinio.hpp</DeclaredIn>
+  </Token>
+  <Token>
+    <TokenIdentifier>
       <Name>protobuf</Name>
       <APILanguage>c</APILanguage>
       <Type>ns</Type>


[28/50] mesos-site git commit: Updated the website built from mesos SHA: 7c9c72d.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/index.hhp
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/index.hhp b/content/api/latest/c++/index.hhp
index 63bdb11..12eba4b 100644
--- a/content/api/latest/c++/index.hhp
+++ b/content/api/latest/c++/index.hhp
@@ -63,7 +63,9 @@ stout_2include_2stout_2os_2socket_8hpp_source.html
 stout_2include_2stout_2os_2windows_2socket_8hpp_source.html
 utilities_8hpp_source.html
 state__machine_8hpp_source.html
-subprocess_8hpp_source.html
+include_2process_2subprocess_8hpp_source.html
+src_2posix_2subprocess_8hpp_source.html
+src_2windows_2subprocess_8hpp_source.html
 system_8hpp_source.html
 time_8hpp_source.html
 timeout_8hpp_source.html
@@ -75,21 +77,22 @@ config_8hpp_source.html
 decoder_8hpp_source.html
 encoder_8hpp_source.html
 event__loop_8hpp_source.html
+windows_2event__loop_8hpp_source.html
 event__queue_8hpp_source.html
 gate_8hpp_source.html
 http__proxy_8hpp_source.html
-libev_8hpp_source.html
-libevent_8hpp_source.html
-libevent__ssl__socket_8hpp_source.html
+io__internal_8hpp_source.html
 memory__profiler_8hpp_source.html
 openssl_8hpp_source.html
 poll__socket_8hpp_source.html
+libev_8hpp_source.html
+libevent_8hpp_source.html
+libevent__ssl__socket_8hpp_source.html
 process__reference_8hpp_source.html
 run__queue_8hpp_source.html
 semaphore_8hpp_source.html
 socket__manager_8hpp_source.html
-subprocess__posix_8hpp_source.html
-subprocess__windows_8hpp_source.html
+libwinio_8hpp_source.html
 abort_8hpp_source.html
 adaptor_8hpp_source.html
 archiver_8hpp_source.html
@@ -782,7 +785,9 @@ stout_2include_2stout_2os_2socket_8hpp.html
 stout_2include_2stout_2os_2windows_2socket_8hpp.html
 utilities_8hpp.html
 state__machine_8hpp.html
-subprocess_8hpp.html
+include_2process_2subprocess_8hpp.html
+src_2posix_2subprocess_8hpp.html
+src_2windows_2subprocess_8hpp.html
 system_8hpp.html
 time_8hpp.html
 timeout_8hpp.html
@@ -794,21 +799,22 @@ config_8hpp.html
 decoder_8hpp.html
 encoder_8hpp.html
 event__loop_8hpp.html
+windows_2event__loop_8hpp.html
 event__queue_8hpp.html
 gate_8hpp.html
 http__proxy_8hpp.html
-libev_8hpp.html
-libevent_8hpp.html
-libevent__ssl__socket_8hpp.html
+io__internal_8hpp.html
 memory__profiler_8hpp.html
 openssl_8hpp.html
 poll__socket_8hpp.html
+libev_8hpp.html
+libevent_8hpp.html
+libevent__ssl__socket_8hpp.html
 process__reference_8hpp.html
 run__queue_8hpp.html
 semaphore_8hpp.html
 socket__manager_8hpp.html
-subprocess__posix_8hpp.html
-subprocess__windows_8hpp.html
+libwinio_8hpp.html
 abort_8hpp.html
 adaptor_8hpp.html
 archiver_8hpp.html
@@ -3209,6 +3215,7 @@ structprocess_1_1internal_1_1wrap-members.html
 structprocess_1_1internal_1_1wrap_3_01Future_3_01X_01_4_01_4.html
 structprocess_1_1internal_1_1wrap_3_01Future_3_01X_01_4_01_4-members.html
 namespaceprocess_1_1io.html
+namespaceprocess_1_1io_1_1internal.html
 namespaceprocess_1_1metrics.html
 classprocess_1_1metrics_1_1Counter.html
 classprocess_1_1metrics_1_1Counter-members.html
@@ -3249,6 +3256,9 @@ namespaceprocess_1_1network_1_1openssl.html
 namespaceprocess_1_1network_1_1unix.html
 classprocess_1_1network_1_1unix_1_1Address.html
 classprocess_1_1network_1_1unix_1_1Address-members.html
+namespaceprocess_1_1windows.html
+classprocess_1_1windows_1_1EventLoop.html
+classprocess_1_1windows_1_1EventLoop-members.html
 namespaceprotobuf.html
 namespaceprotobuf_1_1internal.html
 structprotobuf_1_1internal_1_1Parse.html
@@ -3519,6 +3529,8 @@ dir_ac5a9d164ec2df36cacce94c2cb9afb7.html
 dir_a3016bf19aa28451207b266e9b24d523.html
 dir_195168af6a215c55d95f47992d37553b.html
 dir_1189833f16a6ffde263c34d6d0834dfe.html
+dir_ecbc207ab261ae6376e9b7d1e9eba3c1.html
+dir_b2935a02400d93f2f95b894ab5508ef6.html
 dir_043a76de98701f9bddf61b5e98f305ff.html
 dir_58b3cdcf8fab9e6e406814ad373f8525.html
 dir_7dfa373e2fc6f34ca37c1fb0d9a8f606.html
@@ -3553,6 +3565,7 @@ dir_f00e901499d154ec09950234dd4b6079.html
 dir_39880c9a8060096796ec12e5dff56ba6.html
 dir_6887e9b46a560cfc03709f52ff768643.html
 dir_9cb1ae816c363e37a0e44de226ea8c89.html
+dir_0ac73505685689cb4a842e520ca4cca6.html
 dir_9a6d2c82450779b96177e4cabddb051e.html
 dir_1894286df79cf582d947dbc4268b06cf.html
 dir_f319675d4a0209ee44e08f6c8dad3e25.html
@@ -3606,6 +3619,7 @@ dir_6e72cfcf2726dd9485f4536a00bbb945.html
 dir_3bd05d674f9d85fce6785660a08f69c2.html
 dir_1ae84e826c1cfd827f5913ec17c5b445.html
 dir_5c9d93aa7c844dbacc3aceaae8dbadb5.html
+dir_4f303781ded361ff602a549327c53cc9.html
 dir_860a59220e758178895904e7f0fb374e.html
 dir_55f13620602659a03faffb66858a926f.html
 dir_c17ba5dacf03ff8b8f3824850be465e6.html

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/int__fd_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/int__fd_8hpp_source.html b/content/api/latest/c++/int__fd_8hpp_source.html
index c363d38..29d94ac 100644
--- a/content/api/latest/c++/int__fd_8hpp_source.html
+++ b/content/api/latest/c++/int__fd_8hpp_source.html
@@ -53,7 +53,7 @@
 </div><!--header-->
 <div class="contents">
 <a href="int__fd_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>&#160;<span class="comment">// Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<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>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<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>&#160;<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>&#160;<span class="comment">// distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<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>&#160;<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>&#160;<span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;</div><div class="lin
 e"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="preprocessor">#ifndef __STOUT_OS_INT_FD_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="preprocessor">#define __STOUT_OS_INT_FD_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;</div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;</div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="comment">// For readability, we minimize the number of #ifdef blocks in the code by</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="comment">// splitting platform specifc system calls into separate directories.</span></div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;<span class="preprocessor">#ifdef __WINDOWS__</span></div><div class="line"><a name="l00020"></a><s
 pan class="lineno">   20</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="fd_8hpp.html">stout/os/windows/fd.hpp</a>&gt;</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="preprocessor">#endif // __WINDOWS__</span></div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="comment">// The `int_fd` type is designed to be able to keep / continue to write the</span></div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="comment">// existing POSIX file descriptor pattern in a portable manner with Windows.</span></div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<span class="comment">// IMPORTANT: Use the `in
 t_fd` in platform-agnostic code paths, and use `int`</span></div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="comment">//            or `os::WindowsFD` directly in platform-specific code paths.</span></div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="comment">// NOTE: The `int_` prefix is meant to indicate that on POSIX, `int_fd` will</span></div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="comment">// behave exactly as-is.</span></div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="keyword">using</span> <a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> =</div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;<span class="preproc
 essor">#ifdef __WINDOWS__</span></div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;  <a class="code" href="classos_1_1WindowsFD.html">os::WindowsFD</a>;</div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">   35</a></span>&#160;  int;</div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;<span class="preprocessor">#endif // __WINDOWS__</span></div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;</div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;<span class="preprocessor">#endif // __STOUT_OS_INT_FD_HPP__</span></div><div class="ttc" id="fd_8hpp_html"><div class="ttname"><a href="fd_8hpp.html">fd.hpp</a></div></div>
-<div class="ttc" id="classos_1_1WindowsFD_html"><div class="ttname"><a href="classos_1_1WindowsFD.html">os::WindowsFD</a></div><div class="ttdef"><b>Definition:</b> fd.hpp:50</div></div>
+<div class="ttc" id="classos_1_1WindowsFD_html"><div class="ttname"><a href="classos_1_1WindowsFD.html">os::WindowsFD</a></div><div class="ttdef"><b>Definition:</b> fd.hpp:52</div></div>
 <div class="ttc" id="int__fd_8hpp_html_aea4dbda01c90455f158ffa9b924c2f07"><div class="ttname"><a href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a></div><div class="ttdeci">int int_fd</div><div class="ttdef"><b>Definition:</b> int_fd.hpp:35</div></div>
 </div><!-- fragment --></div><!-- contents -->
 <!-- start footer part -->

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/io__internal_8hpp.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/io__internal_8hpp.html b/content/api/latest/c++/io__internal_8hpp.html
new file mode 100644
index 0000000..2dd6562
--- /dev/null
+++ b/content/api/latest/c++/io__internal_8hpp.html
@@ -0,0 +1,91 @@
+<!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: 3rdparty/libprocess/src/io_internal.hpp File 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&#160;Page</span></a></li>
+      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li class="current"><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="files.html"><span>File&#160;List</span></a></li>
+      <li><a href="globals.html"><span>File&#160;Members</span></a></li>
+    </ul>
+  </div>
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_8cab8f464681f7cc51cee77e79a434cd.html">3rdparty</a></li><li class="navelem"><a class="el" href="dir_043a76de98701f9bddf61b5e98f305ff.html">libprocess</a></li><li class="navelem"><a class="el" href="dir_01cbbd8dcbf9de3825992568658f467e.html">src</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="summary">
+<a href="#namespaces">Namespaces</a> &#124;
+<a href="#func-members">Functions</a>  </div>
+  <div class="headertitle">
+<div class="title">io_internal.hpp File Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &lt;<a class="el" href="future_8hpp_source.html">process/future.hpp</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="int__fd_8hpp_source.html">stout/os/int_fd.hpp</a>&gt;</code><br />
+</div>
+<p><a href="io__internal_8hpp_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
+Namespaces</h2></td></tr>
+<tr class="memitem:namespaceprocess"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceprocess.html">process</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:namespaceprocess_1_1io"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceprocess_1_1io.html">process::io</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:namespaceprocess_1_1io_1_1internal"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceprocess_1_1io_1_1internal.html">process::io::internal</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</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:ac0a90b8abf47098e5a57d90e744a42a8"><td class="memItemLeft" align="right" valign="top">Future&lt; size_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceprocess_1_1io_1_1internal.html#ac0a90b8abf47098e5a57d90e744a42a8">process::io::internal::read</a> (<a class="el" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> fd, void *data, size_t size)</td></tr>
+<tr class="separator:ac0a90b8abf47098e5a57d90e744a42a8"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab4ecbbe96ef3c0600060e16c47988798"><td class="memItemLeft" align="right" valign="top">Future&lt; size_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceprocess_1_1io_1_1internal.html#ab4ecbbe96ef3c0600060e16c47988798">process::io::internal::write</a> (<a class="el" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> fd, const void *data, size_t size)</td></tr>
+<tr class="separator:ab4ecbbe96ef3c0600060e16c47988798"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a9458b24220892124c2112b3fe85e585e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classTry.html">Try</a>&lt; <a class="el" href="structNothing.html">Nothing</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceprocess_1_1io_1_1internal.html#a9458b24220892124c2112b3fe85e585e">process::io::internal::prepare_async</a> (<a class="el" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> fd)</td></tr>
+<tr class="separator:a9458b24220892124c2112b3fe85e585e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a2291f1f69f4bdf80f3b114c493eb1e37"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classTry.html">Try</a>&lt; bool &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceprocess_1_1io_1_1internal.html#a2291f1f69f4bdf80f3b114c493eb1e37">process::io::internal::is_async</a> (<a class="el" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> fd)</td></tr>
+<tr class="separator:a2291f1f69f4bdf80f3b114c493eb1e37"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.11
+</small></address>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/io__internal_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/io__internal_8hpp_source.html b/content/api/latest/c++/io__internal_8hpp_source.html
new file mode 100644
index 0000000..45e6c97
--- /dev/null
+++ b/content/api/latest/c++/io__internal_8hpp_source.html
@@ -0,0 +1,75 @@
+<!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: 3rdparty/libprocess/src/io_internal.hpp Source File</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&#160;Page</span></a></li>
+      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li class="current"><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="files.html"><span>File&#160;List</span></a></li>
+      <li><a href="globals.html"><span>File&#160;Members</span></a></li>
+    </ul>
+  </div>
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_8cab8f464681f7cc51cee77e79a434cd.html">3rdparty</a></li><li class="navelem"><a class="el" href="dir_043a76de98701f9bddf61b5e98f305ff.html">libprocess</a></li><li class="navelem"><a class="el" href="dir_01cbbd8dcbf9de3825992568658f467e.html">src</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">io_internal.hpp</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="io__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>&#160;<span class="comment">// Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<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>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<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>&#160;<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>&#160;<span class="comment">// distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<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>&#160;<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>&#160;<span class="comment">// limitations under the License</span></div><div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;</div><div cla
 ss="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="preprocessor">#ifndef __IO_INTERNAL_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="preprocessor">#define __IO_INTERNAL_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;</div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="future_8hpp.html">process/future.hpp</a>&gt;</span></div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="int__fd_8hpp.html">stout/os/int_fd.hpp</a>&gt;</span></div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno">   20</
 span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceprocess.html">process</a> {</div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="keyword">namespace </span>io {</div><div class="line"><a name="l00022"></a><span class="lineno"><a class="line" href="namespaceprocess_1_1io_1_1internal.html">   22</a></span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceinternal.html">internal</a> {</div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;</div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<a class="code" href="classprocess_1_1Future.html">Future&lt;size_t&gt;</a> <a class="code" href="namespaceprocess_1_1io_1_1internal.html#ac0a90b8abf47098e5a57d90e744a42a8">read</a>(<a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> fd, <span class="keywordtype">void</span>* data, <span class="keywordtype">s
 ize_t</span> <a class="code" href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">size</a>);</div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;</div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<a class="code" href="classprocess_1_1Future.html">Future&lt;size_t&gt;</a> <a class="code" href="namespaceprocess_1_1io_1_1internal.html#ab4ecbbe96ef3c0600060e16c47988798">write</a>(<a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> fd, <span class="keyword">const</span> <span class="keywordtype">void</span>* data, <span class="keywordtype">size_t</span> size);</div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;</div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<a class="code" href="classTry.html">Try&lt;Nothing&gt;</a> <a class="code" href="namespaceprocess_1_1io_1_1internal.html#a9458b24220892124c2112b3fe85e585e">
 prepare_async</a>(<a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> fd);</div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;</div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<a class="code" href="classTry.html">Try&lt;bool&gt;</a> <a class="code" href="namespaceprocess_1_1io_1_1internal.html#a2291f1f69f4bdf80f3b114c493eb1e37">is_async</a>(<a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> fd);</div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;</div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;} <span class="comment">// namespace internal {</span></div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;} <span class="comment">// namespace io {</span></div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;} <span class="comment">//
  namespace process {</span></div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;</div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;<span class="preprocessor">#endif // __IO_INTERNAL_HPP__</span></div><div class="ttc" id="namespaceprocess_1_1io_1_1internal_html_a2291f1f69f4bdf80f3b114c493eb1e37"><div class="ttname"><a href="namespaceprocess_1_1io_1_1internal.html#a2291f1f69f4bdf80f3b114c493eb1e37">process::io::internal::is_async</a></div><div class="ttdeci">Try&lt; bool &gt; is_async(int_fd fd)</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&lt; Bytes &gt; size(const std::string &amp;path, const FollowSymlink follow=FollowSymlink::FOLLOW_SYMLINK)</div><div class="ttdef"><b>Definition:</b> stat.hpp:121</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="namespaceprocess_1_1io_1_1internal_html_ab4ecbbe96ef3c0600060e16c47988798"><div class="ttname"><a href="namespaceprocess_1_1io_1_1internal.html#ab4ecbbe96ef3c0600060e16c47988798">process::io::internal::write</a></div><div class="ttdeci">Future&lt; size_t &gt; write(int_fd fd, const void *data, size_t size)</div></div>
+<div class="ttc" id="future_8hpp_html"><div class="ttname"><a href="future_8hpp.html">future.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="namespaceprocess_html"><div class="ttname"><a href="namespaceprocess.html">process</a></div><div class="ttdef"><b>Definition:</b> executor.hpp:48</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>
+<div class="ttc" id="namespaceprocess_1_1io_1_1internal_html_a9458b24220892124c2112b3fe85e585e"><div class="ttname"><a href="namespaceprocess_1_1io_1_1internal.html#a9458b24220892124c2112b3fe85e585e">process::io::internal::prepare_async</a></div><div class="ttdeci">Try&lt; Nothing &gt; prepare_async(int_fd fd)</div></div>
+<div class="ttc" id="namespaceprocess_1_1io_1_1internal_html_ac0a90b8abf47098e5a57d90e744a42a8"><div class="ttname"><a href="namespaceprocess_1_1io_1_1internal.html#ac0a90b8abf47098e5a57d90e744a42a8">process::io::internal::read</a></div><div class="ttdeci">Future&lt; size_t &gt; read(int_fd fd, void *data, size_t size)</div></div>
+<div class="ttc" id="int__fd_8hpp_html_aea4dbda01c90455f158ffa9b924c2f07"><div class="ttname"><a href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a></div><div class="ttdeci">int int_fd</div><div class="ttdef"><b>Definition:</b> int_fd.hpp:35</div></div>
+<div class="ttc" id="classprocess_1_1Future_html"><div class="ttname"><a href="classprocess_1_1Future.html">process::Future&lt; size_t &gt;</a></div></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.11
+</small></address>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/libev_8hpp.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/libev_8hpp.html b/content/api/latest/c++/libev_8hpp.html
index 6e7f31d..1d148bf 100644
--- a/content/api/latest/c++/libev_8hpp.html
+++ b/content/api/latest/c++/libev_8hpp.html
@@ -4,7 +4,7 @@
 <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: 3rdparty/libprocess/src/libev.hpp File Reference</title>
+<title>Apache Mesos: 3rdparty/libprocess/src/posix/libev/libev.hpp File 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>
@@ -44,7 +44,7 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="dir_8cab8f464681f7cc51cee77e79a434cd.html">3rdparty</a></li><li class="navelem"><a class="el" href="dir_043a76de98701f9bddf61b5e98f305ff.html">libprocess</a></li><li class="navelem"><a class="el" href="dir_01cbbd8dcbf9de3825992568658f467e.html">src</a></li>  </ul>
+<li class="navelem"><a class="el" href="dir_8cab8f464681f7cc51cee77e79a434cd.html">3rdparty</a></li><li class="navelem"><a class="el" href="dir_043a76de98701f9bddf61b5e98f305ff.html">libprocess</a></li><li class="navelem"><a class="el" href="dir_01cbbd8dcbf9de3825992568658f467e.html">src</a></li><li class="navelem"><a class="el" href="dir_0ac73505685689cb4a842e520ca4cca6.html">posix</a></li><li class="navelem"><a class="el" href="dir_ecbc207ab261ae6376e9b7d1e9eba3c1.html">libev</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/libev_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/libev_8hpp_source.html b/content/api/latest/c++/libev_8hpp_source.html
index 6455bd1..b07e143 100644
--- a/content/api/latest/c++/libev_8hpp_source.html
+++ b/content/api/latest/c++/libev_8hpp_source.html
@@ -4,7 +4,7 @@
 <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: 3rdparty/libprocess/src/libev.hpp Source File</title>
+<title>Apache Mesos: 3rdparty/libprocess/src/posix/libev/libev.hpp Source File</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>
@@ -44,7 +44,7 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="dir_8cab8f464681f7cc51cee77e79a434cd.html">3rdparty</a></li><li class="navelem"><a class="el" href="dir_043a76de98701f9bddf61b5e98f305ff.html">libprocess</a></li><li class="navelem"><a class="el" href="dir_01cbbd8dcbf9de3825992568658f467e.html">src</a></li>  </ul>
+<li class="navelem"><a class="el" href="dir_8cab8f464681f7cc51cee77e79a434cd.html">3rdparty</a></li><li class="navelem"><a class="el" href="dir_043a76de98701f9bddf61b5e98f305ff.html">libprocess</a></li><li class="navelem"><a class="el" href="dir_01cbbd8dcbf9de3825992568658f467e.html">src</a></li><li class="navelem"><a class="el" href="dir_0ac73505685689cb4a842e520ca4cca6.html">posix</a></li><li class="navelem"><a class="el" href="dir_ecbc207ab261ae6376e9b7d1e9eba3c1.html">libev</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/libevent_8hpp.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/libevent_8hpp.html b/content/api/latest/c++/libevent_8hpp.html
index c37f2c6..50463cf 100644
--- a/content/api/latest/c++/libevent_8hpp.html
+++ b/content/api/latest/c++/libevent_8hpp.html
@@ -4,7 +4,7 @@
 <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: 3rdparty/libprocess/src/libevent.hpp File Reference</title>
+<title>Apache Mesos: 3rdparty/libprocess/src/posix/libevent/libevent.hpp File 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>
@@ -44,7 +44,7 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="dir_8cab8f464681f7cc51cee77e79a434cd.html">3rdparty</a></li><li class="navelem"><a class="el" href="dir_043a76de98701f9bddf61b5e98f305ff.html">libprocess</a></li><li class="navelem"><a class="el" href="dir_01cbbd8dcbf9de3825992568658f467e.html">src</a></li>  </ul>
+<li class="navelem"><a class="el" href="dir_8cab8f464681f7cc51cee77e79a434cd.html">3rdparty</a></li><li class="navelem"><a class="el" href="dir_043a76de98701f9bddf61b5e98f305ff.html">libprocess</a></li><li class="navelem"><a class="el" href="dir_01cbbd8dcbf9de3825992568658f467e.html">src</a></li><li class="navelem"><a class="el" href="dir_0ac73505685689cb4a842e520ca4cca6.html">posix</a></li><li class="navelem"><a class="el" href="dir_b2935a02400d93f2f95b894ab5508ef6.html">libevent</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/libevent_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/libevent_8hpp_source.html b/content/api/latest/c++/libevent_8hpp_source.html
index 2883f2a..e70593c 100644
--- a/content/api/latest/c++/libevent_8hpp_source.html
+++ b/content/api/latest/c++/libevent_8hpp_source.html
@@ -4,7 +4,7 @@
 <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: 3rdparty/libprocess/src/libevent.hpp Source File</title>
+<title>Apache Mesos: 3rdparty/libprocess/src/posix/libevent/libevent.hpp Source File</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>
@@ -44,7 +44,7 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="dir_8cab8f464681f7cc51cee77e79a434cd.html">3rdparty</a></li><li class="navelem"><a class="el" href="dir_043a76de98701f9bddf61b5e98f305ff.html">libprocess</a></li><li class="navelem"><a class="el" href="dir_01cbbd8dcbf9de3825992568658f467e.html">src</a></li>  </ul>
+<li class="navelem"><a class="el" href="dir_8cab8f464681f7cc51cee77e79a434cd.html">3rdparty</a></li><li class="navelem"><a class="el" href="dir_043a76de98701f9bddf61b5e98f305ff.html">libprocess</a></li><li class="navelem"><a class="el" href="dir_01cbbd8dcbf9de3825992568658f467e.html">src</a></li><li class="navelem"><a class="el" href="dir_0ac73505685689cb4a842e520ca4cca6.html">posix</a></li><li class="navelem"><a class="el" href="dir_b2935a02400d93f2f95b894ab5508ef6.html">libevent</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/libevent__ssl__socket_8hpp.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/libevent__ssl__socket_8hpp.html b/content/api/latest/c++/libevent__ssl__socket_8hpp.html
index 4ec4f1b..5381c66 100644
--- a/content/api/latest/c++/libevent__ssl__socket_8hpp.html
+++ b/content/api/latest/c++/libevent__ssl__socket_8hpp.html
@@ -4,7 +4,7 @@
 <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: 3rdparty/libprocess/src/libevent_ssl_socket.hpp File Reference</title>
+<title>Apache Mesos: 3rdparty/libprocess/src/posix/libevent/libevent_ssl_socket.hpp File 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>
@@ -44,7 +44,7 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="dir_8cab8f464681f7cc51cee77e79a434cd.html">3rdparty</a></li><li class="navelem"><a class="el" href="dir_043a76de98701f9bddf61b5e98f305ff.html">libprocess</a></li><li class="navelem"><a class="el" href="dir_01cbbd8dcbf9de3825992568658f467e.html">src</a></li>  </ul>
+<li class="navelem"><a class="el" href="dir_8cab8f464681f7cc51cee77e79a434cd.html">3rdparty</a></li><li class="navelem"><a class="el" href="dir_043a76de98701f9bddf61b5e98f305ff.html">libprocess</a></li><li class="navelem"><a class="el" href="dir_01cbbd8dcbf9de3825992568658f467e.html">src</a></li><li class="navelem"><a class="el" href="dir_0ac73505685689cb4a842e520ca4cca6.html">posix</a></li><li class="navelem"><a class="el" href="dir_b2935a02400d93f2f95b894ab5508ef6.html">libevent</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/libevent__ssl__socket_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/libevent__ssl__socket_8hpp_source.html b/content/api/latest/c++/libevent__ssl__socket_8hpp_source.html
index 8df12c2..4d732da 100644
--- a/content/api/latest/c++/libevent__ssl__socket_8hpp_source.html
+++ b/content/api/latest/c++/libevent__ssl__socket_8hpp_source.html
@@ -4,7 +4,7 @@
 <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: 3rdparty/libprocess/src/libevent_ssl_socket.hpp Source File</title>
+<title>Apache Mesos: 3rdparty/libprocess/src/posix/libevent/libevent_ssl_socket.hpp Source File</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>
@@ -44,7 +44,7 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="dir_8cab8f464681f7cc51cee77e79a434cd.html">3rdparty</a></li><li class="navelem"><a class="el" href="dir_043a76de98701f9bddf61b5e98f305ff.html">libprocess</a></li><li class="navelem"><a class="el" href="dir_01cbbd8dcbf9de3825992568658f467e.html">src</a></li>  </ul>
+<li class="navelem"><a class="el" href="dir_8cab8f464681f7cc51cee77e79a434cd.html">3rdparty</a></li><li class="navelem"><a class="el" href="dir_043a76de98701f9bddf61b5e98f305ff.html">libprocess</a></li><li class="navelem"><a class="el" href="dir_01cbbd8dcbf9de3825992568658f467e.html">src</a></li><li class="navelem"><a class="el" href="dir_0ac73505685689cb4a842e520ca4cca6.html">posix</a></li><li class="navelem"><a class="el" href="dir_b2935a02400d93f2f95b894ab5508ef6.html">libevent</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">


[12/50] mesos-site git commit: Updated the website built from mesos SHA: 7c9c72d.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/src_2tests_2mesos_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/src_2tests_2mesos_8hpp_source.html b/content/api/latest/c++/src_2tests_2mesos_8hpp_source.html
index 478cbed..f18761a 100644
--- a/content/api/latest/c++/src_2tests_2mesos_8hpp_source.html
+++ b/content/api/latest/c++/src_2tests_2mesos_8hpp_source.html
@@ -52,7 +52,7 @@
 <div class="title">mesos.hpp</div>  </div>
 </div><!--header-->
 <div class="contents">
-<a href="src_2tests_2mesos_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>&#160;<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>&#160;<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>&#160;<span class="comment">// distributed with this work for additional information</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<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>&#160;<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>&#160;<span class="comment">// &quot;License&quot;); you may not use this file except in compliance</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<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>&#160;<span class="comment">//
  distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<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>&#160;<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>&#160;<span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;</div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="preprocessor">#ifndef __TESTS_MESOS_HPP__</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="preprocessor">#define __TESTS_MESOS_HPP__</span></div><div class="line"
 ><a name="l00019"></a><span class="lineno">   19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="preprocessor">#include &lt;memory&gt;</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span></div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="preprocessor">#include &lt;vector&gt;</span></div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;</div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="preprocessor">#include &lt;gmock/gmock.h&gt;</span></div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;</div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="include_2mesos_2executor_8hpp.html">mesos/executor.
 hpp</a>&gt;</span></div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="scheduler_8hpp.html">mesos/scheduler.hpp</a>&gt;</span></div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;</div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="include_2mesos_2v1_2executor_8hpp.html">mesos/v1/executor.hpp</a>&gt;</span></div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="v1_2resources_8hpp.html">mesos/v1/resources.hpp</a>&gt;</span></div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="v1_2resource__provider_8hpp.html">mesos/v1/resource_provider.hpp</a>&gt;</span></div><div class="line"><a name="l00032
 "></a><span class="lineno">   32</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="v1_2scheduler_8hpp.html">mesos/v1/scheduler.hpp</a>&gt;</span></div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;</div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="include_2mesos_2v1_2executor_2executor_8hpp.html">mesos/v1/executor/executor.hpp</a>&gt;</span></div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;</div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="v1_2scheduler_2scheduler_8hpp.html">mesos/v1/scheduler/scheduler.hpp</a>&gt;</span></div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;</div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;<span class="preproces
 sor">#include &lt;<a class="code" href="authentication_2secret__generator_8hpp.html">mesos/authentication/secret_generator.hpp</a>&gt;</span></div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;</div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="include_2mesos_2authorizer_2authorizer_8hpp.html">mesos/authorizer/authorizer.hpp</a>&gt;</span></div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;</div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="include_2mesos_2fetcher_2fetcher_8hpp.html">mesos/fetcher/fetcher.hpp</a>&gt;</span></div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;</div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;<span class="preprocessor">#include &lt;<a class
 ="code" href="include_2mesos_2master_2detector_8hpp.html">mesos/master/detector.hpp</a>&gt;</span></div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;</div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="future_8hpp.html">process/future.hpp</a>&gt;</span></div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="gmock_8hpp.html">process/gmock.hpp</a>&gt;</span></div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="libprocess_2include_2process_2gtest_8hpp.html">process/gtest.hpp</a>&gt;</span></div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="3rdparty_2libprocess_2include_2process_2http_8hpp.ht
 ml">process/http.hpp</a>&gt;</span></div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="3rdparty_2libprocess_2include_2process_2io_8hpp.html">process/io.hpp</a>&gt;</span></div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="owned_8hpp.html">process/owned.hpp</a>&gt;</span></div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="3rdparty_2libprocess_2include_2process_2pid_8hpp.html">process/pid.hpp</a>&gt;</span></div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="libprocess_2include_2process_2process_8hpp.html">process/process.hpp</a>&gt;</span></div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>
 &#160;<span class="preprocessor">#include &lt;<a class="code" href="queue_8hpp.html">process/queue.hpp</a>&gt;</span></div><div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="subprocess_8hpp.html">process/subprocess.hpp</a>&gt;</span></div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;</div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="3rdparty_2libprocess_2include_2process_2ssl_2flags_8hpp.html">process/ssl/flags.hpp</a>&gt;</span></div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="libprocess_2include_2process_2ssl_2gtest_8hpp.html">process/ssl/gtest.hpp</a>&gt;</span></div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;</div><div class="line"><a na
 me="l00060"></a><span class="lineno">   60</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="bytes_8hpp.html">stout/bytes.hpp</a>&gt;</span></div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="foreach_8hpp.html">stout/foreach.hpp</a>&gt;</span></div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="stout_2include_2stout_2gtest_8hpp.html">stout/gtest.hpp</a>&gt;</span></div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="lambda_8hpp.html">stout/lambda.hpp</a>&gt;</span></div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="none_8hpp.html">stout/none.hpp</a>&gt;</span></div><div class="line"><a name="l
 00065"></a><span class="lineno">   65</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="option_8hpp.html">stout/option.hpp</a>&gt;</span></div><div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="stringify_8hpp.html">stout/stringify.hpp</a>&gt;</span></div><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="try_8hpp.html">stout/try.hpp</a>&gt;</span></div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="unreachable_8hpp.html">stout/unreachable.hpp</a>&gt;</span></div><div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="uuid_8hpp.html">stout/uuid.hpp</a>&gt;</span></div><div class="line"><a name="l00070"></a><span
  class="lineno">   70</span>&#160;</div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="jwt__secret__generator_8hpp.html">authentication/executor/jwt_secret_generator.hpp</a>&quot;</span></div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;</div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="src_2common_2http_8hpp.html">common/http.hpp</a>&quot;</span></div><div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;</div><div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="messages_8hpp.html">messages/messages.hpp</a>&quot;</span> <span class="comment">// For google::protobuf::Message.</span></div><div class="line"><a name="l00076"></a><span class="lineno">   7
 6</span>&#160;</div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;<span class="preprocessor">#include &quot;master/master.hpp&quot;</span></div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;</div><div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="src_2sched_2constants_8hpp.html">sched/constants.hpp</a>&quot;</span></div><div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;</div><div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="src_2resource__provider_2detector_8hpp.html">resource_provider/detector.hpp</a>&quot;</span></div><div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;</div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;<span class="preprocessor">#includ
 e &quot;<a class="code" href="src_2slave_2constants_8hpp.html">slave/constants.hpp</a>&quot;</span></div><div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="slave_8hpp.html">slave/slave.hpp</a>&quot;</span></div><div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;</div><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="src_2slave_2containerizer_2containerizer_8hpp.html">slave/containerizer/containerizer.hpp</a>&quot;</span></div><div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;</div><div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="src_2slave_2containerizer_2mesos_2containerizer_8hpp.html">slave/containerizer/mesos/containerizer.hpp</a>&quot;</span></div><div c
 lass="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;</div><div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="cluster_8hpp.html">tests/cluster.hpp</a>&quot;</span></div><div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="src_2tests_2limiter_8hpp.html">tests/limiter.hpp</a>&quot;</span></div><div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;<span class="preprocessor">#include &quot;tests/utils.hpp&quot;</span></div><div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;</div><div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;<span class="preprocessor">#ifdef MESOS_HAS_JAVA</span></div><div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;<span class="preprocessor">#include &quot;<a class
 ="code" href="src_2tests_2zookeeper_8hpp.html">tests/zookeeper.hpp</a>&quot;</span></div><div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;<span class="preprocessor">#endif // MESOS_HAS_JAVA</span></div><div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;</div><div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;using ::testing::_;</div><div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;using ::testing::An;</div><div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;using ::testing::DoDefault;</div><div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;using ::testing::Invoke;</div><div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;using ::testing::Return;</div><div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;</div><div class="line"><a name="l00104"></a><span class="lineno">  10
 4</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacemesos.html">mesos</a> {</div><div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceinternal.html">internal</a> {</div><div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;<span class="keyword">namespace </span>tests {</div><div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;</div><div class="line"><a name="l00108"></a><span class="lineno"><a class="line" href="namespacemesos_1_1internal_1_1tests.html#a6b044a48124e8fcfeba4ae4177e876fd">  108</a></span>&#160;constexpr <span class="keywordtype">char</span> <a class="code" href="namespacemesos_1_1internal_1_1tests.html#a6b044a48124e8fcfeba4ae4177e876fd">READONLY_HTTP_AUTHENTICATION_REALM</a>[] = <span class="stringliteral">&quot;test-readonly-realm&quot;</span>;</div><div class="line"><a name="l00109"></a><span 
 class="lineno"><a class="line" href="namespacemesos_1_1internal_1_1tests.html#a3d69b2b965a8a0d6a90319507f015a12">  109</a></span>&#160;constexpr <span class="keywordtype">char</span> <a class="code" href="namespacemesos_1_1internal_1_1tests.html#a3d69b2b965a8a0d6a90319507f015a12">READWRITE_HTTP_AUTHENTICATION_REALM</a>[] = <span class="stringliteral">&quot;test-readwrite-realm&quot;</span>;</div><div class="line"><a name="l00110"></a><span class="lineno"><a class="line" href="namespacemesos_1_1internal_1_1tests.html#a01abc032929a41cdafd4268985dc1369">  110</a></span>&#160;constexpr <span class="keywordtype">char</span> <a class="code" href="namespacemesos_1_1internal_1_1tests.html#a01abc032929a41cdafd4268985dc1369">DEFAULT_TEST_ROLE</a>[] = <span class="stringliteral">&quot;default-role&quot;</span>;</div><div class="line"><a name="l00111"></a><span class="lineno"><a class="line" href="namespacemesos_1_1internal_1_1tests.html#af290f8cc581fe8944d4faeb8a56e1f0b">  111</a></span>&#160;
 constexpr <span class="keywordtype">char</span> <a class="code" href="namespacemesos_1_1internal_1_1tests.html#af290f8cc581fe8944d4faeb8a56e1f0b">DEFAULT_JWT_SECRET_KEY</a>[] =</div><div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;  <span class="stringliteral">&quot;72kUKUFtghAjNbIOvLzfF2RxNBfeM64Bri8g9WhpyaunwqRB/yozHAqSnyHbddAV&quot;</span></div><div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;  <span class="stringliteral">&quot;PcWRQlrJAt871oWgSH+n52vMZ3aVI+AFMzXSo8+sUfMk83IGp0WJefhzeQsjDlGH&quot;</span></div><div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;  <span class="stringliteral">&quot;GYQgCAuGim0BE2X5U+lEue8s697uQpAO8L/FFRuDH2s&quot;</span>;</div><div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;</div><div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;</div><div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#16
 0;<span class="comment">// Forward declarations.</span></div><div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;<span class="keyword">class </span><a class="code" href="classmesos_1_1internal_1_1tests_1_1MockExecutor.html">MockExecutor</a>;</div><div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;</div><div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;</div><div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;<span class="comment">// NOTE: `SSLTemporaryDirectoryTest` exists even when SSL is not compiled into</span></div><div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;<span class="comment">// Mesos.  In this case, the class is an alias of `TemporaryDirectoryTest`.</span></div><div class="line"><a name="l00123"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1tests_1_1MesosTest.html">  123</a></span>&#160;<span class="keyword">
 class </span><a class="code" href="classmesos_1_1internal_1_1tests_1_1MesosTest.html">MesosTest</a> : <span class="keyword">public</span> <a class="code" href="classSSLTemporaryDirectoryTest.html">SSLTemporaryDirectoryTest</a></div><div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;{</div><div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;  <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classmesos_1_1internal_1_1tests_1_1MesosTest.html#a96e7148ce13d0775202148b8fa637045">SetUpTestCase</a>();</div><div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;  <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classmesos_1_1internal_1_1tests_1_1MesosTest.html#a610f2bde76cb5a148313cbc96a04d92b">TearDownTest
 Case</a>();</div><div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;</div><div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;<span class="keyword">protected</span>:</div><div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;  <a class="code" href="classmesos_1_1internal_1_1tests_1_1MesosTest.html#a7e0692b45897b8f008a859e229767897">MesosTest</a>(<span class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;zookeeper::URL&gt;</a>&amp; url = <a class="code" href="structNone.html">None</a>());</div><div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;</div><div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;  <span class="comment">// Returns the flags used to create masters.</span></div><div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;  <span class="keyword">virtual</span> master::Flags <a class="code" href="
 classmesos_1_1internal_1_1tests_1_1MesosTest.html#a69872811a17d1695a1821db3f55c30af">CreateMasterFlags</a>();</div><div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;</div><div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;  <span class="comment">// Returns the flags used to create slaves.</span></div><div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;  <span class="keyword">virtual</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Flags.html">slave::Flags</a> <a class="code" href="classmesos_1_1internal_1_1tests_1_1MesosTest.html#a256d948a0c093f4e4c8c59a5de9ecb8f">CreateSlaveFlags</a>();</div><div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;</div><div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;  <span class="comment">// Starts a master with the specified flags.</span></div><div class="line"><a name="l00139"></a><span class="lineno
 ">  139</span>&#160;  <span class="keyword">virtual</span> <a class="code" href="classTry.html">Try&lt;process::Owned&lt;cluster::Master&gt;</a>&gt; <a class="code" href="classmesos_1_1internal_1_1tests_1_1MesosTest.html#a95f03722998a08f61bfa25fa298985c1">StartMaster</a>(</div><div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;      <span class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;master::Flags&gt;</a>&amp; <a class="code" href="namespaceflags.html">flags</a> = <a class="code" href="structNone.html">None</a>());</div><div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;</div><div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;  <span class="comment">// Starts a master with the specified allocator process and flags.</span></div><div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;  <span class="keyword">virtual</span> <a class="code" href="classTr
 y.html">Try&lt;process::Owned&lt;cluster::Master&gt;</a>&gt; <a class="code" href="classmesos_1_1internal_1_1tests_1_1MesosTest.html#a95f03722998a08f61bfa25fa298985c1">StartMaster</a>(</div><div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;      <a class="code" href="classmesos_1_1allocator_1_1Allocator.html">mesos::allocator::Allocator</a>* allocator,</div><div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;      <span class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;master::Flags&gt;</a>&amp; <a class="code" href="namespaceflags.html">flags</a> = <a class="code" href="structNone.html">None</a>());</div><div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;</div><div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;  <span class="comment">// Starts a master with the specified authorizer and flags.</span></div><div class="line"><a name="l00148"></a><spa
 n class="lineno">  148</span>&#160;  <span class="keyword">virtual</span> <a class="code" href="classTry.html">Try&lt;process::Owned&lt;cluster::Master&gt;</a>&gt; <a class="code" href="classmesos_1_1internal_1_1tests_1_1MesosTest.html#a95f03722998a08f61bfa25fa298985c1">StartMaster</a>(</div><div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;      <a class="code" href="classmesos_1_1Authorizer.html">Authorizer</a>* authorizer,</div><div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;      <span class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;master::Flags&gt;</a>&amp; <a class="code" href="namespaceflags.html">flags</a> = <a class="code" href="structNone.html">None</a>());</div><div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;</div><div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;  <span class="comment">// Starts a master with a slave removal 
 rate limiter and flags.</span></div><div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;  <span class="comment">// NOTE: The `slaveRemovalLimiter` is a `shared_ptr` because the</span></div><div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;  <span class="comment">// underlying `Master` process requires the pointer in this form.</span></div><div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;  <span class="keyword">virtual</span> <a class="code" href="classTry.html">Try&lt;process::Owned&lt;cluster::Master&gt;</a>&gt; <a class="code" href="classmesos_1_1internal_1_1tests_1_1MesosTest.html#a95f03722998a08f61bfa25fa298985c1">StartMaster</a>(</div><div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;      <span class="keyword">const</span> std::shared_ptr&lt;MockRateLimiter&gt;&amp; slaveRemovalLimiter,</div><div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160
 ;      <span class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;master::Flags&gt;</a>&amp; <a class="code" href="namespaceflags.html">flags</a> = <a class="code" href="structNone.html">None</a>());</div><div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;</div><div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;  <span class="comment">// TODO(bmahler): Consider adding a builder style interface, e.g.</span></div><div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;  <span class="comment">//</span></div><div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;  <span class="comment">// Try&lt;PID&lt;Slave&gt;&gt; slave =</span></div><div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;  <span class="comment">//   Slave().With(flags)</span></div><div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;  <span class="
 comment">//          .With(executor)</span></div><div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;  <span class="comment">//          .With(containerizer)</span></div><div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;  <span class="comment">//          .With(detector)</span></div><div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;  <span class="comment">//          .With(gc)</span></div><div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;  <span class="comment">//          .Start();</span></div><div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;  <span class="comment">//</span></div><div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;  <span class="comment">// Or options:</span></div><div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;  <span class="comment">//</span></div><div class="line"><a nam
 e="l00171"></a><span class="lineno">  171</span>&#160;  <span class="comment">// Injections injections;</span></div><div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;  <span class="comment">// injections.executor = executor;</span></div><div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;  <span class="comment">// injections.containerizer = containerizer;</span></div><div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;  <span class="comment">// injections.detector = detector;</span></div><div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;  <span class="comment">// injections.gc = gc;</span></div><div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;  <span class="comment">// Try&lt;PID&lt;Slave&gt;&gt; slave = StartSlave(injections);</span></div><div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;</div><div class="line"><a name=
 "l00178"></a><span class="lineno">  178</span>&#160;  <span class="comment">// Starts a slave with the specified detector and flags.</span></div><div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;  <span class="keyword">virtual</span> <a class="code" href="classTry.html">Try&lt;process::Owned&lt;cluster::Slave&gt;</a>&gt; <a class="code" href="classmesos_1_1internal_1_1tests_1_1MesosTest.html#ae3b9e1265f6e122ac2a023374ddea4bb">StartSlave</a>(</div><div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;      <a class="code" href="classmesos_1_1master_1_1detector_1_1MasterDetector.html">mesos::master::detector::MasterDetector</a>* detector,</div><div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;      <span class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;slave::Flags&gt;</a>&amp; <a class="code" href="namespaceflags.html">flags</a> = <a class="code" href="structNone.html">None</
 a>(),</div><div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160;      <span class="keywordtype">bool</span> mock = <span class="keyword">false</span>);</div><div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;</div><div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;  <span class="comment">// Starts a slave with the specified detector, containerizer, and flags.</span></div><div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;  <span class="keyword">virtual</span> <a class="code" href="classTry.html">Try&lt;process::Owned&lt;cluster::Slave&gt;</a>&gt; <a class="code" href="classmesos_1_1internal_1_1tests_1_1MesosTest.html#ae3b9e1265f6e122ac2a023374ddea4bb">StartSlave</a>(</div><div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;      <a class="code" href="classmesos_1_1master_1_1detector_1_1MasterDetector.html">mesos::master::detector::MasterDetector</a>* de
 tector,</div><div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;      <a class="code" href="classmesos_1_1internal_1_1slave_1_1Containerizer.html">slave::Containerizer</a>* containerizer,</div><div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;      <span class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;slave::Flags&gt;</a>&amp; <a class="code" href="namespaceflags.html">flags</a> = <a class="code" href="structNone.html">None</a>(),</div><div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160;      <span class="keywordtype">bool</span> mock = <span class="keyword">false</span>);</div><div class="line"><a name="l00190"></a><span class="lineno">  190</span>&#160;</div><div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160;  <span class="comment">// Starts a slave with the specified detector, id, and flags.</span></div><div class="line"><a name="l00192"></a><
 span class="lineno">  192</span>&#160;  <span class="keyword">virtual</span> <a class="code" href="classTry.html">Try&lt;process::Owned&lt;cluster::Slave&gt;</a>&gt; <a class="code" href="classmesos_1_1internal_1_1tests_1_1MesosTest.html#ae3b9e1265f6e122ac2a023374ddea4bb">StartSlave</a>(</div><div class="line"><a name="l00193"></a><span class="lineno">  193</span>&#160;      <a class="code" href="classmesos_1_1master_1_1detector_1_1MasterDetector.html">mesos::master::detector::MasterDetector</a>* detector,</div><div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#160;      <span class="keyword">const</span> std::string&amp; <span class="keywordtype">id</span>,</div><div class="line"><a name="l00195"></a><span class="lineno">  195</span>&#160;      <span class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;slave::Flags&gt;</a>&amp; <a class="code" href="namespaceflags.html">flags</a> = <a class="code" href="structNone.html">None</a>(),</
 div><div class="line"><a name="l00196"></a><span class="lineno">  196</span>&#160;      <span class="keywordtype">bool</span> mock = <span class="keyword">false</span>);</div><div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;</div><div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160;  <span class="comment">// Starts a slave with the specified detector, containerizer, id, and flags.</span></div><div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160;  <span class="keyword">virtual</span> <a class="code" href="classTry.html">Try&lt;process::Owned&lt;cluster::Slave&gt;</a>&gt; <a class="code" href="classmesos_1_1internal_1_1tests_1_1MesosTest.html#ae3b9e1265f6e122ac2a023374ddea4bb">StartSlave</a>(</div><div class="line"><a name="l00200"></a><span class="lineno">  200</span>&#160;      <a class="code" href="classmesos_1_1master_1_1detector_1_1MasterDetector.html">mesos::master::detector::MasterDetector</a>* detec
 tor,</div><div class="line"><a name="l00201"></a><span class="lineno">  201</span>&#160;      <a class="code" href="classmesos_1_1internal_1_1slave_1_1Containerizer.html">slave::Containerizer</a>* containerizer,</div><div class="line"><a name="l00202"></a><span class="lineno">  202</span>&#160;      <span class="keyword">const</span> std::string&amp; <span class="keywordtype">id</span>,</div><div class="line"><a name="l00203"></a><span class="lineno">  203</span>&#160;      <span class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;slave::Flags&gt;</a>&amp; <a class="code" href="namespaceflags.html">flags</a> = <a class="code" href="structNone.html">None</a>());</div><div class="line"><a name="l00204"></a><span class="lineno">  204</span>&#160;</div><div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160;  <span class="comment">// Starts a slave with the specified detector, GC, and flags.</span></div><div class="line"><a name="l00206">
 </a><span class="lineno">  206</span>&#160;  <span class="keyword">virtual</span> <a class="code" href="classTry.html">Try&lt;process::Owned&lt;cluster::Slave&gt;</a>&gt; <a class="code" href="classmesos_1_1internal_1_1tests_1_1MesosTest.html#ae3b9e1265f6e122ac2a023374ddea4bb">StartSlave</a>(</div><div class="line"><a name="l00207"></a><span class="lineno">  207</span>&#160;      <a class="code" href="classmesos_1_1master_1_1detector_1_1MasterDetector.html">mesos::master::detector::MasterDetector</a>* detector,</div><div class="line"><a name="l00208"></a><span class="lineno">  208</span>&#160;      <a class="code" href="classmesos_1_1internal_1_1slave_1_1GarbageCollector.html">slave::GarbageCollector</a>* gc,</div><div class="line"><a name="l00209"></a><span class="lineno">  209</span>&#160;      <span class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;slave::Flags&gt;</a>&amp; <a class="code" href="namespaceflags.html">flags</a> = <a class="code" href="s
 tructNone.html">None</a>(),</div><div class="line"><a name="l00210"></a><span class="lineno">  210</span>&#160;      <span class="keywordtype">bool</span> mock = <span class="keyword">false</span>);</div><div class="line"><a name="l00211"></a><span class="lineno">  211</span>&#160;</div><div class="line"><a name="l00212"></a><span class="lineno">  212</span>&#160;  <span class="comment">// Starts a slave with the specified detector, resource estimator, and flags.</span></div><div class="line"><a name="l00213"></a><span class="lineno">  213</span>&#160;  <span class="keyword">virtual</span> <a class="code" href="classTry.html">Try&lt;process::Owned&lt;cluster::Slave&gt;</a>&gt; <a class="code" href="classmesos_1_1internal_1_1tests_1_1MesosTest.html#ae3b9e1265f6e122ac2a023374ddea4bb">StartSlave</a>(</div><div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160;      <a class="code" href="classmesos_1_1master_1_1detector_1_1MasterDetector.html">mesos::master::detec
 tor::MasterDetector</a>* detector,</div><div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160;      <a class="code" href="classmesos_1_1slave_1_1ResourceEstimator.html">mesos::slave::ResourceEstimator</a>* resourceEstimator,</div><div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#160;      <span class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;slave::Flags&gt;</a>&amp; <a class="code" href="namespaceflags.html">flags</a> = <a class="code" href="structNone.html">None</a>());</div><div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160;</div><div class="line"><a name="l00218"></a><span class="lineno">  218</span>&#160;  <span class="comment">// Starts a slave with the specified detector, containerizer,</span></div><div class="line"><a name="l00219"></a><span class="lineno">  219</span>&#160;  <span class="comment">// resource estimator, and flags.</span></div><div class="line"><a name="l
 00220"></a><span class="lineno">  220</span>&#160;  <span class="keyword">virtual</span> <a class="code" href="classTry.html">Try&lt;process::Owned&lt;cluster::Slave&gt;</a>&gt; <a class="code" href="classmesos_1_1internal_1_1tests_1_1MesosTest.html#ae3b9e1265f6e122ac2a023374ddea4bb">StartSlave</a>(</div><div class="line"><a name="l00221"></a><span class="lineno">  221</span>&#160;      <a class="code" href="classmesos_1_1master_1_1detector_1_1MasterDetector.html">mesos::master::detector::MasterDetector</a>* detector,</div><div class="line"><a name="l00222"></a><span class="lineno">  222</span>&#160;      <a class="code" href="classmesos_1_1internal_1_1slave_1_1Containerizer.html">slave::Containerizer</a>* containerizer,</div><div class="line"><a name="l00223"></a><span class="lineno">  223</span>&#160;      <a class="code" href="classmesos_1_1slave_1_1ResourceEstimator.html">mesos::slave::ResourceEstimator</a>* resourceEstimator,</div><div class="line"><a name="l00224"></a><span cl
 ass="lineno">  224</span>&#160;      <span class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;slave::Flags&gt;</a>&amp; <a class="code" href="namespaceflags.html">flags</a> = <a class="code" href="structNone.html">None</a>());</div><div class="line"><a name="l00225"></a><span class="lineno">  225</span>&#160;</div><div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;  <span class="comment">// Starts a slave with the specified detector, QoS Controller, and flags.</span></div><div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160;  <span class="keyword">virtual</span> <a class="code" href="classTry.html">Try&lt;process::Owned&lt;cluster::Slave&gt;</a>&gt; <a class="code" href="classmesos_1_1internal_1_1tests_1_1MesosTest.html#ae3b9e1265f6e122ac2a023374ddea4bb">StartSlave</a>(</div><div class="line"><a name="l00228"></a><span class="lineno">  228</span>&#160;      <a class="code" href="classmesos_1_1master_1_1d
 etector_1_1MasterDetector.html">mesos::master::detector::MasterDetector</a>* detector,</div><div class="line"><a name="l00229"></a><span class="lineno">  229</span>&#160;      <a class="code" href="classmesos_1_1slave_1_1QoSController.html">mesos::slave::QoSController</a>* qosController,</div><div class="line"><a name="l00230"></a><span class="lineno">  230</span>&#160;      <span class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;slave::Flags&gt;</a>&amp; <a class="code" href="namespaceflags.html">flags</a> = <a class="code" href="structNone.html">None</a>());</div><div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160;</div><div class="line"><a name="l00232"></a><span class="lineno">  232</span>&#160;  <span class="comment">// Starts a slave with the specified detector, containerizer,</span></div><div class="line"><a name="l00233"></a><span class="lineno">  233</span>&#160;  <span class="comment">// QoS Controller, and flags.</spa
 n></div><div class="line"><a name="l00234"></a><span class="lineno">  234</span>&#160;  <span class="keyword">virtual</span> <a class="code" href="classTry.html">Try&lt;process::Owned&lt;cluster::Slave&gt;</a>&gt; <a class="code" href="classmesos_1_1internal_1_1tests_1_1MesosTest.html#ae3b9e1265f6e122ac2a023374ddea4bb">StartSlave</a>(</div><div class="line"><a name="l00235"></a><span class="lineno">  235</span>&#160;      <a class="code" href="classmesos_1_1master_1_1detector_1_1MasterDetector.html">mesos::master::detector::MasterDetector</a>* detector,</div><div class="line"><a name="l00236"></a><span class="lineno">  236</span>&#160;      <a class="code" href="classmesos_1_1internal_1_1slave_1_1Containerizer.html">slave::Containerizer</a>* containerizer,</div><div class="line"><a name="l00237"></a><span class="lineno">  237</span>&#160;      <a class="code" href="classmesos_1_1slave_1_1QoSController.html">mesos::slave::QoSController</a>* qosController,</div><div class="line"><a na
 me="l00238"></a><span class="lineno">  238</span>&#160;      <span class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;slave::Flags&gt;</a>&amp; <a class="code" href="namespaceflags.html">flags</a> = <a class="code" href="structNone.html">None</a>(),</div><div class="line"><a name="l00239"></a><span class="lineno">  239</span>&#160;      <span class="keywordtype">bool</span> mock = <span class="keyword">false</span>);</div><div class="line"><a name="l00240"></a><span class="lineno">  240</span>&#160;</div><div class="line"><a name="l00241"></a><span class="lineno">  241</span>&#160;  <span class="comment">// Starts a slave with the specified detector, authorizer, and flags.</span></div><div class="line"><a name="l00242"></a><span class="lineno">  242</span>&#160;  <span class="keyword">virtual</span> <a class="code" href="classTry.html">Try&lt;process::Owned&lt;cluster::Slave&gt;</a>&gt; <a class="code" href="classmesos_1_1internal_1_1tests_1_1MesosTest.ht
 ml#ae3b9e1265f6e122ac2a023374ddea4bb">StartSlave</a>(</div><div class="line"><a name="l00243"></a><span class="lineno">  243</span>&#160;      <a class="code" href="classmesos_1_1master_1_1detector_1_1MasterDetector.html">mesos::master::detector::MasterDetector</a>* detector,</div><div class="line"><a name="l00244"></a><span class="lineno">  244</span>&#160;      <a class="code" href="classmesos_1_1Authorizer.html">mesos::Authorizer</a>* authorizer,</div><div class="line"><a name="l00245"></a><span class="lineno">  245</span>&#160;      <span class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;slave::Flags&gt;</a>&amp; <a class="code" href="namespaceflags.html">flags</a> = <a class="code" href="structNone.html">None</a>(),</div><div class="line"><a name="l00246"></a><span class="lineno">  246</span>&#160;      <span class="keywordtype">bool</span> mock = <span class="keyword">false</span>);</div><div class="line"><a name="l00247"></a><span class="lineno"> 
  247</span>&#160;</div><div class="line"><a name="l00248"></a><span class="lineno">  248</span>&#160;  <span class="comment">// Starts a slave with the specified detector, containerizer, authorizer,</span></div><div class="line"><a name="l00249"></a><span class="lineno">  249</span>&#160;  <span class="comment">// and flags.</span></div><div class="line"><a name="l00250"></a><span class="lineno">  250</span>&#160;  <span class="keyword">virtual</span> <a class="code" href="classTry.html">Try&lt;process::Owned&lt;cluster::Slave&gt;</a>&gt; <a class="code" href="classmesos_1_1internal_1_1tests_1_1MesosTest.html#ae3b9e1265f6e122ac2a023374ddea4bb">StartSlave</a>(</div><div class="line"><a name="l00251"></a><span class="lineno">  251</span>&#160;      <a class="code" href="classmesos_1_1master_1_1detector_1_1MasterDetector.html">mesos::master::detector::MasterDetector</a>* detector,</div><div class="line"><a name="l00252"></a><span class="lineno">  252</span>&#160;      <a class="code" h
 ref="classmesos_1_1internal_1_1slave_1_1Containerizer.html">slave::Containerizer</a>* containerizer,</div><div class="line"><a name="l00253"></a><span class="lineno">  253</span>&#160;      <a class="code" href="classmesos_1_1Authorizer.html">mesos::Authorizer</a>* authorizer,</div><div class="line"><a name="l00254"></a><span class="lineno">  254</span>&#160;      <span class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;slave::Flags&gt;</a>&amp; <a class="code" href="namespaceflags.html">flags</a> = <a class="code" href="structNone.html">None</a>(),</div><div class="line"><a name="l00255"></a><span class="lineno">  255</span>&#160;      <span class="keywordtype">bool</span> mock = <span class="keyword">false</span>);</div><div class="line"><a name="l00256"></a><span class="lineno">  256</span>&#160;</div><div class="line"><a name="l00257"></a><span class="lineno">  257</span>&#160;  <span class="comment">// Starts a slave with the specified detector, cont
 ainerizer,</span></div><div class="line"><a name="l00258"></a><span class="lineno">  258</span>&#160;  <span class="comment">// secretGenerator, authorizer and flags.</span></div><div class="line"><a name="l00259"></a><span class="lineno">  259</span>&#160;  <span class="keyword">virtual</span> <a class="code" href="classTry.html">Try&lt;process::Owned&lt;cluster::Slave&gt;</a>&gt; <a class="code" href="classmesos_1_1internal_1_1tests_1_1MesosTest.html#ae3b9e1265f6e122ac2a023374ddea4bb">StartSlave</a>(</div><div class="line"><a name="l00260"></a><span class="lineno">  260</span>&#160;      <a class="code" href="classmesos_1_1master_1_1detector_1_1MasterDetector.html">mesos::master::detector::MasterDetector</a>* detector,</div><div class="line"><a name="l00261"></a><span class="lineno">  261</span>&#160;      <a class="code" href="classmesos_1_1internal_1_1slave_1_1Containerizer.html">slave::Containerizer</a>* containerizer,</div><div class="line"><a name="l00262"></a><span class="li
 neno">  262</span>&#160;      <a class="code" href="classmesos_1_1SecretGenerator.html">mesos::SecretGenerator</a>* secretGenerator,</div><div class="line"><a name="l00263"></a><span class="lineno">  263</span>&#160;      <span class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;mesos::Authorizer*&gt;</a>&amp; authorizer = <a class="code" href="structNone.html">None</a>(),</div><div class="line"><a name="l00264"></a><span class="lineno">  264</span>&#160;      <span class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;slave::Flags&gt;</a>&amp; <a class="code" href="namespaceflags.html">flags</a> = <a class="code" href="structNone.html">None</a>(),</div><div class="line"><a name="l00265"></a><span class="lineno">  265</span>&#160;      <span class="keywordtype">bool</span> mock = <span class="keyword">false</span>);</div><div class="line"><a name="l00266"></a><span class="lineno">  266</span>&#160;</div><div class="line"><a name="l
 00267"></a><span class="lineno">  267</span>&#160;  <span class="comment">// Starts a slave with the specified detector, secretGenerator,</span></div><div class="line"><a name="l00268"></a><span class="lineno">  268</span>&#160;  <span class="comment">// and flags.</span></div><div class="line"><a name="l00269"></a><span class="lineno">  269</span>&#160;  <span class="keyword">virtual</span> <a class="code" href="classTry.html">Try&lt;process::Owned&lt;cluster::Slave&gt;</a>&gt; <a class="code" href="classmesos_1_1internal_1_1tests_1_1MesosTest.html#ae3b9e1265f6e122ac2a023374ddea4bb">StartSlave</a>(</div><div class="line"><a name="l00270"></a><span class="lineno">  270</span>&#160;      <a class="code" href="classmesos_1_1master_1_1detector_1_1MasterDetector.html">mesos::master::detector::MasterDetector</a>* detector,</div><div class="line"><a name="l00271"></a><span class="lineno">  271</span>&#160;      <a class="code" href="classmesos_1_1SecretGenerator.html">mesos::SecretGenerat
 or</a>* secretGenerator,</div><div class="line"><a name="l00272"></a><span class="lineno">  272</span>&#160;      <span class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;slave::Flags&gt;</a>&amp; <a class="code" href="namespaceflags.html">flags</a> = <a class="code" href="structNone.html">None</a>());</div><div class="line"><a name="l00273"></a><span class="lineno">  273</span>&#160;</div><div class="line"><a name="l00274"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1tests_1_1MesosTest.html#a166e4e1e9054846971aa2f4292b03d94">  274</a></span>&#160;  <a class="code" href="classOption.html">Option&lt;zookeeper::URL&gt;</a> <a class="code" href="classmesos_1_1internal_1_1tests_1_1MesosTest.html#a166e4e1e9054846971aa2f4292b03d94">zookeeperUrl</a>;</div><div class="line"><a name="l00275"></a><span class="lineno">  275</span>&#160;</div><div class="line"><a name="l00276"></a><span class="lineno">  276</span>&#160;  <span class="comme
 nt">// NOTE: On Windows, most tasks are run under PowerShell, which uses ~150 MB</span></div><div class="line"><a name="l00277"></a><span class="lineno">  277</span>&#160;  <span class="comment">// of memory per-instance due to loading .NET. Realistically, PowerShell can</span></div><div class="line"><a name="l00278"></a><span class="lineno">  278</span>&#160;  <span class="comment">// be called more than once in a task, so 512 MB is the safe minimum.</span></div><div class="line"><a name="l00279"></a><span class="lineno">  279</span>&#160;  <span class="comment">// Furthermore, because the Windows `cpu` isolator is a hard-cap, 0.1 CPUs</span></div><div class="line"><a name="l00280"></a><span class="lineno">  280</span>&#160;  <span class="comment">// will cause the task (or even a check command) to timeout, so 1 CPU is the</span></div><div class="line"><a name="l00281"></a><span class="lineno">  281</span>&#160;  <span class="comment">// safe minimum.</span></div><div class="line">
 <a name="l00282"></a><span class="lineno">  282</span>&#160;  <span class="comment">//</span></div><div class="line"><a name="l00283"></a><span class="lineno">  283</span>&#160;  <span class="comment">// Because multiple tasks can be run, the default agent resources needs to be</span></div><div class="line"><a name="l00284"></a><span class="lineno">  284</span>&#160;  <span class="comment">// at least a multiple of the default task resources: four times seems safe.</span></div><div class="line"><a name="l00285"></a><span class="lineno">  285</span>&#160;  <span class="comment">//</span></div><div class="line"><a name="l00286"></a><span class="lineno">  286</span>&#160;  <span class="comment">// On platforms where the shell is, e.g. Bash, the minimum is much lower.</span></div><div class="line"><a name="l00287"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1tests_1_1MesosTest.html#a8aa00a8b69568d56ce00d14df6ad835e">  287</a></span>&#160;  <span class="keywor
 d">const</span> std::string <a class="code" href="classmesos_1_1internal_1_1tests_1_1MesosTest.html#a8aa00a8b69568d56ce00d14df6ad835e">defaultAgentResourcesString</a>{</div><div class="line"><a name="l00288"></a><span class="lineno">  288</span>&#160;<span class="preprocessor">#ifdef __WINDOWS__</span></div><div class="line"><a name="l00289"></a><span class="lineno">  289</span>&#160;      <span class="stringliteral">&quot;cpus:4;gpus:0;mem:2048;disk:1024;ports:[31000-32000]&quot;</span></div><div class="line"><a name="l00290"></a><span class="lineno">  290</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00291"></a><span class="lineno">  291</span>&#160;      <span class="stringliteral">&quot;cpus:2;gpus:0;mem:1024;disk:1024;ports:[31000-32000]&quot;</span></div><div class="line"><a name="l00292"></a><span class="lineno">  292</span>&#160;<span class="preprocessor">#endif // __WINDOWS__</span></div><div class="line"><a name="l00293"></a><span cla
 ss="lineno">  293</span>&#160;      };</div><div class="line"><a name="l00294"></a><span class="lineno">  294</span>&#160;</div><div class="line"><a name="l00295"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1tests_1_1MesosTest.html#a7f545027bf63a6a28b372603c3375049">  295</a></span>&#160;  <span class="keyword">const</span> std::string <a class="code" href="classmesos_1_1internal_1_1tests_1_1MesosTest.html#a7f545027bf63a6a28b372603c3375049">defaultTaskResourcesString</a>{</div><div class="line"><a name="l00296"></a><span class="lineno">  296</span>&#160;<span class="preprocessor">#ifdef __WINDOWS__</span></div><div class="line"><a name="l00297"></a><span class="lineno">  297</span>&#160;      <span class="stringliteral">&quot;cpus:1;mem:512;disk:32&quot;</span></div><div class="line"><a name="l00298"></a><span class="lineno">  298</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00299"></a><span class="lineno">  299</sp
 an>&#160;      <span class="stringliteral">&quot;cpus:0.1;mem:32;disk:32&quot;</span></div><div class="line"><a name="l00300"></a><span class="lineno">  300</span>&#160;<span class="preprocessor">#endif // __WINDOWS__</span></div><div class="line"><a name="l00301"></a><span class="lineno">  301</span>&#160;      };</div><div class="line"><a name="l00302"></a><span class="lineno">  302</span>&#160;};</div><div class="line"><a name="l00303"></a><span class="lineno">  303</span>&#160;</div><div class="line"><a name="l00304"></a><span class="lineno">  304</span>&#160;</div><div class="line"><a name="l00305"></a><span class="lineno">  305</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l00306"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1tests_1_1ContainerizerTest.html">  306</a></span>&#160;<span class="keyword">class </span><a class="code" href="classmesos_1_1internal_1_1tests_
 1_1ContainerizerTest.html">ContainerizerTest</a> : <span class="keyword">public</span> <a class="code" href="classmesos_1_1internal_1_1tests_1_1MesosTest.html">MesosTest</a> {};</div><div class="line"><a name="l00307"></a><span class="lineno">  307</span>&#160;</div><div class="line"><a name="l00308"></a><span class="lineno">  308</span>&#160;<span class="preprocessor">#ifdef __linux__</span></div><div class="line"><a name="l00309"></a><span class="lineno">  309</span>&#160;<span class="comment">// Cgroups hierarchy used by the cgroups related tests.</span></div><div class="line"><a name="l00310"></a><span class="lineno">  310</span>&#160;<span class="keyword">const</span> <span class="keyword">static</span> std::string TEST_CGROUPS_HIERARCHY = <span class="stringliteral">&quot;/tmp/mesos_test_cgroup&quot;</span>;</div><div class="line"><a name="l00311"></a><span class="lineno">  311</span>&#160;</div><div class="line"><a name="l00312"></a><span class="lineno">  312</span>&#160;<spa
 n class="comment">// Name of the root cgroup used by the cgroups related tests.</span></div><div class="line"><a name="l00313"></a><span class="lineno">  313</span>&#160;<span class="keyword">const</span> <span class="keyword">static</span> std::string TEST_CGROUPS_ROOT = <span class="stringliteral">&quot;mesos_test&quot;</span>;</div><div class="line"><a name="l00314"></a><span class="lineno">  314</span>&#160;</div><div class="line"><a name="l00315"></a><span class="lineno">  315</span>&#160;</div><div class="line"><a name="l00316"></a><span class="lineno">  316</span>&#160;<span class="keyword">template</span> &lt;&gt;</div><div class="line"><a name="l00317"></a><span class="lineno">  317</span>&#160;<span class="keyword">class </span><a class="code" href="classmesos_1_1internal_1_1tests_1_1ContainerizerTest.html">ContainerizerTest</a>&lt;slave::MesosContainerizer&gt; : <span class="keyword">public</span> <a class="code" href="classmesos_1_1internal_1_1tests_1_1MesosTest.html">Me
 sosTest</a></div><div class="line"><a name="l00318"></a><span class="lineno">  318</span>&#160;{</div><div class="line"><a name="l00319"></a><span class="lineno">  319</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00320"></a><span class="lineno">  320</span>&#160;  <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classmesos_1_1internal_1_1tests_1_1MesosTest.html#a96e7148ce13d0775202148b8fa637045">SetUpTestCase</a>();</div><div class="line"><a name="l00321"></a><span class="lineno">  321</span>&#160;  <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classmesos_1_1internal_1_1tests_1_1MesosTest.html#a610f2bde76cb5a148313cbc96a04d92b">TearDownTestCase</a>();</div><div class="line"><a name="l00322"></a><span class="lineno">  322</span>&#160;</div><div class="line"><a name="l00323"></a><span class="lineno">  323</span>&#160;<span class="keyword">protected</spa
 n>:</div><div class="line"><a name="l00324"></a><span class="lineno">  324</span>&#160;  <span class="keyword">virtual</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Flags.html">slave::Flags</a> <a class="code" href="classmesos_1_1internal_1_1tests_1_1MesosTest.html#a256d948a0c093f4e4c8c59a5de9ecb8f">CreateSlaveFlags</a>();</div><div class="line"><a name="l00325"></a><span class="lineno">  325</span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classTemporaryDirectoryTest.html#a8c276b7f4a8ac1d5ca5d575d56fbea12">SetUp</a>();</div><div class="line"><a name="l00326"></a><span class="lineno">  326</span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classTemporaryDirectoryTest.html#af398699f3f3f018086e72ea220d65dbd">TearDown</a>();</div><div class="line"><a name="l00327"></a><span class="lineno">  327</span>&#160;</div><div class="line"><a name="l00328"><
 /a><span class="lineno">  328</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00329"></a><span class="lineno">  329</span>&#160;  <span class="comment">// Base hierarchy for separately mounted cgroup controllers, e.g., if the</span></div><div class="line"><a name="l00330"></a><span class="lineno">  330</span>&#160;  <span class="comment">// base hierarchy is /sys/fs/cgroup then each controller will be mounted to</span></div><div class="line"><a name="l00331"></a><span class="lineno">  331</span>&#160;  <span class="comment">// /sys/fs/cgroup/{controller}/.</span></div><div class="line"><a name="l00332"></a><span class="lineno">  332</span>&#160;  std::string baseHierarchy;</div><div class="line"><a name="l00333"></a><span class="lineno">  333</span>&#160;</div><div class="line"><a name="l00334"></a><span class="lineno">  334</span>&#160;  <span class="comment">// Set of cgroup subsystems used by the cgroups related tests.</span></div><div class="li
 ne"><a name="l00335"></a><span class="lineno">  335</span>&#160;  <a class="code" href="classhashset.html">hashset&lt;std::string&gt;</a> <a class="code" href="namespacecgroups.html#a43ff5aa5dec5f24b0a3620847e9dd6b6">subsystems</a>;</div><div class="line"><a name="l00336"></a><span class="lineno">  336</span>&#160;};</div><div class="line"><a name="l00337"></a><span class="lineno">  337</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00338"></a><span class="lineno">  338</span>&#160;<span class="keyword">template</span> &lt;&gt;</div><div class="line"><a name="l00339"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1tests_1_1ContainerizerTest_3_01slave_1_1MesosContainerizer_01_4.html">  339</a></span>&#160;<span class="keyword">class </span><a class="code" href="classmesos_1_1internal_1_1tests_1_1ContainerizerTest.html">ContainerizerTest</a>&lt;slave::MesosContainerizer&gt; : <span class="keyword">public</span> <a class="c
 ode" href="classmesos_1_1internal_1_1tests_1_1MesosTest.html">MesosTest</a></div><div class="line"><a name="l00340"></a><span class="lineno">  340</span>&#160;{</div><div class="line"><a name="l00341"></a><span class="lineno">  341</span>&#160;<span class="keyword">protected</span>:</div><div class="line"><a name="l00342"></a><span class="lineno">  342</span>&#160;  <span class="keyword">virtual</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Flags.html">slave::Flags</a> <a class="code" href="classmesos_1_1internal_1_1tests_1_1MesosTest.html#a256d948a0c093f4e4c8c59a5de9ecb8f">CreateSlaveFlags</a>();</div><div class="line"><a name="l00343"></a><span class="lineno">  343</span>&#160;};</div><div class="line"><a name="l00344"></a><span class="lineno">  344</span>&#160;<span class="preprocessor">#endif // __linux__</span></div><div class="line"><a name="l00345"></a><span class="lineno">  345</span>&#160;</div><div class="line"><a name="l00346"></a><span class="lineno">  
 346</span>&#160;</div><div class="line"><a name="l00347"></a><span class="lineno">  347</span>&#160;<span class="preprocessor">#ifdef MESOS_HAS_JAVA</span></div><div class="line"><a name="l00348"></a><span class="lineno">  348</span>&#160;</div><div class="line"><a name="l00349"></a><span class="lineno">  349</span>&#160;<span class="keyword">class </span>MesosZooKeeperTest : <span class="keyword">public</span> <a class="code" href="classmesos_1_1internal_1_1tests_1_1MesosTest.html">MesosTest</a></div><div class="line"><a name="l00350"></a><span class="lineno">  350</span>&#160;{</div><div class="line"><a name="l00351"></a><span class="lineno">  351</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00352"></a><span class="lineno">  352</span>&#160;  <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classmesos_1_1internal_1_1tests_1_1MesosTest.html#a96e7148ce13d0775202148b8fa637045">SetUpTestCase</a>()</div
 ><div class="line"><a name="l00353"></a><span class="lineno">  353</span>&#160;  {</div><div class="line"><a name="l00354"></a><span class="lineno">  354</span>&#160;    <span class="comment">// Make sure the JVM is created.</span></div><div class="line"><a name="l00355"></a><span class="lineno">  355</span>&#160;    <a class="code" href="classmesos_1_1internal_1_1tests_1_1ZooKeeperTest.html#a8bbd933c9e18c30b6c6e0502a31b5b9e">ZooKeeperTest::SetUpTestCase</a>();</div><div class="line"><a name="l00356"></a><span class="lineno">  356</span>&#160;</div><div class="line"><a name="l00357"></a><span class="lineno">  357</span>&#160;    <span class="comment">// Launch the ZooKeeper test server.</span></div><div class="line"><a name="l00358"></a><span class="lineno">  358</span>&#160;    server = <span class="keyword">new</span> <a class="code" href="classmesos_1_1internal_1_1tests_1_1ZooKeeperTestServer.html">ZooKeeperTestServer</a>();</div><div class="line"><a name="l00359"></a><span class
 ="lineno">  359</span>&#160;    server-&gt;startNetwork();</div><div class="line"><a name="l00360"></a><span class="lineno">  360</span>&#160;</div><div class="line"><a name="l00361"></a><span class="lineno">  361</span>&#160;    <a class="code" href="classTry.html">Try&lt;zookeeper::URL&gt;</a> <a class="code" href="namespaceappc_1_1spec.html#a2107ae129dd83fbd20b22195247f16b5">parse</a> = <a class="code" href="classzookeeper_1_1URL.html#a1da68f8b465c13a553cb240827fda1a8">zookeeper::URL::parse</a>(</div><div class="line"><a name="l00362"></a><span class="lineno">  362</span>&#160;        <span class="stringliteral">&quot;zk://&quot;</span> + server-&gt;connectString() + <span class="stringliteral">&quot;/znode&quot;</span>);</div><div class="line"><a name="l00363"></a><span class="lineno">  363</span>&#160;    <a class="code" href="stout_2include_2stout_2gtest_8hpp.html#a0add664e84bbf99f845f1b715dd63f90">ASSERT_SOME</a>(parse);</div><div class="line"><a name="l00364"></a><span class
 ="lineno">  364</span>&#160;</div><div class="line"><a name="l00365"></a><span class="lineno">  365</span>&#160;    url = parse.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>();</div><div class="line"><a name="l00366"></a><span class="lineno">  366</span>&#160;  }</div><div class="line"><a name="l00367"></a><span class="lineno">  367</span>&#160;</div><div class="line"><a name="l00368"></a><span class="lineno">  368</span>&#160;  <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classmesos_1_1internal_1_1tests_1_1MesosTest.html#a610f2bde76cb5a148313cbc96a04d92b">TearDownTestCase</a>()</div><div class="line"><a name="l00369"></a><span class="lineno">  369</span>&#160;  {</div><div class="line"><a name="l00370"></a><span class="lineno">  370</span>&#160;    <span class="keyword">delete</span> server;</div><div class="line"><a name="l00371"></a><span class="lineno">  371</span>&#160;    server = <span class="
 keyword">nullptr</span>;</div><div class="line"><a name="l00372"></a><span class="lineno">  372</span>&#160;  }</div><div class="line"><a name="l00373"></a><span class="lineno">  373</span>&#160;</div><div class="line"><a name="l00374"></a><span class="lineno">  374</span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classTemporaryDirectoryTest.html#a8c276b7f4a8ac1d5ca5d575d56fbea12">SetUp</a>()</div><div class="line"><a name="l00375"></a><span class="lineno">  375</span>&#160;  {</div><div class="line"><a name="l00376"></a><span class="lineno">  376</span>&#160;    <a class="code" href="classTemporaryDirectoryTest.html#a8c276b7f4a8ac1d5ca5d575d56fbea12">MesosTest::SetUp</a>();</div><div class="line"><a name="l00377"></a><span class="lineno">  377</span>&#160;    server-&gt;startNetwork();</div><div class="line"><a name="l00378"></a><span class="lineno">  378</span>&#160;  }</div><div class="line"><a name="l00379"></a><span 
 class="lineno">  379</span>&#160;</div><div class="line"><a name="l00380"></a><span class="lineno">  380</span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classTemporaryDirectoryTest.html#af398699f3f3f018086e72ea220d65dbd">TearDown</a>()</div><div class="line"><a name="l00381"></a><span class="lineno">  381</span>&#160;  {</div><div class="line"><a name="l00382"></a><span class="lineno">  382</span>&#160;    server-&gt;shutdownNetwork();</div><div class="line"><a name="l00383"></a><span class="lineno">  383</span>&#160;    <a class="code" href="classTemporaryDirectoryTest.html#af398699f3f3f018086e72ea220d65dbd">MesosTest::TearDown</a>();</div><div class="line"><a name="l00384"></a><span class="lineno">  384</span>&#160;  }</div><div class="line"><a name="l00385"></a><span class="lineno">  385</span>&#160;</div><div class="line"><a name="l00386"></a><span class="lineno">  386</span>&#160;<span class="keyword">protected</spa
 n>:</div><div class="line"><a name="l00387"></a><span class="lineno">  387</span>&#160;  MesosZooKeeperTest() : <a class="code" href="classmesos_1_1internal_1_1tests_1_1MesosTest.html#a7e0692b45897b8f008a859e229767897">MesosTest</a>(url) {}</div><div class="line"><a name="l00388"></a><span class="lineno">  388</span>&#160;</div><div class="line"><a name="l00389"></a><span class="lineno">  389</span>&#160;  <span class="keyword">virtual</span> master::Flags <a class="code" href="classmesos_1_1internal_1_1tests_1_1MesosTest.html#a69872811a17d1695a1821db3f55c30af">CreateMasterFlags</a>()</div><div class="line"><a name="l00390"></a><span class="lineno">  390</span>&#160;  {</div><div class="line"><a name="l00391"></a><span class="lineno">  391</span>&#160;    master::Flags <a class="code" href="namespaceflags.html">flags</a> = <a class="code" href="classmesos_1_1internal_1_1tests_1_1MesosTest.html#a69872811a17d1695a1821db3f55c30af">MesosTest::CreateMasterFlags</a>();</div><div class="li
 ne"><a name="l00392"></a><span class="lineno">  392</span>&#160;</div><div class="line"><a name="l00393"></a><span class="lineno">  393</span>&#160;    <span class="comment">// NOTE: Since we are using the replicated log with ZooKeeper</span></div><div class="line"><a name="l00394"></a><span class="lineno">  394</span>&#160;    <span class="comment">// (default storage in MesosTest), we need to specify the quorum.</span></div><div class="line"><a name="l00395"></a><span class="lineno">  395</span>&#160;    flags.quorum = 1;</div><div class="line"><a name="l00396"></a><span class="lineno">  396</span>&#160;</div><div class="line"><a name="l00397"></a><span class="lineno">  397</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="namespacemesos_1_1internal_1_1tests.html#af8289f648a916c3f66923867452c7b1b">flags</a>;</div><div class="line"><a name="l00398"></a><span class="lineno">  398</span>&#160;  }</div><div class="line"><a name="l00399"></a><span class="lin
 eno">  399</span>&#160;</div><div class="line"><a name="l00400"></a><span class="lineno">  400</span>&#160;  <span class="keyword">static</span> <a class="code" href="classmesos_1_1internal_1_1tests_1_1ZooKeeperTestServer.html">ZooKeeperTestServer</a>* server;</div><div class="line"><a name="l00401"></a><span class="lineno">  401</span>&#160;  <span class="keyword">static</span> <a class="code" href="classOption.html">Option&lt;zookeeper::URL&gt;</a> url;</div><div class="line"><a name="l00402"></a><span class="lineno">  402</span>&#160;};</div><div class="line"><a name="l00403"></a><span class="lineno">  403</span>&#160;</div><div class="line"><a name="l00404"></a><span class="lineno">  404</span>&#160;<span class="preprocessor">#endif // MESOS_HAS_JAVA</span></div><div class="line"><a name="l00405"></a><span class="lineno">  405</span>&#160;</div><div class="line"><a name="l00406"></a><span class="lineno"><a class="line" href="namespacemesos_1_1internal_1_1tests_1_1v1.html">  406<
 /a></span>&#160;<span class="keyword">namespace </span>v1 {</div><div class="line"><a name="l00407"></a><span class="lineno">  407</span>&#160;</div><div class="line"><a name="l00408"></a><span class="lineno">  408</span>&#160;<span class="comment">// Alias existing `mesos::v1` namespaces so that we can easily write</span></div><div class="line"><a name="l00409"></a><span class="lineno">  409</span>&#160;<span class="comment">// `v1::` in tests.</span></div><div class="line"><a name="l00410"></a><span class="lineno">  410</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00411"></a><span class="lineno">  411</span>&#160;<span class="comment">// TODO(jmlvanre): Remove these aliases once we clean up the `tests`</span></div><div class="line"><a name="l00412"></a><span class="lineno">  412</span>&#160;<span class="comment">// namespace hierarchy.</span></div><div class="line"><a name="l00413"></a><span class="lineno">  413</span>&#160;<span class="keyword">nam
 espace </span><a class="code" href="namespacemesos_1_1v1_1_1agent.html">agent</a> = <a class="code" href="namespacemesos_1_1v1_1_1agent.html">mesos::v1::agent</a>;</div><div class="line"><a name="l00414"></a><span class="lineno">  414</span>&#160;<span class="keyword">namespace </span>maintenance = mesos::v1::maintenance;</div><div class="line"><a name="l00415"></a><span class="lineno">  415</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacemesos_1_1v1_1_1master.html">master</a> = <a class="code" href="namespacemesos_1_1v1_1_1master.html">mesos::v1::master</a>;</div><div class="line"><a name="l00416"></a><span class="lineno">  416</span>&#160;<span class="keyword">namespace </span>quota = mesos::v1::quota;</div><div class="line"><a name="l00417"></a><span class="lineno">  417</span>&#160;</div><div class="line"><a name="l00418"></a><span class="lineno">  418</span>&#160;<span class="keyword">using</span> mesos::v1::OPERATION_PENDING;</div><div class="
 line"><a name="l00419"></a><span class="lineno">  419</span>&#160;<span class="keyword">using</span> mesos::v1::OPERATION_FINISHED;</div><div class="line"><a name="l00420"></a><span class="lineno">  420</span>&#160;<span class="keyword">using</span> mesos::v1::OPERATION_FAILED;</div><div class="line"><a name="l00421"></a><span class="lineno">  421</span>&#160;<span class="keyword">using</span> mesos::v1::OPERATION_ERROR;</div><div class="line"><a name="l00422"></a><span class="lineno">  422</span>&#160;<span class="keyword">using</span> mesos::v1::OPERATION_DROPPED;</div><div class="line"><a name="l00423"></a><span class="lineno">  423</span>&#160;<span class="keyword">using</span> mesos::v1::OPERATION_UNREACHABLE;</div><div class="line"><a name="l00424"></a><span class="lineno">  424</span>&#160;<span class="keyword">using</span> mesos::v1::OPERATION_GONE_BY_OPERATOR;</div><div class="line"><a name="l00425"></a><span class="lineno">  425</span>&#160;<span class="keyword">using</spa
 n> mesos::v1::OPERATION_RECOVERING;</div><div class="line"><a name="l00426"></a><span class="lineno">  426</span>&#160;<span class="keyword">using</span> mesos::v1::OPERATION_UNKNOWN;</div><div class="line"><a name="l00427"></a><span class="lineno">  427</span>&#160;</div><div class="line"><a name="l00428"></a><span class="lineno">  428</span>&#160;<span class="keyword">using</span> mesos::v1::TASK_STAGING;</div><div class="line"><a name="l00429"></a><span class="lineno">  429</span>&#160;<span class="keyword">using</span> mesos::v1::TASK_STARTING;</div><div class="line"><a name="l00430"></a><span class="lineno">  430</span>&#160;<span class="keyword">using</span> mesos::v1::TASK_RUNNING;</div><div class="line"><a name="l00431"></a><span class="lineno">  431</span>&#160;<span class="keyword">using</span> mesos::v1::TASK_KILLING;</div><div class="line"><a name="l00432"></a><span class="lineno">  432</span>&#160;<span class="keyword">using</span> mesos::v1::TASK_FINISHED;</div><div cl
 ass="line"><a name="l00433"></a><span class="lineno">  433</span>&#160;<span class="keyword">using</span> mesos::v1::TASK_FAILED;</div><div class="line"><a name="l00434"></a><span class="lineno">  434</span>&#160;<span class="keyword">using</span> mesos::v1::TASK_KILLED;</div><div class="line"><a name="l00435"></a><span class="lineno">  435</span>&#160;<span class="keyword">using</span> mesos::v1::TASK_ERROR;</div><div class="line"><a name="l00436"></a><span class="lineno">  436</span>&#160;<span class="keyword">using</span> mesos::v1::TASK_LOST;</div><div class="line"><a name="l00437"></a><span class="lineno">  437</span>&#160;<span class="keyword">using</span> mesos::v1::TASK_DROPPED;</div><div class="line"><a name="l00438"></a><span class="lineno">  438</span>&#160;<span class="keyword">using</span> mesos::v1::TASK_UNREACHABLE;</div><div class="line"><a name="l00439"></a><span class="lineno">  439</span>&#160;<span class="keyword">using</span> mesos::v1::TASK_GONE;</div><div clas
 s="line"><a name="l00440"></a><span class="lineno">  440</span>&#160;<span class="keyword">using</span> mesos::v1::TASK_GONE_BY_OPERATOR;</div><div class="line"><a name="l00441"></a><span class="lineno">  441</span>&#160;<span class="keyword">using</span> mesos::v1::TASK_UNKNOWN;</div><div class="line"><a name="l00442"></a><span class="lineno">  442</span>&#160;</div><div class="line"><a name="l00443"></a><span class="lineno">  443</span>&#160;<span class="keyword">using</span> mesos::v1::AgentID;</div><div class="line"><a name="l00444"></a><span class="lineno">  444</span>&#160;<span class="keyword">using</span> mesos::v1::CheckInfo;</div><div class="line"><a name="l00445"></a><span class="lineno">  445</span>&#160;<span class="keyword">using</span> mesos::v1::CommandInfo;</div><div class="line"><a name="l00446"></a><span class="lineno">  446</span>&#160;<span class="keyword">using</span> mesos::v1::ContainerID;</div><div class="line"><a name="l00447"></a><span class="lineno">  447
 </span>&#160;<span class="keyword">using</span> mesos::v1::ContainerStatus;</div><div class="line"><a name="l00448"></a><span class="lineno">  448</span>&#160;<span class="keyword">using</span> mesos::v1::Environment;</div><div class="line"><a name="l00449"></a><span class="lineno">  449</span>&#160;<span class="keyword">using</span> mesos::v1::ExecutorID;</div><div class="line"><a name="l00450"></a><span class="lineno">  450</span>&#160;<span class="keyword">using</span> mesos::v1::ExecutorInfo;</div><div class="line"><a name="l00451"></a><span class="lineno">  451</span>&#160;<span class="keyword">using</span> mesos::v1::Filters;</div><div class="line"><a name="l00452"></a><span class="lineno">  452</span>&#160;<span class="keyword">using</span> mesos::v1::FrameworkID;</div><div class="line"><a name="l00453"></a><span class="lineno">  453</span>&#160;<span class="keyword">using</span> mesos::v1::FrameworkInfo;</div><div class="line"><a name="l00454"></a><span class="lineno">  454<
 /span>&#160;<span class="keyword">using</span> mesos::v1::HealthCheck;</div><div class="line"><a name="l00455"></a><span class="lineno">  455</span>&#160;<span class="keyword">using</span> mesos::v1::InverseOffer;</div><div class="line"><a name="l00456"></a><span class="lineno">  456</span>&#160;<span class="keyword">using</span> mesos::v1::MachineID;</div><div class="line"><a name="l00457"></a><span class="lineno">  457</span>&#160;<span class="keyword">using</span> mesos::v1::Metric;</div><div class="line"><a name="l00458"></a><span class="lineno">  458</span>&#160;<span class="keyword">using</span> mesos::v1::Offer;</div><div class="line"><a name="l00459"></a><span class="lineno">  459</span>&#160;<span class="keyword">using</span> mesos::v1::OperationID;</div><div class="line"><a name="l00460"></a><span class="lineno">  460</span>&#160;<span class="keyword">using</span> mesos::v1::OperationState;</div><div class="line"><a name="l00461"></a><span class="lineno">  461</span>&#160;
 <span class="keyword">using</span> mesos::v1::OperationStatus;</div><div class="line"><a name="l00462"></a><span class="lineno">  462</span>&#160;<span class="keyword">using</span> mesos::v1::Resource;</div><div class="line"><a name="l00463"></a><span class="lineno">  463</span>&#160;<span class="keyword">using</span> mesos::v1::ResourceProviderID;</div><div class="line"><a name="l00464"></a><span class="lineno">  464</span>&#160;<span class="keyword">using</span> mesos::v1::ResourceProviderInfo;</div><div class="line"><a name="l00465"></a><span class="lineno">  465</span>&#160;<span class="keyword">using</span> <a class="code" href="classmesos_1_1v1_1_1Resources.html">mesos::v1::Resources</a>;</div><div class="line"><a name="l00466"></a><span class="lineno">  466</span>&#160;<span class="keyword">using</span> mesos::v1::TaskID;</div><div class="line"><a name="l00467"></a><span class="lineno">  467</span>&#160;<span class="keyword">using</span> mesos::v1::TaskInfo;</div><div class="
 line"><a name="l00468"></a><span class="lineno">  468</span>&#160;<span class="keyword">using</span> mesos::v1::TaskGroupInfo;</div><div class="line"><a name="l00469"></a><span class="lineno">  469</span>&#160;<span class="keyword">using</span> mesos::v1::TaskState;</div><div class="line"><a name="l00470"></a><span class="lineno">  470</span>&#160;<span class="keyword">using</span> mesos::v1::TaskStatus;</div><div class="line"><a name="l00471"></a><span class="lineno">  471</span>&#160;<span class="keyword">using</span> mesos::v1::UUID;</div><div class="line"><a name="l00472"></a><span class="lineno">  472</span>&#160;<span class="keyword">using</span> mesos::v1::WeightInfo;</div><div class="line"><a name="l00473"></a><span class="lineno">  473</span>&#160;</div><div class="line"><a name="l00474"></a><span class="lineno">  474</span>&#160;} <span class="comment">// namespace v1 {</span></div><div class="line"><a name="l00475"></a><span class="lineno">  475</span>&#160;</div><div cla
 ss="line"><a name="l00476"></a><span class="lineno"><a class="line" href="namespacemesos_1_1internal_1_1tests_1_1common.html">  476</a></span>&#160;<span class="keyword">namespace </span>common {</div><div class="line"><a name="l00477"></a><span class="lineno">  477</span>&#160;</div><div class="line"><a name="l00478"></a><span class="lineno">  478</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> TCredential&gt;</div><div class="line"><a name="l00479"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1tests_1_1common_1_1DefaultCredential.html">  479</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structmesos_1_1internal_1_1tests_1_1common_1_1DefaultCredential.html">DefaultCredential</a></div><div class="line"><a name="l00480"></a><span class="lineno">  480</span>&#160;{</div><div class="line"><a name="l00481"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1tests_1_1c
 ommon_1_1DefaultCredential.html#a2e384f9e69baf909ea32437ecde85143">  481</a></span>&#160;  <span class="keyword">static</span> TCredential <a class="code" href="structmesos_1_1internal_1_1tests_1_1common_1_1DefaultCredential.html#a2e384f9e69baf909ea32437ecde85143">create</a>()</div><div class="line"><a name="l00482"></a><span class="lineno">  482</span>&#160;  {</div><div class="line"><a name="l00483"></a><span class="lineno">  483</span>&#160;    TCredential credential;</div><div class="line"><a name="l00484"></a><span class="lineno">  484</span>&#160;    credential.set_principal(<span class="stringliteral">&quot;test-principal&quot;</span>);</div><div class="line"><a name="l00485"></a><span class="lineno">  485</span>&#160;    credential.set_secret(<span class="stringliteral">&quot;test-secret&quot;</span>);</div><div class="line"><a name="l00486"></a><span class="lineno">  486</span>&#160;    <span class="keywordflow">return</span> credential;</div><div class="line"><a name="l004
 87"></a><span class="lineno">  487</span>&#160;  }</div><div class="line"><a name="l00488"></a><span class="lineno">  488</span>&#160;};</div><div class="line"><a name="l00489"></a><span class="lineno">  489</span>&#160;</div><div class="line"><a name="l00490"></a><span class="lineno">  490</span>&#160;</div><div class="line"><a name="l00491"></a><span class="lineno">  491</span>&#160;<span class="comment">// TODO(jmlvanre): consider factoring this out.</span></div><div class="line"><a name="l00492"></a><span class="lineno">  492</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> TCredential&gt;</div><div class="line"><a name="l00493"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1tests_1_1common_1_1DefaultCredential2.html">  493</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structmesos_1_1internal_1_1tests_1_1common_1_1DefaultCredential2.html">DefaultCredential2</a></div><div class="line
 "><a name="l00494"></a><span class="lineno">  494</span>&#160;{</div><div class="line"><a name="l00495"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1tests_1_1common_1_1DefaultCredential2.html#a75bb6737c4f44529656db306160ddd0f">  495</a></span>&#160;  <span class="keyword">static</span> TCredential <a class="code" href="structmesos_1_1internal_1_1tests_1_1common_1_1DefaultCredential2.html#a75bb6737c4f44529656db306160ddd0f">create</a>()</div><div class="line"><a name="l00496"></a><span class="lineno">  496</span>&#160;  {</div><div class="line"><a name="l00497"></a><span class="lineno">  497</span>&#160;    TCredential credential;</div><div class="line"><a name="l00498"></a><span class="lineno">  498</span>&#160;    credential.set_principal(<span class="stringliteral">&quot;test-principal-2&quot;</span>);</div><div class="line"><a name="l00499"></a><span class="lineno">  499</span>&#160;    credential.set_secret(<span class="stringliteral">&quot;test-secre
 t-2&quot;</span>);</div><div class="line"><a name="l00500"></a><span class="lineno">  500</span>&#160;    <span class="keywordflow">return</span> credential;</div><div class="line"><a name="l00501"></a><span class="lineno">  501</span>&#160;  }</div><div class="line"><a name="l00502"></a><span class="lineno">  502</span>&#160;};</div><div class="line"><a name="l00503"></a><span class="lineno">  503</span>&#160;</div><div class="line"><a name="l00504"></a><span class="lineno">  504</span>&#160;</div><div class="line"><a name="l00505"></a><span class="lineno">  505</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> TFrameworkInfo, <span class="keyword">typename</span> TCredential&gt;</div><div class="line"><a name="l00506"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1tests_1_1common_1_1DefaultFrameworkInfo.html">  506</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structmesos_1_1internal_1
 _1tests_1_1common_1_1DefaultFrameworkInfo.html">DefaultFrameworkInfo</a></div><div class="line"><a name="l00507"></a><span class="lineno">  507</span>&#160;{</div><div class="line"><a name="l00508"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1tests_1_1common_1_1DefaultFrameworkInfo.html#a842b7475bc4e06999d0570793eb81cb4">  508</a></span>&#160;  <span class="keyword">static</span> TFrameworkInfo <a class="code" href="structmesos_1_1internal_1_1tests_1_1common_1_1DefaultFrameworkInfo.html#a842b7475bc4e06999d0570793eb81cb4">create</a>()</div><div class="line"><a name="l00509"></a><span class="lineno">  509</span>&#160;  {</div><div class="line"><a name="l00510"></a><span class="lineno">  510</span>&#160;    TFrameworkInfo framework;</div><div class="line"><a name="l00511"></a><span class="lineno">  511</span>&#160;    framework.set_name(<span class="stringliteral">&quot;default&quot;</span>);</div><div class="line"><a name="l00512"></a><span class="lineno">
   512</span>&#160;    framework.set_user(<a class="code" href="namespaceos.html#a698aa27e5ea6b1dc1c190b978c2f7960">os::user</a>().<span class="keyword">get</span>())

<TRUNCATED>

[25/50] mesos-site git commit: Updated the website built from mesos SHA: 7c9c72d.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/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 14efd27..d6b177d 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
@@ -52,7 +52,7 @@
 <div class="title">gtest.hpp</div>  </div>
 </div><!--header-->
 <div class="contents">
-<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>&#160;<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>&#160;<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>&#160;<span class="comment">// distributed with this work for additional information</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<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>&#160;<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>&#160;<span class="comment">// &quot;License&quot;); you may not use this file except in compliance</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<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>&#160;<
 span class="comment">// distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<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>&#160;<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>&#160;<span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;</div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="preprocessor">#ifndef __PROCESS_SSL_TEST_HPP__</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="preprocessor">#define __PROCESS_SSL_TEST_HP
 P__</span></div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="preprocessor">#ifdef USE_SSL_SOCKET</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span></div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="preprocessor">#include &lt;openssl/rsa.h&gt;</span></div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="preprocessor">#include &lt;openssl/bio.h&gt;</span></div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="preprocessor">#include &lt;openssl/x509.h&gt;</span></div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<span clas
 s="preprocessor">#include &lt;openssl/x509v3.h&gt;</span></div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;</div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="3rdparty_2libprocess_2include_2process_2io_8hpp.html">process/io.hpp</a>&gt;</span></div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="libprocess_2include_2process_2process_8hpp.html">process/process.hpp</a>&gt;</span></div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="libprocess_2include_2process_2socket_8hpp.html">process/socket.hpp</a>&gt;</span></div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="subprocess_8hpp.html">pro
 cess/subprocess.hpp</a>&gt;</span></div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="utilities_8hpp.html">process/ssl/utilities.hpp</a>&gt;</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>&#160;<span class="preprocessor">#include &lt;<a class="code" href="none_8hpp.html">stout/none.hpp</a>&gt;</span></div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="option_8hpp.html">stout/option.hpp</a>&gt;</span></div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="try_8hpp.html">stout/try.hpp</a>&gt;</span></div><div cl
 ass="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="result_8hpp.html">stout/result.hpp</a>&gt;</span></div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;</div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="realpath_8hpp.html">stout/os/realpath.hpp</a>&gt;</span></div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;<span class="preprocessor">#endif // USE_SSL_SOCKET</span></div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;</div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="3rdparty_2stout_2include_2stout_2tests_2utils_8hpp.html">stout/tests/utils.hpp</a>&gt;</span></div><div class="line"><a name="l00044"></a><span class="lineno
 ">   44</span>&#160;</div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;<span class="preprocessor">#ifdef USE_SSL_SOCKET</span></div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;<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>&#160;<span class="keyword">namespace </span>network {</div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;<span class="keyword">namespace </span>openssl {</div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;</div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;<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>&#160;<span class="comment">// programatically change
  SSL flags during tests.</span></div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;<span class="keywordtype">void</span> reinitialize();</div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;</div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;} <span class="comment">// namespace openssl {</span></div><div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;} <span class="comment">// namespace network {</span></div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;} <span class="comment">// namespace process {</span></div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;<span class="preprocessor">#endif // USE_SSL_SOCKET</span></div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;</div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;<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>&#160;<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>&#160;<span class="comment">// to the `TemporaryDirectoryTest` under that condition.</span></div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;<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>&#160;<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>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;</div><div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;<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>&#160;{</div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;  <span class="keyword">static</span> <span class="keywordtype">void</span> TearDownTestCase()</div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;  {</div><div class=
 "line"><a name="l00074"></a><span class="lineno">   74</span>&#160;    <span class="comment">// Clear and reset any environment variables.</span></div><div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;    set_environment_variables({});</div><div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;  }</div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;</div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;<span class="keyword">protected</span>:</div><div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;  <a class="code" href="classPath.html">Path</a> key_path()</div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;  {</div><div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;    <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">&quot;key.pem&quot;</span>));</div><div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;  }</div><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;</div><div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;  <a class="code" href="classPath.html">Path</a> certificate_path()</div><div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;  {</div><div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;    <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">&quot;cert.pem&quot;</span>));</div><div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;  }</div><div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;</div><div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;  <a class="code" href="classPath.html">Path</a> scrap_key_path()</div><div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;  {</div><div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="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">&quot;scrap_key.pem&quot;</span>));</div><div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;  }</div><div class="line"><a name="l00102"></a><spa
 n class="lineno">  102</span>&#160;</div><div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;  <a class="code" href="classPath.html">Path</a> scrap_certificate_path()</div><div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;  {</div><div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;    <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">&quot;scrap_cert.pem&quot;</span>));</div><div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;  }</div><div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;</div><div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;  <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>&#160;      <span class="keyword">const</span> std::map&lt;std::string, std::string&gt;&amp; <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>&#160;  {</div><div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;    <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>&#160;    <span class="comment">// ensuring a clean starting slate between tests.</span></div><div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;    <a class="code" href="namespaceos.html#a7471e14f4cbd7e23b5daa21e556f4eb5">os::unsetenv</a>(<span class="stringliteral">&quot;LIBPR
 OCESS_SSL_ENABLED&quot;</span>);</div><div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;    <a class="code" href="namespaceos.html#a7471e14f4cbd7e23b5daa21e556f4eb5">os::unsetenv</a>(<span class="stringliteral">&quot;LIBPROCESS_SSL_SUPPORT_DOWNGRADE&quot;</span>);</div><div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;    <a class="code" href="namespaceos.html#a7471e14f4cbd7e23b5daa21e556f4eb5">os::unsetenv</a>(<span class="stringliteral">&quot;LIBPROCESS_SSL_CERT_FILE&quot;</span>);</div><div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;    <a class="code" href="namespaceos.html#a7471e14f4cbd7e23b5daa21e556f4eb5">os::unsetenv</a>(<span class="stringliteral">&quot;LIBPROCESS_SSL_KEY_FILE&quot;</span>);</div><div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;    <a class="code" href="namespaceos.html#a7471e14f4cbd7e23b5daa21e556f4eb5">os::unsetenv</a>(<span class="stringlite
 ral">&quot;LIBPROCESS_SSL_VERIFY_CERT&quot;</span>);</div><div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;    <a class="code" href="namespaceos.html#a7471e14f4cbd7e23b5daa21e556f4eb5">os::unsetenv</a>(<span class="stringliteral">&quot;LIBPROCESS_SSL_REQUIRE_CERT&quot;</span>);</div><div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;    <a class="code" href="namespaceos.html#a7471e14f4cbd7e23b5daa21e556f4eb5">os::unsetenv</a>(<span class="stringliteral">&quot;LIBPROCESS_SSL_VERIFY_DEPTH&quot;</span>);</div><div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;    <a class="code" href="namespaceos.html#a7471e14f4cbd7e23b5daa21e556f4eb5">os::unsetenv</a>(<span class="stringliteral">&quot;LIBPROCESS_SSL_CA_DIR&quot;</span>);</div><div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;    <a class="code" href="namespaceos.html#a7471e14f4cbd7e23b5daa21e556f4eb5">os::unsetenv</a>(<span c
 lass="stringliteral">&quot;LIBPROCESS_SSL_CA_FILE&quot;</span>);</div><div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;    <a class="code" href="namespaceos.html#a7471e14f4cbd7e23b5daa21e556f4eb5">os::unsetenv</a>(<span class="stringliteral">&quot;LIBPROCESS_SSL_CIPHERS&quot;</span>);</div><div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;    <a class="code" href="namespaceos.html#a7471e14f4cbd7e23b5daa21e556f4eb5">os::unsetenv</a>(<span class="stringliteral">&quot;LIBPROCESS_SSL_ENABLE_SSL_V3&quot;</span>);</div><div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;    <a class="code" href="namespaceos.html#a7471e14f4cbd7e23b5daa21e556f4eb5">os::unsetenv</a>(<span class="stringliteral">&quot;LIBPROCESS_SSL_ENABLE_TLS_V1_0&quot;</span>);</div><div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;    <a class="code" href="namespaceos.html#a7471e14f4cbd7e23b5daa21e556f4eb5">os::uns
 etenv</a>(<span class="stringliteral">&quot;LIBPROCESS_SSL_ENABLE_TLS_V1_1&quot;</span>);</div><div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;    <a class="code" href="namespaceos.html#a7471e14f4cbd7e23b5daa21e556f4eb5">os::unsetenv</a>(<span class="stringliteral">&quot;LIBPROCESS_SSL_ENABLE_TLS_V1_2&quot;</span>);</div><div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;</div><div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;    <span class="comment">// Copy the given map into the clean slate.</span></div><div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;    <a class="code" href="foreach_8hpp.html#a66900b166526abe66464d6597536b111">foreachpair</a> (</div><div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;        <span class="keyword">const</span> std::string&amp; <a class="code" href="namespaceos_1_1Shell.html#acfe16ef2b1146ad49a8651c0a457ce46"
 >name</a>, <span class="keyword">const</span> std::string&amp; value, environment) {</div><div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;      <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>&#160;    }</div><div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;</div><div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;    <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>&#160;    process::network::openssl::reinitialize();</div><div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;  }</div><div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;</div><div class="line"><a name="l00152"></a><span clas
 s="lineno">  152</span>&#160;  <span class="keywordtype">void</span> generate_keys_and_certs() {</div><div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;    <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>&#160;    <span class="comment">// have a consolidated &#39;cleanup()&#39; function. This makes all the</span></div><div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;    <span class="comment">// &#39;EXIT()&#39; calls more readable and less error prone.</span></div><div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;    <a class="code" href="classResult.html">Result&lt;EVP_PKEY*&gt;</a> private_key = <a class="code" href="structNone.html">None</a>();</div><div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;    <a class="code" href="classResult.html">Resul
 t&lt;X509*&gt;</a> certificate = <a class="code" href="structNone.html">None</a>();</div><div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;    <a class="code" href="classResult.html">Result&lt;EVP_PKEY*&gt;</a> scrap_key = <a class="code" href="structNone.html">None</a>();</div><div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;    <a class="code" href="classResult.html">Result&lt;X509*&gt;</a> scrap_certificate = <a class="code" href="structNone.html">None</a>();</div><div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;</div><div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;    <span class="keyword">auto</span> <a class="code" href="namespacecgroups.html#a12d210f286e5fcf7993c0c90b9459606">cleanup</a> = [&amp;private_key, &amp;certificate, &amp;scrap_key, &amp;scrap_certificate](</div><div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;        <span 
 class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;std::string&gt;</a> abort_message = <a class="code" href="structNone.html">None</a>()) {</div><div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;      <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>&#160;      <span class="keywordflow">if</span> (certificate.isSome()) { X509_free(certificate.get()); }</div><div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;      <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>&#160;      <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>&#160;</div><div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;      <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>&#160;      <span class="comment">// is horribly and irrecoverably wrong.</span></div><div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;      <span class="keywordflow">if</span> (abort_message.isSome()) {</div><div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;        <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>&#160;      }</div><div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;    };</div><div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;</div><div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;    <span class="comment">// Generate the authority key.</span></div><div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;    private_key = process::network::openssl::generate_private_rsa_key();</div><div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;    <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>&#160;      <a class="code" href="namespacecgroups.html#a12d210f286e5fcf7993c0c90b9459606">cleanup</a>(<span class="
 stringliteral">&quot;Could not generate private key: &quot;</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>&#160;    }</div><div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;</div><div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;    <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>&#160;    <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>&#160;    <span class="comment">// hostname verification of the certificate will pass.</span></div><div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;    <a class="code" href="classTry.html">Try&l
 t;std::string&gt;</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>&#160;    <span class="keywordflow">if</span> (hostname.isError()) {</div><div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;      <a class="code" href="namespacecgroups.html#a12d210f286e5fcf7993c0c90b9459606">cleanup</a>(<span class="stringliteral">&quot;Could not determine hostname of libprocess: &quot;</span> +</div><div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;              hostname.error());</div><div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;    }</div><div class="line"><a name="l00189"></a><span class="
 lineno">  189</span>&#160;</div><div class="line"><a name="l00190"></a><span class="lineno">  190</span>&#160;    <span class="comment">// Generate an authorized certificate.</span></div><div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160;    certificate = process::network::openssl::generate_x509(</div><div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;        private_key.<a class="code" href="classResult.html#aedf79f3b14dcda5791b84a64ada4d412">get</a>(),</div><div class="line"><a name="l00193"></a><span class="lineno">  193</span>&#160;        private_key.<a class="code" href="classResult.html#aedf79f3b14dcda5791b84a64ada4d412">get</a>(),</div><div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#160;        <a class="code" href="structNone.html">None</a>(),</div><div class="line"><a name="l00195"></a><span class="lineno">  195</span>&#160;        1,</div><div class="line"><a name="l00196"></a><span class="lin
 eno">  196</span>&#160;        365,</div><div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;        hostname.get(),</div><div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160;        <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>&#160;</div><div class="line"><a name="l00200"></a><span class="lineno">  200</span>&#160;    <span class="keywordflow">if</span> (certificate.isError()) {</div><div class="line"><a name="l00201"></a><span class="lineno">  201</span>&#160;      <a class="code" href="namespacecgroups.html#a12d210f286e5fcf7993c0c90b9459606">cleanup</a>(<span class="stringliteral">&quot;Could not generate certificate: &quot;</span> + certificate.error());</div><div class="line"><a name="l00202"></a><span class="lineno">  202</span>&#160;
     }</div><div class="line"><a name="l00203"></a><span class="lineno">  203</span>&#160;</div><div class="line"><a name="l00204"></a><span class="lineno">  204</span>&#160;    <span class="comment">// Write the authority key to disk.</span></div><div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160;    <a class="code" href="classTry.html">Try&lt;Nothing&gt;</a> key_write =</div><div class="line"><a name="l00206"></a><span class="lineno">  206</span>&#160;      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>&#160;</div><div class="line"><a name="l00208"></a><span class="lineno">  208</span>&#160;    <span class="keywordflow">if</span> (key_write.isError()) {</div><div class="line"><a name="l00209"></a><span class="lineno">  209</span>&#160;      <a class="code" href="namespacecgro
 ups.html#a12d210f286e5fcf7993c0c90b9459606">cleanup</a>(<span class="stringliteral">&quot;Could not write private key to disk: &quot;</span> + key_write.error());</div><div class="line"><a name="l00210"></a><span class="lineno">  210</span>&#160;    }</div><div class="line"><a name="l00211"></a><span class="lineno">  211</span>&#160;</div><div class="line"><a name="l00212"></a><span class="lineno">  212</span>&#160;    <span class="comment">// Write the authorized certificate to disk.</span></div><div class="line"><a name="l00213"></a><span class="lineno">  213</span>&#160;    <a class="code" href="classTry.html">Try&lt;Nothing&gt;</a> certificate_write =</div><div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160;      process::network::openssl::write_certificate_file(</div><div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160;          certificate.get(),</div><div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#16
 0;          certificate_path());</div><div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160;</div><div class="line"><a name="l00218"></a><span class="lineno">  218</span>&#160;    <span class="keywordflow">if</span> (certificate_write.isError()) {</div><div class="line"><a name="l00219"></a><span class="lineno">  219</span>&#160;      <a class="code" href="namespacecgroups.html#a12d210f286e5fcf7993c0c90b9459606">cleanup</a>(<span class="stringliteral">&quot;Could not write certificate to disk: &quot;</span> +</div><div class="line"><a name="l00220"></a><span class="lineno">  220</span>&#160;              certificate_write.error());</div><div class="line"><a name="l00221"></a><span class="lineno">  221</span>&#160;    }</div><div class="line"><a name="l00222"></a><span class="lineno">  222</span>&#160;</div><div class="line"><a name="l00223"></a><span class="lineno">  223</span>&#160;    <span class="comment">// Generate a scrap key.</span></div><div class="li
 ne"><a name="l00224"></a><span class="lineno">  224</span>&#160;    scrap_key = process::network::openssl::generate_private_rsa_key();</div><div class="line"><a name="l00225"></a><span class="lineno">  225</span>&#160;    <span class="keywordflow">if</span> (scrap_key.isError()) {</div><div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;      <a class="code" href="namespacecgroups.html#a12d210f286e5fcf7993c0c90b9459606">cleanup</a>(<span class="stringliteral">&quot;Could not generate a scrap private key: &quot;</span> + scrap_key.error());</div><div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160;    }</div><div class="line"><a name="l00228"></a><span class="lineno">  228</span>&#160;</div><div class="line"><a name="l00229"></a><span class="lineno">  229</span>&#160;    <span class="comment">// Write the scrap key to disk.</span></div><div class="line"><a name="l00230"></a><span class="lineno">  230</span>&#160;    key_write = proce
 ss::network::openssl::write_key_file(</div><div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160;        scrap_key.get(),</div><div class="line"><a name="l00232"></a><span class="lineno">  232</span>&#160;        scrap_key_path());</div><div class="line"><a name="l00233"></a><span class="lineno">  233</span>&#160;</div><div class="line"><a name="l00234"></a><span class="lineno">  234</span>&#160;    <span class="keywordflow">if</span> (key_write.isError()) {</div><div class="line"><a name="l00235"></a><span class="lineno">  235</span>&#160;      <a class="code" href="namespacecgroups.html#a12d210f286e5fcf7993c0c90b9459606">cleanup</a>(<span class="stringliteral">&quot;Could not write scrap key to disk: &quot;</span> + key_write.error());</div><div class="line"><a name="l00236"></a><span class="lineno">  236</span>&#160;    }</div><div class="line"><a name="l00237"></a><span class="lineno">  237</span>&#160;</div><div class="line"><a name="l00238"></a><span cl
 ass="lineno">  238</span>&#160;    <span class="comment">// Generate a scrap certificate.</span></div><div class="line"><a name="l00239"></a><span class="lineno">  239</span>&#160;    scrap_certificate = process::network::openssl::generate_x509(</div><div class="line"><a name="l00240"></a><span class="lineno">  240</span>&#160;        scrap_key.get(),</div><div class="line"><a name="l00241"></a><span class="lineno">  241</span>&#160;        scrap_key.get());</div><div class="line"><a name="l00242"></a><span class="lineno">  242</span>&#160;</div><div class="line"><a name="l00243"></a><span class="lineno">  243</span>&#160;    <span class="keywordflow">if</span> (scrap_certificate.isError()) {</div><div class="line"><a name="l00244"></a><span class="lineno">  244</span>&#160;      <a class="code" href="namespacecgroups.html#a12d210f286e5fcf7993c0c90b9459606">cleanup</a>(<span class="stringliteral">&quot;Could not generate a scrap certificate: &quot;</span> +</div><div class="line"><a
  name="l00245"></a><span class="lineno">  245</span>&#160;              scrap_certificate.error());</div><div class="line"><a name="l00246"></a><span class="lineno">  246</span>&#160;    }</div><div class="line"><a name="l00247"></a><span class="lineno">  247</span>&#160;</div><div class="line"><a name="l00248"></a><span class="lineno">  248</span>&#160;    <span class="comment">// Write the scrap certificate to disk.</span></div><div class="line"><a name="l00249"></a><span class="lineno">  249</span>&#160;    certificate_write = process::network::openssl::write_certificate_file(</div><div class="line"><a name="l00250"></a><span class="lineno">  250</span>&#160;        scrap_certificate.get(),</div><div class="line"><a name="l00251"></a><span class="lineno">  251</span>&#160;        scrap_certificate_path());</div><div class="line"><a name="l00252"></a><span class="lineno">  252</span>&#160;</div><div class="line"><a name="l00253"></a><span class="lineno">  253</span>&#160;    <span
  class="keywordflow">if</span> (certificate_write.isError()) {</div><div class="line"><a name="l00254"></a><span class="lineno">  254</span>&#160;      <a class="code" href="namespacecgroups.html#a12d210f286e5fcf7993c0c90b9459606">cleanup</a>(<span class="stringliteral">&quot;Could not write scrap certificate to disk: &quot;</span> +</div><div class="line"><a name="l00255"></a><span class="lineno">  255</span>&#160;              certificate_write.error());</div><div class="line"><a name="l00256"></a><span class="lineno">  256</span>&#160;    }</div><div class="line"><a name="l00257"></a><span class="lineno">  257</span>&#160;</div><div class="line"><a name="l00258"></a><span class="lineno">  258</span>&#160;    <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>&#160;    <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>&#160;    <a class="code" href="namespacecgroups.html#a12d210f286e5fcf7993c0c90b9459606">cleanup</a>();</div><div class="line"><a name="l00261"></a><span class="lineno">  261</span>&#160;  }</div><div class="line"><a name="l00262"></a><span class="lineno">  262</span>&#160;};</div><div class="line"><a name="l00263"></a><span class="lineno">  263</span>&#160;</div><div class="line"><a name="l00264"></a><span class="lineno">  264</span>&#160;</div><div class="line"><a name="l00272"></a><span class="lineno">  272</span>&#160;<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>&#160;                <span class="keyword">public</span> ::testing::WithParamInterface&lt;const char*&gt;</div><div class="line"><a name="l00274"></a><span class
 ="lineno">  274</span>&#160;{</div><div class="line"><a name="l00275"></a><span class="lineno">  275</span>&#160;<span class="keyword">protected</span>:</div><div class="line"><a name="l00276"></a><span class="lineno">  276</span>&#160;  SSLTest() : data(<span class="stringliteral">&quot;Hello World!&quot;</span>) {}</div><div class="line"><a name="l00277"></a><span class="lineno">  277</span>&#160;</div><div class="line"><a name="l00278"></a><span class="lineno">  278</span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetUp()</div><div class="line"><a name="l00279"></a><span class="lineno">  279</span>&#160;  {</div><div class="line"><a name="l00280"></a><span class="lineno">  280</span>&#160;    <a class="code" href="classTemporaryDirectoryTest.html#a8c276b7f4a8ac1d5ca5d575d56fbea12">SSLTemporaryDirectoryTest::SetUp</a>();</div><div class="line"><a name="l00281"></a><span class="lineno">  281</span>&#160;    generate_keys_and_certs();</div><di
 v class="line"><a name="l00282"></a><span class="lineno">  282</span>&#160;  }</div><div class="line"><a name="l00283"></a><span class="lineno">  283</span>&#160;</div><div class="line"><a name="l00292"></a><span class="lineno">  292</span>&#160;  <a class="code" href="classTry.html">Try&lt;process::network::inet::Socket&gt;</a> setup_server(</div><div class="line"><a name="l00293"></a><span class="lineno">  293</span>&#160;      <span class="keyword">const</span> std::map&lt;std::string, std::string&gt;&amp; <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>&#160;  {</div><div class="line"><a name="l00295"></a><span class="lineno">  295</span>&#160;    set_environment_variables(environment);</div><div class="line"><a name="l00296"></a><span class="lineno">  296</span>&#160;</div><div class="line"><a name="l00297"></a><span class="lineno">  29
 7</span>&#160;    <span class="keyword">const</span> <a class="code" href="classTry.html">Try&lt;process::network::inet::Socket&gt;</a> <a class="code" href="namespacecgroups.html#a2ecc89636706df947027a4c3c2100fbe">create</a> =</div><div class="line"><a name="l00298"></a><span class="lineno">  298</span>&#160;      <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>&#160;          process::network::internal::SocketImpl::Kind::SSL);</div><div class="line"><a name="l00300"></a><span class="lineno">  300</span>&#160;</div><div class="line"><a name="l00301"></a><span class="lineno">  301</span>&#160;    <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>&#1
 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>&#160;    }</div><div class="line"><a name="l00304"></a><span class="lineno">  304</span>&#160;</div><div class="line"><a name="l00305"></a><span class="lineno">  305</span>&#160;    <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>&#160;</div><div class="line"><a name="l00307"></a><span class="lineno">  307</span>&#160;    <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>&#160;    <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>&#160;    <a class="code" href="classTry.html">Try&lt;process::network::inet::Address&gt;</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>&#160;      server.bind(</div><div class="line"><a name="l00311"></a><span class="lineno">  311</span>&#160;          <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>&#160;</div><div class="line"><a name="l00313"></a><span class=
 "lineno">  313</span>&#160;    <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>&#160;      <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>&#160;    }</div><div class="line"><a name="l00316"></a><span class="lineno">  316</span>&#160;</div><div class="line"><a name="l00317"></a><span class="lineno">  317</span>&#160;    <span class="keyword">const</span> <a class="code" href="classTry.html">Try&lt;Nothing&gt;</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>&#160;    <span class="keywordflow">if</span> (listen.isError()) {</div><div class="line"><a name="l00319"></a><span class="lineno">  319</span>&#160;      <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>&#160;    }</div><div class="line"><a name="l00321"></a><span class="lineno">  321</span>&#160;</div><div class="line"><a name="l00322"></a><span class="lineno">  322</span>&#160;    <span class="keywordflow">return</span> server;</div><div class="line"><a name="l00323"></a><span class="lineno">  323</span>&#160;  }</div><div class="line"><a name="l00324"></a><span class="lineno">  324</span>&#160;</div><div class="line"><a name="l00339"></a><span class="lineno">  339</span>&#160;  <a class="code" href="classTry.html">Try&lt;process::Subprocess&gt;</a> l
 aunch_client(</div><div class="line"><a name="l00340"></a><span class="lineno">  340</span>&#160;      <span class="keyword">const</span> std::map&lt;std::string, std::string&gt;&amp; environment,</div><div class="line"><a name="l00341"></a><span class="lineno">  341</span>&#160;      <span class="keyword">const</span> <a class="code" href="classprocess_1_1network_1_1internal_1_1Socket.html">process::network::inet::Socket</a>&amp; server,</div><div class="line"><a name="l00342"></a><span class="lineno">  342</span>&#160;      <span class="keywordtype">bool</span> use_ssl_socket)</div><div class="line"><a name="l00343"></a><span class="lineno">  343</span>&#160;  {</div><div class="line"><a name="l00344"></a><span class="lineno">  344</span>&#160;    <span class="keyword">const</span> <a class="code" href="classTry.html">Try&lt;process::network::inet::Address&gt;</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>&#160;    <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>&#160;      <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>&#160;    }</div><div class="line"><a name="l00348"></a><span class="lineno">  348</span>&#160;</div><div class="line"><a name="l00349"></a><span class="lineno">  349</span>&#160;    <span class="comment">// Set up arguments to be passed to the &#39;client-ssl&#39; binary.</span></div><div class="line"><a name="
 l00350"></a><span class="lineno">  350</span>&#160;    <span class="keyword">const</span> std::vector&lt;std::string&gt; argv = {</div><div class="line"><a name="l00351"></a><span class="lineno">  351</span>&#160;      <span class="stringliteral">&quot;ssl-client&quot;</span>,</div><div class="line"><a name="l00352"></a><span class="lineno">  352</span>&#160;      <span class="stringliteral">&quot;--use_ssl=&quot;</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>&#160;      <span class="stringliteral">&quot;--server=&quot;</span> + <a class="code" href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(address-&gt;<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>&#160;      <span class="s
 tringliteral">&quot;--port=&quot;</span> + <a class="code" href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(address-&gt;<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>&#160;      <span class="stringliteral">&quot;--data=&quot;</span> + data};</div><div class="line"><a name="l00356"></a><span class="lineno">  356</span>&#160;</div><div class="line"><a name="l00357"></a><span class="lineno">  357</span>&#160;    <a class="code" href="classResult.html">Result&lt;std::string&gt;</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>&#160;    <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>&#160;      <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">&quot;Could not establish build directory path&quot;</span>);</div><div class="line"><a name="l00360"></a><span class="lineno">  360</span>&#160;    }</div><div class="line"><a name="l00361"></a><span class="lineno">  361</span>&#160;</div><div class="line"><a name="l00362"></a><span class="lineno">  362</span>&#160;    <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>&#160;    <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>&#160;    <span class="comment">// certificate verification can su
 cceed.</span></div><div class="line"><a name="l00365"></a><span class="lineno">  365</span>&#160;    std::map&lt;std::string, std::string&gt; full_environment(environment);</div><div class="line"><a name="l00366"></a><span class="lineno">  366</span>&#160;    full_environment[<span class="stringliteral">&quot;LIBPROCESS_IP&quot;</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>&#160;</div><div class="line"><a name="l00368"></a><span class="lineno">  368</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="namespaceprocess.html#a2d7e0a283bc0c9eca8a8b0532e026269">process::subprocess</a>(</div><div class="line"><a name="l00369"></a><span class="lineno">  369</span>&#160;        <a class="code" href="namespacepath.html#aa86b16a2171ce
 c90bb3337930513ef0f">path::join</a>(path.<a class="code" href="classResult.html#aedf79f3b14dcda5791b84a64ada4d412">get</a>(), <span class="stringliteral">&quot;ssl-client&quot;</span>),</div><div class="line"><a name="l00370"></a><span class="lineno">  370</span>&#160;        argv,</div><div class="line"><a name="l00371"></a><span class="lineno">  371</span>&#160;        <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>&#160;        <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>&#160;        <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>&#160;        <span class="keyword">nullptr</span>,</div><div class="line"><a name="l00375"></a><span class="lineno">  375</span>&#160;        full_environment);</div><div class="line"><a name="l00376"></a><span class="lineno">  376</span>&#160;  }</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>&#160;  <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>&#160;</div><div class="line"><a name="l00380"></a><span class="lineno">  380</span>&#160;  <span class="keyword">const</span> std::string data;</div><div class="line"><
 a name="l00381"></a><span class="lineno">  381</span>&#160;};</div><div class="line"><a name="l00382"></a><span class="lineno">  382</span>&#160;</div><div class="line"><a name="l00383"></a><span class="lineno">  383</span>&#160;<span class="preprocessor">#endif // USE_SSL_SOCKET</span></div><div class="line"><a name="l00384"></a><span class="lineno">  384</span>&#160;</div><div class="line"><a name="l00385"></a><span class="lineno">  385</span>&#160;<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>
+<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>&#160;<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>&#160;<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>&#160;<span class="comment">// distributed with this work for additional information</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<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>&#160;<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>&#160;<span class="comment">// &quot;License&quot;); you may not use this file except in compliance</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<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>&#160;<
 span class="comment">// distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<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>&#160;<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>&#160;<span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;</div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="preprocessor">#ifndef __PROCESS_SSL_TEST_HPP__</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="preprocessor">#define __PROCESS_SSL_TEST_HP
 P__</span></div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="preprocessor">#ifdef USE_SSL_SOCKET</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span></div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="preprocessor">#include &lt;openssl/rsa.h&gt;</span></div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="preprocessor">#include &lt;openssl/bio.h&gt;</span></div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="preprocessor">#include &lt;openssl/x509.h&gt;</span></div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<span clas
 s="preprocessor">#include &lt;openssl/x509v3.h&gt;</span></div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;</div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="3rdparty_2libprocess_2include_2process_2io_8hpp.html">process/io.hpp</a>&gt;</span></div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="libprocess_2include_2process_2process_8hpp.html">process/process.hpp</a>&gt;</span></div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="libprocess_2include_2process_2socket_8hpp.html">process/socket.hpp</a>&gt;</span></div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="include_2process_2subproc
 ess_8hpp.html">process/subprocess.hpp</a>&gt;</span></div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="utilities_8hpp.html">process/ssl/utilities.hpp</a>&gt;</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>&#160;<span class="preprocessor">#include &lt;<a class="code" href="none_8hpp.html">stout/none.hpp</a>&gt;</span></div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="option_8hpp.html">stout/option.hpp</a>&gt;</span></div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="try_8hpp.html">stout/try.hpp</a>&gt;</
 span></div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="result_8hpp.html">stout/result.hpp</a>&gt;</span></div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;</div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="realpath_8hpp.html">stout/os/realpath.hpp</a>&gt;</span></div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;<span class="preprocessor">#endif // USE_SSL_SOCKET</span></div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;</div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="3rdparty_2stout_2include_2stout_2tests_2utils_8hpp.html">stout/tests/utils.hpp</a>&gt;</span></div><div class="line"><a name="l00044"></a><
 span class="lineno">   44</span>&#160;</div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;<span class="preprocessor">#ifdef USE_SSL_SOCKET</span></div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;<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>&#160;<span class="keyword">namespace </span>network {</div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;<span class="keyword">namespace </span>openssl {</div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;</div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;<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>&#160;<span class="comment">// prog
 ramatically change SSL flags during tests.</span></div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;<span class="keywordtype">void</span> reinitialize();</div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;</div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;} <span class="comment">// namespace openssl {</span></div><div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;} <span class="comment">// namespace network {</span></div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;} <span class="comment">// namespace process {</span></div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;<span class="preprocessor">#endif // USE_SSL_SOCKET</span></div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;</div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;<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>&#160;<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>&#160;<span class="comment">// to the `TemporaryDirectoryTest` under that condition.</span></div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;<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>&#160;<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>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;</div><div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;<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>&#160;{</div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;  <span class="keyword">static</span> <span class="keywordtype">void</span> TearDownTestCase()</div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;  
 {</div><div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;    <span class="comment">// Clear and reset any environment variables.</span></div><div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;    set_environment_variables({});</div><div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;  }</div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;</div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;<span class="keyword">protected</span>:</div><div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;  <a class="code" href="classPath.html">Path</a> key_path()</div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;  {</div><div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classPath.html">Path</a>(<a class="code" h
 ref="namespacepath.html#aa86b16a2171cec90bb3337930513ef0f">path::join</a>(<a class="code" href="namespaceos.html#a84a3290f051cdd50d88e0fd611645d4a">os::getcwd</a>(), <span class="stringliteral">&quot;key.pem&quot;</span>));</div><div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;  }</div><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;</div><div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;  <a class="code" href="classPath.html">Path</a> certificate_path()</div><div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;  {</div><div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;    <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 c
 lass="stringliteral">&quot;cert.pem&quot;</span>));</div><div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;  }</div><div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;</div><div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;  <a class="code" href="classPath.html">Path</a> scrap_key_path()</div><div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;  {</div><div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="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">&quot;scrap_key.pem&quot;</span>));</div><div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;  }</div><div class="line"><a name
 ="l00102"></a><span class="lineno">  102</span>&#160;</div><div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;  <a class="code" href="classPath.html">Path</a> scrap_certificate_path()</div><div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;  {</div><div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;    <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">&quot;scrap_cert.pem&quot;</span>));</div><div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;  }</div><div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;</div><div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;  <span class="keyword"
 >static</span> <span class="keywordtype">void</span> set_environment_variables(</div><div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;      <span class="keyword">const</span> std::map&lt;std::string, std::string&gt;&amp; <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>&#160;  {</div><div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;    <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>&#160;    <span class="comment">// ensuring a clean starting slate between tests.</span></div><div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;    <a class="code" href="namespaceos.html#a7471e14f4cbd7e23b5daa21e556f4eb5">os::unsetenv</a>(<span class="stringli
 teral">&quot;LIBPROCESS_SSL_ENABLED&quot;</span>);</div><div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;    <a class="code" href="namespaceos.html#a7471e14f4cbd7e23b5daa21e556f4eb5">os::unsetenv</a>(<span class="stringliteral">&quot;LIBPROCESS_SSL_SUPPORT_DOWNGRADE&quot;</span>);</div><div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;    <a class="code" href="namespaceos.html#a7471e14f4cbd7e23b5daa21e556f4eb5">os::unsetenv</a>(<span class="stringliteral">&quot;LIBPROCESS_SSL_CERT_FILE&quot;</span>);</div><div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;    <a class="code" href="namespaceos.html#a7471e14f4cbd7e23b5daa21e556f4eb5">os::unsetenv</a>(<span class="stringliteral">&quot;LIBPROCESS_SSL_KEY_FILE&quot;</span>);</div><div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;    <a class="code" href="namespaceos.html#a7471e14f4cbd7e23b5daa21e556f4eb5">os::unsetenv</a>(<span
  class="stringliteral">&quot;LIBPROCESS_SSL_VERIFY_CERT&quot;</span>);</div><div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;    <a class="code" href="namespaceos.html#a7471e14f4cbd7e23b5daa21e556f4eb5">os::unsetenv</a>(<span class="stringliteral">&quot;LIBPROCESS_SSL_REQUIRE_CERT&quot;</span>);</div><div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;    <a class="code" href="namespaceos.html#a7471e14f4cbd7e23b5daa21e556f4eb5">os::unsetenv</a>(<span class="stringliteral">&quot;LIBPROCESS_SSL_VERIFY_DEPTH&quot;</span>);</div><div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;    <a class="code" href="namespaceos.html#a7471e14f4cbd7e23b5daa21e556f4eb5">os::unsetenv</a>(<span class="stringliteral">&quot;LIBPROCESS_SSL_CA_DIR&quot;</span>);</div><div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;    <a class="code" href="namespaceos.html#a7471e14f4cbd7e23b5daa21e556f4eb5">os::un
 setenv</a>(<span class="stringliteral">&quot;LIBPROCESS_SSL_CA_FILE&quot;</span>);</div><div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;    <a class="code" href="namespaceos.html#a7471e14f4cbd7e23b5daa21e556f4eb5">os::unsetenv</a>(<span class="stringliteral">&quot;LIBPROCESS_SSL_CIPHERS&quot;</span>);</div><div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;    <a class="code" href="namespaceos.html#a7471e14f4cbd7e23b5daa21e556f4eb5">os::unsetenv</a>(<span class="stringliteral">&quot;LIBPROCESS_SSL_ENABLE_SSL_V3&quot;</span>);</div><div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;    <a class="code" href="namespaceos.html#a7471e14f4cbd7e23b5daa21e556f4eb5">os::unsetenv</a>(<span class="stringliteral">&quot;LIBPROCESS_SSL_ENABLE_TLS_V1_0&quot;</span>);</div><div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;    <a class="code" href="namespaceos.html#a7471e14f4cbd7e23b5daa21
 e556f4eb5">os::unsetenv</a>(<span class="stringliteral">&quot;LIBPROCESS_SSL_ENABLE_TLS_V1_1&quot;</span>);</div><div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;    <a class="code" href="namespaceos.html#a7471e14f4cbd7e23b5daa21e556f4eb5">os::unsetenv</a>(<span class="stringliteral">&quot;LIBPROCESS_SSL_ENABLE_TLS_V1_2&quot;</span>);</div><div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;</div><div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;    <span class="comment">// Copy the given map into the clean slate.</span></div><div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;    <a class="code" href="foreach_8hpp.html#a66900b166526abe66464d6597536b111">foreachpair</a> (</div><div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;        <span class="keyword">const</span> std::string&amp; <a class="code" href="namespaceos_1_1Shell.html#acfe16ef2b1146ad
 49a8651c0a457ce46">name</a>, <span class="keyword">const</span> std::string&amp; value, environment) {</div><div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;      <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>&#160;    }</div><div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;</div><div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;    <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>&#160;    process::network::openssl::reinitialize();</div><div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;  }</div><div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;</div><div class="line"><a name="l001
 52"></a><span class="lineno">  152</span>&#160;  <span class="keywordtype">void</span> generate_keys_and_certs() {</div><div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;    <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>&#160;    <span class="comment">// have a consolidated &#39;cleanup()&#39; function. This makes all the</span></div><div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;    <span class="comment">// &#39;EXIT()&#39; calls more readable and less error prone.</span></div><div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;    <a class="code" href="classResult.html">Result&lt;EVP_PKEY*&gt;</a> private_key = <a class="code" href="structNone.html">None</a>();</div><div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;    <a class="code" href="class
 Result.html">Result&lt;X509*&gt;</a> certificate = <a class="code" href="structNone.html">None</a>();</div><div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;    <a class="code" href="classResult.html">Result&lt;EVP_PKEY*&gt;</a> scrap_key = <a class="code" href="structNone.html">None</a>();</div><div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;    <a class="code" href="classResult.html">Result&lt;X509*&gt;</a> scrap_certificate = <a class="code" href="structNone.html">None</a>();</div><div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;</div><div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;    <span class="keyword">auto</span> <a class="code" href="namespacecgroups.html#a12d210f286e5fcf7993c0c90b9459606">cleanup</a> = [&amp;private_key, &amp;certificate, &amp;scrap_key, &amp;scrap_certificate](</div><div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#
 160;        <span class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;std::string&gt;</a> abort_message = <a class="code" href="structNone.html">None</a>()) {</div><div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;      <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>&#160;      <span class="keywordflow">if</span> (certificate.isSome()) { X509_free(certificate.get()); }</div><div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;      <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>&#160;      <span class="key
 wordflow">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>&#160;</div><div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;      <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>&#160;      <span class="comment">// is horribly and irrecoverably wrong.</span></div><div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;      <span class="keywordflow">if</span> (abort_message.isSome()) {</div><div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;        <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>&#160;      }</div><div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;    };</div><div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;</div><div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;    <span class="comment">// Generate the authority key.</span></div><div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;    private_key = process::network::openssl::generate_private_rsa_key();</div><div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;    <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>&#160;      <a class="code" href="namespacecgroups.html#a12d210f286e5fcf7993c0c90b9459606">cleanup
 </a>(<span class="stringliteral">&quot;Could not generate private key: &quot;</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>&#160;    }</div><div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;</div><div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;    <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>&#160;    <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>&#160;    <span class="comment">// hostname verification of the certificate will pass.</span></div><div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;    <a class="code" href="cl
 assTry.html">Try&lt;std::string&gt;</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>&#160;    <span class="keywordflow">if</span> (hostname.isError()) {</div><div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;      <a class="code" href="namespacecgroups.html#a12d210f286e5fcf7993c0c90b9459606">cleanup</a>(<span class="stringliteral">&quot;Could not determine hostname of libprocess: &quot;</span> +</div><div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;              hostname.error());</div><div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;    }</div><div class="line"><a name="l00189"
 ></a><span class="lineno">  189</span>&#160;</div><div class="line"><a name="l00190"></a><span class="lineno">  190</span>&#160;    <span class="comment">// Generate an authorized certificate.</span></div><div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160;    certificate = process::network::openssl::generate_x509(</div><div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;        private_key.<a class="code" href="classResult.html#aedf79f3b14dcda5791b84a64ada4d412">get</a>(),</div><div class="line"><a name="l00193"></a><span class="lineno">  193</span>&#160;        private_key.<a class="code" href="classResult.html#aedf79f3b14dcda5791b84a64ada4d412">get</a>(),</div><div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#160;        <a class="code" href="structNone.html">None</a>(),</div><div class="line"><a name="l00195"></a><span class="lineno">  195</span>&#160;        1,</div><div class="line"><a name="l00196"></
 a><span class="lineno">  196</span>&#160;        365,</div><div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;        hostname.get(),</div><div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160;        <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>&#160;</div><div class="line"><a name="l00200"></a><span class="lineno">  200</span>&#160;    <span class="keywordflow">if</span> (certificate.isError()) {</div><div class="line"><a name="l00201"></a><span class="lineno">  201</span>&#160;      <a class="code" href="namespacecgroups.html#a12d210f286e5fcf7993c0c90b9459606">cleanup</a>(<span class="stringliteral">&quot;Could not generate certificate: &quot;</span> + certificate.error());</div><div class="line"><a name="l00202"></a><span class="lineno">
   202</span>&#160;    }</div><div class="line"><a name="l00203"></a><span class="lineno">  203</span>&#160;</div><div class="line"><a name="l00204"></a><span class="lineno">  204</span>&#160;    <span class="comment">// Write the authority key to disk.</span></div><div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160;    <a class="code" href="classTry.html">Try&lt;Nothing&gt;</a> key_write =</div><div class="line"><a name="l00206"></a><span class="lineno">  206</span>&#160;      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>&#160;</div><div class="line"><a name="l00208"></a><span class="lineno">  208</span>&#160;    <span class="keywordflow">if</span> (key_write.isError()) {</div><div class="line"><a name="l00209"></a><span class="lineno">  209</span>&#160;      <a class="code" h
 ref="namespacecgroups.html#a12d210f286e5fcf7993c0c90b9459606">cleanup</a>(<span class="stringliteral">&quot;Could not write private key to disk: &quot;</span> + key_write.error());</div><div class="line"><a name="l00210"></a><span class="lineno">  210</span>&#160;    }</div><div class="line"><a name="l00211"></a><span class="lineno">  211</span>&#160;</div><div class="line"><a name="l00212"></a><span class="lineno">  212</span>&#160;    <span class="comment">// Write the authorized certificate to disk.</span></div><div class="line"><a name="l00213"></a><span class="lineno">  213</span>&#160;    <a class="code" href="classTry.html">Try&lt;Nothing&gt;</a> certificate_write =</div><div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160;      process::network::openssl::write_certificate_file(</div><div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160;          certificate.get(),</div><div class="line"><a name="l00216"></a><span class="lineno
 ">  216</span>&#160;          certificate_path());</div><div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160;</div><div class="line"><a name="l00218"></a><span class="lineno">  218</span>&#160;    <span class="keywordflow">if</span> (certificate_write.isError()) {</div><div class="line"><a name="l00219"></a><span class="lineno">  219</span>&#160;      <a class="code" href="namespacecgroups.html#a12d210f286e5fcf7993c0c90b9459606">cleanup</a>(<span class="stringliteral">&quot;Could not write certificate to disk: &quot;</span> +</div><div class="line"><a name="l00220"></a><span class="lineno">  220</span>&#160;              certificate_write.error());</div><div class="line"><a name="l00221"></a><span class="lineno">  221</span>&#160;    }</div><div class="line"><a name="l00222"></a><span class="lineno">  222</span>&#160;</div><div class="line"><a name="l00223"></a><span class="lineno">  223</span>&#160;    <span class="comment">// Generate a scrap key.</span></
 div><div class="line"><a name="l00224"></a><span class="lineno">  224</span>&#160;    scrap_key = process::network::openssl::generate_private_rsa_key();</div><div class="line"><a name="l00225"></a><span class="lineno">  225</span>&#160;    <span class="keywordflow">if</span> (scrap_key.isError()) {</div><div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;      <a class="code" href="namespacecgroups.html#a12d210f286e5fcf7993c0c90b9459606">cleanup</a>(<span class="stringliteral">&quot;Could not generate a scrap private key: &quot;</span> + scrap_key.error());</div><div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160;    }</div><div class="line"><a name="l00228"></a><span class="lineno">  228</span>&#160;</div><div class="line"><a name="l00229"></a><span class="lineno">  229</span>&#160;    <span class="comment">// Write the scrap key to disk.</span></div><div class="line"><a name="l00230"></a><span class="lineno">  230</span>&#160;   
  key_write = process::network::openssl::write_key_file(</div><div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160;        scrap_key.get(),</div><div class="line"><a name="l00232"></a><span class="lineno">  232</span>&#160;        scrap_key_path());</div><div class="line"><a name="l00233"></a><span class="lineno">  233</span>

<TRUNCATED>

[31/50] mesos-site git commit: Updated the website built from mesos SHA: 7c9c72d.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/include_2process_2subprocess_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/include_2process_2subprocess_8hpp_source.html b/content/api/latest/c++/include_2process_2subprocess_8hpp_source.html
new file mode 100644
index 0000000..5b4ac19
--- /dev/null
+++ b/content/api/latest/c++/include_2process_2subprocess_8hpp_source.html
@@ -0,0 +1,115 @@
+<!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: 3rdparty/libprocess/include/process/subprocess.hpp Source File</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&#160;Page</span></a></li>
+      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li class="current"><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="files.html"><span>File&#160;List</span></a></li>
+      <li><a href="globals.html"><span>File&#160;Members</span></a></li>
+    </ul>
+  </div>
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_8cab8f464681f7cc51cee77e79a434cd.html">3rdparty</a></li><li class="navelem"><a class="el" href="dir_043a76de98701f9bddf61b5e98f305ff.html">libprocess</a></li><li class="navelem"><a class="el" href="dir_eac18f7a64f6f8afbd1493ef4e09abdb.html">include</a></li><li class="navelem"><a class="el" href="dir_1894286df79cf582d947dbc4268b06cf.html">process</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">subprocess.hpp</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="include_2process_2subprocess_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>&#160;<span class="comment">// Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<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>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<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>&#160;<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>&#160;<span class="comment">// distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<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>&#160;<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>&#160;<span class="comment">// limitations under the License</span></div><div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#16
 0;</div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="preprocessor">#ifndef __PROCESS_SUBPROCESS_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="preprocessor">#define __PROCESS_SUBPROCESS_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;</div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="preprocessor">#include &lt;map&gt;</span></div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="preprocessor">#include &lt;memory&gt;</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span></div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;<span class="preprocessor">#include &lt;vector&gt;</span></div><div class="line"><a name="l00020"></a><
 span class="lineno">   20</span>&#160;</div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="future_8hpp.html">process/future.hpp</a>&gt;</span></div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="3rdparty_2stout_2include_2stout_2flags_8hpp.html">stout/flags.hpp</a>&gt;</span></div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="lambda_8hpp.html">stout/lambda.hpp</a>&gt;</span></div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="none_8hpp.html">stout/none.hpp</a>&gt;</span></div><div class="line"><a name="l00026"></a><span class="lineno">
    26</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="option_8hpp.html">stout/option.hpp</a>&gt;</span></div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="try_8hpp.html">stout/try.hpp</a>&gt;</span></div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;</div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="shell_8hpp.html">stout/os/shell.hpp</a>&gt;</span></div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="int__fd_8hpp.html">stout/os/int_fd.hpp</a>&gt;</span></div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;</div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;</div><div class="line"><a name=
 "l00033"></a><span class="lineno">   33</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceprocess.html">process</a> {</div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;</div><div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="classprocess_1_1Subprocess.html">   43</a></span>&#160;<span class="keyword">class </span><a class="code" href="classprocess_1_1Subprocess.html">Subprocess</a></div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;{</div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;  <span class="comment">// Forward declarations.</span></div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;  <span class="keyword">struct </span><a class="code" href="structprocess_1_1Subprocess_1
 _1ParentHook.html">ParentHook</a>;</div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;  <span class="keyword">class </span><a class="code" href="classprocess_1_1Subprocess_1_1ChildHook.html">ChildHook</a>;</div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;</div><div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="classprocess_1_1Subprocess_1_1IO.html">   61</a></span>&#160;  <span class="keyword">class </span><a class="code" href="classprocess_1_1Subprocess_1_1IO.html">IO</a></div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;  {</div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;  <span class="keyword">public</span>:</div><div class="line"><a name="l00073"></a><span class="lineno"><a class="line" href="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors.html">   73</a></span>&#160;    <span class="keyword">struct </span>
 <a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors.html">InputFileDescriptors</a></div><div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;    {</div><div class="line"><a name="l00075"></a><span class="lineno"><a class="line" href="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors.html#a0a3f315345ef7b7ee6f3f1d4d337854d">   75</a></span>&#160;      <a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> <a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors.html#a0a3f315345ef7b7ee6f3f1d4d337854d">read</a> = -1;</div><div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors.html#ab812da47364d793d9ec0471d3dc8c1bc">   76</a></span>&#160;      <a class="code" href="classOption.html">Option&lt;int_fd&gt;</a> <a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors.html#
 ab812da47364d793d9ec0471d3dc8c1bc">write</a> = <a class="code" href="structNone.html">None</a>();</div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;    };</div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;</div><div class="line"><a name="l00088"></a><span class="lineno"><a class="line" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html">   88</a></span>&#160;    <span class="keyword">struct </span><a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html">OutputFileDescriptors</a></div><div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;    {</div><div class="line"><a name="l00090"></a><span class="lineno"><a class="line" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html#ac4af678c631a700d4be4410a250e3bce">   90</a></span>&#160;      <a class="code" href="classOption.html">Option&lt;int_fd&gt;</a> <a class="code" href="structpr
 ocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors.html#a0a3f315345ef7b7ee6f3f1d4d337854d">read</a> = <a class="code" href="structNone.html">None</a>();</div><div class="line"><a name="l00091"></a><span class="lineno"><a class="line" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html#a5dabb8e3008efd61ce42478f260b54ac">   91</a></span>&#160;      <a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> <a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors.html#ab812da47364d793d9ec0471d3dc8c1bc">write</a> = -1;</div><div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;    };</div><div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;</div><div class="line"><a name="l00098"></a><span class="lineno"><a class="line" href="classprocess_1_1Subprocess_1_1IO.html#adb9433454d727de27b2440f729d19990">   98</a></span>&#160;    <span class="keyword">enum</span> <a class="code"
  href="classprocess_1_1Subprocess_1_1IO.html#adb9433454d727de27b2440f729d19990">FDType</a> {</div><div class="line"><a name="l00103"></a><span class="lineno"><a class="line" href="classprocess_1_1Subprocess_1_1IO.html#adb9433454d727de27b2440f729d19990af648d44b624da021da40a80190291380">  103</a></span>&#160;      <a class="code" href="classprocess_1_1Subprocess_1_1IO.html#adb9433454d727de27b2440f729d19990af648d44b624da021da40a80190291380">DUPLICATED</a>,</div><div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;</div><div class="line"><a name="l00110"></a><span class="lineno"><a class="line" href="classprocess_1_1Subprocess_1_1IO.html#adb9433454d727de27b2440f729d19990ad3f73761156a6e75873cf903a0d62994">  110</a></span>&#160;      <a class="code" href="classprocess_1_1Subprocess_1_1IO.html#adb9433454d727de27b2440f729d19990ad3f73761156a6e75873cf903a0d62994">OWNED</a></div><div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;    };</div><
 div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;</div><div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;</div><div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;  <span class="keyword">private</span>:</div><div class="line"><a name="l00115"></a><span class="lineno"><a class="line" href="classprocess_1_1Subprocess_1_1IO.html#a3d12fd22e5deb76d3529ce4e6d9179dc">  115</a></span>&#160;    <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classprocess_1_1Subprocess.html">Subprocess</a>;</div><div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;</div><div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;    <span class="keyword">friend</span> <a class="code" href="classTry.html">Try&lt;Subprocess&gt;</a> <a class="code" href="classprocess_1_1Subprocess_1_1IO.html#afa34ca045f618704548708d7c5e5d82a">subprocess</a>(</di
 v><div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;        <span class="keyword">const</span> std::string&amp; <a class="code" href="namespacepath.html">path</a>,</div><div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;        std::vector&lt;std::string&gt; argv,</div><div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;        <span class="keyword">const</span> <a class="code" href="classprocess_1_1Subprocess_1_1IO.html">Subprocess::IO</a>&amp; <a class="code" href="classprocess_1_1Subprocess.html#a60535054108d572796c25011c2aa379d">in</a>,</div><div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;        <span class="keyword">const</span> <a class="code" href="classprocess_1_1Subprocess_1_1IO.html">Subprocess::IO</a>&amp; <a class="code" href="classprocess_1_1Subprocess.html#a1c1a81931671b15c0c4b310bc49dea56">out</a>,</div><div class="line"><a name="l00122"></a><span class="lin
 eno">  122</span>&#160;        <span class="keyword">const</span> <a class="code" href="classprocess_1_1Subprocess_1_1IO.html">Subprocess::IO</a>&amp; <a class="code" href="classprocess_1_1Subprocess.html#a98180558f1427a64a03cf3f656310bc4">err</a>,</div><div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;        <span class="keyword">const</span> <a class="code" href="classflags_1_1FlagsBase.html">flags::FlagsBase</a>* <a class="code" href="namespaceflags.html">flags</a>,</div><div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;        <span class="keyword">const</span> <a class="code" href="classOption.html">Option</a>&lt;std::map&lt;std::string, std::string&gt;&gt;&amp; <a class="code" href="namespacemesos_1_1internal_1_1tests.html#a1396c5e3b0a179220de2792d74770ec2">environment</a>,</div><div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;        <span class="keyword">const</span> <a class="code" href="c
 lassOption.html">Option</a>&lt;lambda::function&lt;</div><div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;            <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a>(<span class="keyword">const</span> lambda::function&lt;<span class="keywordtype">int</span>()&gt;&amp;)&gt;&gt;&amp; <a class="code" href="namespacens.html#a98bf4d9e11d546326250997a6493f835">clone</a>,</div><div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;        <span class="keyword">const</span> std::vector&lt;Subprocess::ParentHook&gt;&amp; parent_hooks,</div><div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;        <span class="keyword">const</span> std::vector&lt;Subprocess::ChildHook&gt;&amp; child_hooks,</div><div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;        <span class="keyword">const</span> std::vector&lt;int_fd&gt;&amp; w
 hitelist_fds);</div><div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;</div><div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;    <a class="code" href="classprocess_1_1Subprocess_1_1IO.html">IO</a>(<span class="keyword">const</span> lambda::function&lt;<a class="code" href="classTry.html">Try&lt;InputFileDescriptors&gt;</a>()&gt;&amp; _input,</div><div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;       <span class="keyword">const</span> lambda::function&lt;<a class="code" href="classTry.html">Try&lt;OutputFileDescriptors&gt;</a>()&gt;&amp; _output)</div><div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;      : input(_input),</div><div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;        output(_output) {}</div><div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;</div><div class="line"><a name="l00139"></a><span class="
 lineno">  139</span>&#160;    lambda::function&lt;Try&lt;InputFileDescriptors&gt;()&gt; input;</div><div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;</div><div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;    lambda::function&lt;Try&lt;OutputFileDescriptors&gt;()&gt; output;</div><div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;  };</div><div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;</div><div class="line"><a name="l00152"></a><span class="lineno"><a class="line" href="structprocess_1_1Subprocess_1_1ParentHook.html">  152</a></span>&#160;  <span class="keyword">struct </span><a class="code" href="structprocess_1_1Subprocess_1_1ParentHook.html">ParentHook</a></div><div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;  {</div><div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;    <a class="code" href="structprocess_1_
 1Subprocess_1_1ParentHook.html">ParentHook</a>(<span class="keyword">const</span> lambda::function&lt;<a class="code" href="classTry.html">Try&lt;Nothing&gt;</a>(<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a>)&gt;&amp; _parent_setup);</div><div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;</div><div class="line"><a name="l00163"></a><span class="lineno"><a class="line" href="structprocess_1_1Subprocess_1_1ParentHook.html#aaf9ff141314d619cd65cd8ec9320fb7d">  163</a></span>&#160;    <span class="keyword">const</span> lambda::function&lt;Try&lt;Nothing&gt;(<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a>)&gt; parent_setup;</div><div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;</div><div class="line"><a name="l00165"></a><span class="lineno"><a class="line" href="structprocess_1_1Subprocess_1_
 1ParentHook.html#a3d12fd22e5deb76d3529ce4e6d9179dc">  165</a></span>&#160;    <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classprocess_1_1Subprocess.html">Subprocess</a>;</div><div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;</div><div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;<span class="preprocessor">#ifdef __WINDOWS__</span></div><div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;</div><div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;    <span class="keyword">static</span> <a class="code" href="structprocess_1_1Subprocess_1_1ParentHook.html">ParentHook</a> CREATE_JOB();</div><div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;<span class="preprocessor">#endif // __WINDOWS__</span></div><div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;  };</div><div class="line"><
 a name="l00179"></a><span class="lineno">  179</span>&#160;</div><div class="line"><a name="l00190"></a><span class="lineno"><a class="line" href="classprocess_1_1Subprocess_1_1ChildHook.html">  190</a></span>&#160;  <span class="keyword">class </span><a class="code" href="classprocess_1_1Subprocess_1_1ChildHook.html">ChildHook</a></div><div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160;  {</div><div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;  <span class="keyword">public</span>:</div><div class="line"><a name="l00196"></a><span class="lineno">  196</span>&#160;    <span class="keyword">static</span> <a class="code" href="classprocess_1_1Subprocess_1_1ChildHook.html">ChildHook</a> CHDIR(<span class="keyword">const</span> std::string&amp; working_directory);</div><div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;</div><div class="line"><a name="l00201"></a><span class="lineno">  201</span>&#160;    
 <span class="keyword">static</span> <a class="code" href="classprocess_1_1Subprocess_1_1ChildHook.html">ChildHook</a> SETSID();</div><div class="line"><a name="l00202"></a><span class="lineno">  202</span>&#160;</div><div class="line"><a name="l00203"></a><span class="lineno">  203</span>&#160;<span class="preprocessor">#ifndef __WINDOWS__</span></div><div class="line"><a name="l00204"></a><span class="lineno">  204</span>&#160;</div><div class="line"><a name="l00207"></a><span class="lineno">  207</span>&#160;    <span class="keyword">static</span> <a class="code" href="classprocess_1_1Subprocess_1_1ChildHook.html">ChildHook</a> DUP2(<span class="keywordtype">int</span> oldFd, <span class="keywordtype">int</span> newFd);</div><div class="line"><a name="l00208"></a><span class="lineno">  208</span>&#160;</div><div class="line"><a name="l00213"></a><span class="lineno">  213</span>&#160;    <span class="keyword">static</span> <a class="code" href="classprocess_1_1Subprocess_1_1ChildH
 ook.html">ChildHook</a> UNSET_CLOEXEC(<span class="keywordtype">int</span> fd);</div><div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160;<span class="preprocessor">#endif // __WINDOWS__</span></div><div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160;</div><div class="line"><a name="l00224"></a><span class="lineno">  224</span>&#160;    <span class="keyword">static</span> <a class="code" href="classprocess_1_1Subprocess_1_1ChildHook.html">ChildHook</a> SUPERVISOR();</div><div class="line"><a name="l00225"></a><span class="lineno">  225</span>&#160;</div><div class="line"><a name="l00226"></a><span class="lineno"><a class="line" href="classprocess_1_1Subprocess_1_1ChildHook.html#ae9a996c6b3aa1113709a3d5ceba37f2c">  226</a></span>&#160;    <a class="code" href="classTry.html">Try&lt;Nothing&gt;</a> <a class="code" href="classprocess_1_1Subprocess_1_1ChildHook.html#ae9a996c6b3aa1113709a3d5ceba37f2c">operator()</a>()<span class="keyword
 "> const </span>{ <span class="keywordflow">return</span> child_setup(); }</div><div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160;</div><div class="line"><a name="l00228"></a><span class="lineno">  228</span>&#160;  <span class="keyword">private</span>:</div><div class="line"><a name="l00229"></a><span class="lineno">  229</span>&#160;    <a class="code" href="classprocess_1_1Subprocess_1_1ChildHook.html">ChildHook</a>(<span class="keyword">const</span> lambda::function&lt;<a class="code" href="classTry.html">Try&lt;Nothing&gt;</a>()&gt;&amp; _child_setup);</div><div class="line"><a name="l00230"></a><span class="lineno">  230</span>&#160;</div><div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160;    <span class="keyword">const</span> lambda::function&lt;Try&lt;Nothing&gt;()&gt; child_setup;</div><div class="line"><a name="l00232"></a><span class="lineno">  232</span>&#160;  };</div><div class="line"><a name="l00233"></a><span cla
 ss="lineno">  233</span>&#160;</div><div class="line"><a name="l00234"></a><span class="lineno">  234</span>&#160;  <span class="comment">// Some syntactic sugar to create an IO::PIPE redirector.</span></div><div class="line"><a name="l00235"></a><span class="lineno">  235</span>&#160;  <span class="keyword">static</span> <a class="code" href="classprocess_1_1Subprocess_1_1IO.html">IO</a> <a class="code" href="classprocess_1_1Subprocess.html#a6af5024bd1932707893908fceb86ddad">PIPE</a>();</div><div class="line"><a name="l00236"></a><span class="lineno">  236</span>&#160;  <span class="keyword">static</span> <a class="code" href="classprocess_1_1Subprocess_1_1IO.html">IO</a> <a class="code" href="classprocess_1_1Subprocess.html#a54793e9c516257d68776f63f0872c3c7">PATH</a>(<span class="keyword">const</span> std::string&amp; path);</div><div class="line"><a name="l00237"></a><span class="lineno">  237</span>&#160;  <span class="keyword">static</span> <a class="code" href="classprocess_1_
 1Subprocess_1_1IO.html">IO</a> <a class="code" href="classprocess_1_1Subprocess.html#aaa6e1b76ef54ed6db34d595811122ce0">FD</a>(<a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> fd, <a class="code" href="classprocess_1_1Subprocess_1_1IO.html#adb9433454d727de27b2440f729d19990">IO::FDType</a> <a class="code" href="namespacemesos_1_1internal_1_1fs.html#a2343e2642db514496ba8380776487fba">type</a> = <a class="code" href="classprocess_1_1Subprocess_1_1IO.html#adb9433454d727de27b2440f729d19990af648d44b624da021da40a80190291380">IO::DUPLICATED</a>);</div><div class="line"><a name="l00238"></a><span class="lineno">  238</span>&#160;</div><div class="line"><a name="l00242"></a><span class="lineno"><a class="line" href="classprocess_1_1Subprocess.html#ac3af3805968fc8b53e6c5a2a3cbdad2b">  242</a></span>&#160;  <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a> <a class="code" href="classprocess_
 1_1Subprocess.html#ac3af3805968fc8b53e6c5a2a3cbdad2b">pid</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> data-&gt;pid; }</div><div class="line"><a name="l00243"></a><span class="lineno">  243</span>&#160;</div><div class="line"><a name="l00249"></a><span class="lineno"><a class="line" href="classprocess_1_1Subprocess.html#a60535054108d572796c25011c2aa379d">  249</a></span>&#160;  <a class="code" href="classOption.html">Option&lt;int_fd&gt;</a> <a class="code" href="classprocess_1_1Subprocess.html#a60535054108d572796c25011c2aa379d">in</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00250"></a><span class="lineno">  250</span>&#160;<span class="keyword">  </span>{</div><div class="line"><a name="l00251"></a><span class="lineno">  251</span>&#160;    <span class="keywordflow">return</span> data-&gt;in;</div><div class="line"><a name="l00252"></a><span class="lineno">  252</span>&#160;  }</div><div class="line"><a name="l0025
 3"></a><span class="lineno">  253</span>&#160;</div><div class="line"><a name="l00259"></a><span class="lineno"><a class="line" href="classprocess_1_1Subprocess.html#a1c1a81931671b15c0c4b310bc49dea56">  259</a></span>&#160;  <a class="code" href="classOption.html">Option&lt;int_fd&gt;</a> <a class="code" href="classprocess_1_1Subprocess.html#a1c1a81931671b15c0c4b310bc49dea56">out</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00260"></a><span class="lineno">  260</span>&#160;<span class="keyword">  </span>{</div><div class="line"><a name="l00261"></a><span class="lineno">  261</span>&#160;    <span class="keywordflow">return</span> data-&gt;out;</div><div class="line"><a name="l00262"></a><span class="lineno">  262</span>&#160;  }</div><div class="line"><a name="l00263"></a><span class="lineno">  263</span>&#160;</div><div class="line"><a name="l00269"></a><span class="lineno"><a class="line" href="classprocess_1_1Subprocess.html#a98180558f1427a64a03cf3f65
 6310bc4">  269</a></span>&#160;  <a class="code" href="classOption.html">Option&lt;int_fd&gt;</a> <a class="code" href="classprocess_1_1Subprocess.html#a98180558f1427a64a03cf3f656310bc4">err</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00270"></a><span class="lineno">  270</span>&#160;<span class="keyword">  </span>{</div><div class="line"><a name="l00271"></a><span class="lineno">  271</span>&#160;    <span class="keywordflow">return</span> data-&gt;err;</div><div class="line"><a name="l00272"></a><span class="lineno">  272</span>&#160;  }</div><div class="line"><a name="l00273"></a><span class="lineno">  273</span>&#160;</div><div class="line"><a name="l00295"></a><span class="lineno"><a class="line" href="classprocess_1_1Subprocess.html#a3946c31d16c0625ea554d5216cd4fa3b">  295</a></span>&#160;  <a class="code" href="classprocess_1_1Future.html">Future&lt;Option&lt;int&gt;</a>&gt; <a class="code" href="classprocess_1_1Subprocess.html#a3946c31d16c0625ea
 554d5216cd4fa3b">status</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> data-&gt;status; }</div><div class="line"><a name="l00296"></a><span class="lineno">  296</span>&#160;</div><div class="line"><a name="l00297"></a><span class="lineno">  297</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00298"></a><span class="lineno">  298</span>&#160;  <span class="keyword">friend</span> <a class="code" href="classTry.html">Try&lt;Subprocess&gt;</a> <a class="code" href="classprocess_1_1Subprocess_1_1IO.html#afa34ca045f618704548708d7c5e5d82a">subprocess</a>(</div><div class="line"><a name="l00299"></a><span class="lineno">  299</span>&#160;      <span class="keyword">const</span> std::string&amp; path,</div><div class="line"><a name="l00300"></a><span class="lineno">  300</span>&#160;      std::vector&lt;std::string&gt; argv,</div><div class="line"><a name="l00301"></a><span class="lineno">  301</span>&#160;      <span cla
 ss="keyword">const</span> <a class="code" href="classprocess_1_1Subprocess_1_1IO.html">Subprocess::IO</a>&amp; in,</div><div class="line"><a name="l00302"></a><span class="lineno">  302</span>&#160;      <span class="keyword">const</span> <a class="code" href="classprocess_1_1Subprocess_1_1IO.html">Subprocess::IO</a>&amp; out,</div><div class="line"><a name="l00303"></a><span class="lineno">  303</span>&#160;      <span class="keyword">const</span> <a class="code" href="classprocess_1_1Subprocess_1_1IO.html">Subprocess::IO</a>&amp; err,</div><div class="line"><a name="l00304"></a><span class="lineno">  304</span>&#160;      <span class="keyword">const</span> <a class="code" href="classflags_1_1FlagsBase.html">flags::FlagsBase</a>* flags,</div><div class="line"><a name="l00305"></a><span class="lineno">  305</span>&#160;      <span class="keyword">const</span> <a class="code" href="classOption.html">Option</a>&lt;std::map&lt;std::string, std::string&gt;&gt;&amp; <a class="code" href=
 "namespacemesos_1_1internal_1_1tests.html#a1396c5e3b0a179220de2792d74770ec2">environment</a>,</div><div class="line"><a name="l00306"></a><span class="lineno">  306</span>&#160;      <span class="keyword">const</span> <a class="code" href="classOption.html">Option</a>&lt;lambda::function&lt;</div><div class="line"><a name="l00307"></a><span class="lineno">  307</span>&#160;          <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a>(<span class="keyword">const</span> lambda::function&lt;<span class="keywordtype">int</span>()&gt;&amp;)&gt;&gt;&amp; <a class="code" href="namespacens.html#a98bf4d9e11d546326250997a6493f835">clone</a>,</div><div class="line"><a name="l00308"></a><span class="lineno">  308</span>&#160;      <span class="keyword">const</span> std::vector&lt;Subprocess::ParentHook&gt;&amp; parent_hooks,</div><div class="line"><a name="l00309"></a><span class="lineno">  309</span>&#160;      <span class="keyw
 ord">const</span> std::vector&lt;Subprocess::ChildHook&gt;&amp; child_hooks,</div><div class="line"><a name="l00310"></a><span class="lineno">  310</span>&#160;      <span class="keyword">const</span> std::vector&lt;int_fd&gt;&amp; whitelist_fds);</div><div class="line"><a name="l00311"></a><span class="lineno">  311</span>&#160;</div><div class="line"><a name="l00312"></a><span class="lineno">  312</span>&#160;  <span class="keyword">struct </span>Data</div><div class="line"><a name="l00313"></a><span class="lineno">  313</span>&#160;  {</div><div class="line"><a name="l00314"></a><span class="lineno">  314</span>&#160;    ~Data()</div><div class="line"><a name="l00315"></a><span class="lineno">  315</span>&#160;    {</div><div class="line"><a name="l00316"></a><span class="lineno">  316</span>&#160;      <span class="keywordflow">if</span> (in.isSome()) { <a class="code" href="namespaceos.html#a8df77ec6d6b8d32d9b287a41bc74cfdc">os::close</a>(in.get()); }</div><div class="line"><a 
 name="l00317"></a><span class="lineno">  317</span>&#160;      <span class="keywordflow">if</span> (out.isSome()) { <a class="code" href="namespaceos.html#a8df77ec6d6b8d32d9b287a41bc74cfdc">os::close</a>(out.get()); }</div><div class="line"><a name="l00318"></a><span class="lineno">  318</span>&#160;      <span class="keywordflow">if</span> (err.isSome()) { <a class="code" href="namespaceos.html#a8df77ec6d6b8d32d9b287a41bc74cfdc">os::close</a>(err.get()); }</div><div class="line"><a name="l00319"></a><span class="lineno">  319</span>&#160;    }</div><div class="line"><a name="l00320"></a><span class="lineno">  320</span>&#160;</div><div class="line"><a name="l00321"></a><span class="lineno">  321</span>&#160;    <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a> <a class="code" href="classprocess_1_1Subprocess.html#ac3af3805968fc8b53e6c5a2a3cbdad2b">pid</a>;</div><div class="line"><a name="l00322"></a><span class="li
 neno">  322</span>&#160;</div><div class="line"><a name="l00323"></a><span class="lineno">  323</span>&#160;<span class="preprocessor">#ifdef __WINDOWS__</span></div><div class="line"><a name="l00324"></a><span class="lineno">  324</span>&#160;    <a class="code" href="classOption.html">Option&lt;::internal::windows::ProcessData&gt;</a> process_data;</div><div class="line"><a name="l00325"></a><span class="lineno">  325</span>&#160;<span class="preprocessor">#endif // __WINDOWS__</span></div><div class="line"><a name="l00326"></a><span class="lineno">  326</span>&#160;</div><div class="line"><a name="l00327"></a><span class="lineno">  327</span>&#160;    <span class="comment">// The parent side of the pipe for stdin/stdout/stderr. If the</span></div><div class="line"><a name="l00328"></a><span class="lineno">  328</span>&#160;    <span class="comment">// IO mode is not a pipe, `None` will be stored.</span></div><div class="line"><a name="l00329"></a><span class="lineno">  329</span>
 &#160;    <span class="comment">// NOTE: stdin, stdout, stderr are macros on some systems, hence</span></div><div class="line"><a name="l00330"></a><span class="lineno">  330</span>&#160;    <span class="comment">// these names instead.</span></div><div class="line"><a name="l00331"></a><span class="lineno">  331</span>&#160;    <a class="code" href="classOption.html">Option&lt;int_fd&gt;</a> <a class="code" href="classprocess_1_1Subprocess.html#a60535054108d572796c25011c2aa379d">in</a>;</div><div class="line"><a name="l00332"></a><span class="lineno">  332</span>&#160;    <a class="code" href="classOption.html">Option&lt;int_fd&gt;</a> <a class="code" href="classprocess_1_1Subprocess.html#a1c1a81931671b15c0c4b310bc49dea56">out</a>;</div><div class="line"><a name="l00333"></a><span class="lineno">  333</span>&#160;    <a class="code" href="classOption.html">Option&lt;int_fd&gt;</a> <a class="code" href="classprocess_1_1Subprocess.html#a98180558f1427a64a03cf3f656310bc4">err</a>;</div
 ><div class="line"><a name="l00334"></a><span class="lineno">  334</span>&#160;</div><div class="line"><a name="l00335"></a><span class="lineno">  335</span>&#160;    <a class="code" href="classprocess_1_1Future.html">Future&lt;Option&lt;int&gt;</a>&gt; <a class="code" href="classprocess_1_1Subprocess.html#a3946c31d16c0625ea554d5216cd4fa3b">status</a>;</div><div class="line"><a name="l00336"></a><span class="lineno">  336</span>&#160;  };</div><div class="line"><a name="l00337"></a><span class="lineno">  337</span>&#160;</div><div class="line"><a name="l00338"></a><span class="lineno">  338</span>&#160;  <a class="code" href="classprocess_1_1Subprocess_1_1IO.html#a3d12fd22e5deb76d3529ce4e6d9179dc">Subprocess</a>() : data(<span class="keyword">new</span> Data()) {}</div><div class="line"><a name="l00339"></a><span class="lineno">  339</span>&#160;</div><div class="line"><a name="l00340"></a><span class="lineno">  340</span>&#160;  std::shared_ptr&lt;Data&gt; data;</div><div class="li
 ne"><a name="l00341"></a><span class="lineno">  341</span>&#160;};</div><div class="line"><a name="l00342"></a><span class="lineno">  342</span>&#160;</div><div class="line"><a name="l00343"></a><span class="lineno"><a class="line" href="namespaceprocess.html#afc6611c4913642642277b44447a16e55">  343</a></span>&#160;<span class="keyword">using</span> <a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors.html">InputFileDescriptors</a> = <a class="code" href="namespaceprocess.html#afc6611c4913642642277b44447a16e55">Subprocess::IO::InputFileDescriptors</a>;</div><div class="line"><a name="l00344"></a><span class="lineno"><a class="line" href="namespaceprocess.html#a882829822afa4f33b90aafc9c4ffa9af">  344</a></span>&#160;<span class="keyword">using</span> <a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html">OutputFileDescriptors</a> = <a class="code" href="namespaceprocess.html#a882829822afa4f33b90aafc9c4ffa9af">Subprocess::IO::
 OutputFileDescriptors</a>;</div><div class="line"><a name="l00345"></a><span class="lineno">  345</span>&#160;</div><div class="line"><a name="l00369"></a><span class="lineno">  369</span>&#160;<span class="comment">// TODO(jmlvanre): Consider removing default argument for</span></div><div class="line"><a name="l00370"></a><span class="lineno">  370</span>&#160;<span class="comment">// `parent_hooks` to force the caller to think about setting them.</span></div><div class="line"><a name="l00371"></a><span class="lineno">  371</span>&#160;<a class="code" href="classTry.html">Try&lt;Subprocess&gt;</a> <a class="code" href="classprocess_1_1Subprocess_1_1IO.html#afa34ca045f618704548708d7c5e5d82a">subprocess</a>(</div><div class="line"><a name="l00372"></a><span class="lineno">  372</span>&#160;    <span class="keyword">const</span> std::string&amp; path,</div><div class="line"><a name="l00373"></a><span class="lineno">  373</span>&#160;    std::vector&lt;std::string&gt; argv,</div><div c
 lass="line"><a name="l00374"></a><span class="lineno">  374</span>&#160;    <span class="keyword">const</span> <a class="code" href="classprocess_1_1Subprocess_1_1IO.html">Subprocess::IO</a>&amp; in = <a class="code" href="classprocess_1_1Subprocess.html#aaa6e1b76ef54ed6db34d595811122ce0">Subprocess::FD</a>(<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#afcf80a6d91178952d107ad00b165752b">STDIN_FILENO</a>),</div><div class="line"><a name="l00375"></a><span class="lineno">  375</span>&#160;    <span class="keyword">const</span> <a class="code" href="classprocess_1_1Subprocess_1_1IO.html">Subprocess::IO</a>&amp; out = <a class="code" href="classprocess_1_1Subprocess.html#aaa6e1b76ef54ed6db34d595811122ce0">Subprocess::FD</a>(<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#abd165ee6474b5b75bf075842fff13a04">STDOUT_FILENO</a>),</div><div class="line"><a name="l00376"></a><span class="lineno">  376</span>&#160;    <span class="keyword">con
 st</span> <a class="code" href="classprocess_1_1Subprocess_1_1IO.html">Subprocess::IO</a>&amp; err = <a class="code" href="classprocess_1_1Subprocess.html#aaa6e1b76ef54ed6db34d595811122ce0">Subprocess::FD</a>(<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ae2fe1725bb5e9823d089c46b9ed5266e">STDERR_FILENO</a>),</div><div class="line"><a name="l00377"></a><span class="lineno">  377</span>&#160;    <span class="keyword">const</span> <a class="code" href="classflags_1_1FlagsBase.html">flags::FlagsBase</a>* flags = <span class="keyword">nullptr</span>,</div><div class="line"><a name="l00378"></a><span class="lineno">  378</span>&#160;    <span class="keyword">const</span> <a class="code" href="classOption.html">Option</a>&lt;std::map&lt;std::string, std::string&gt;&gt;&amp; <a class="code" href="namespacemesos_1_1internal_1_1tests.html#a1396c5e3b0a179220de2792d74770ec2">environment</a> = <a class="code" href="structNone.html">None</a>(),</div><div class="line"><a
  name="l00379"></a><span class="lineno">  379</span>&#160;    <span class="keyword">const</span> <a class="code" href="classOption.html">Option</a>&lt;lambda::function&lt;</div><div class="line"><a name="l00380"></a><span class="lineno">  380</span>&#160;        <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a>(<span class="keyword">const</span> lambda::function&lt;<span class="keywordtype">int</span>()&gt;&amp;)&gt;&gt;&amp; <a class="code" href="namespacens.html#a98bf4d9e11d546326250997a6493f835">clone</a> = <a class="code" href="structNone.html">None</a>(),</div><div class="line"><a name="l00381"></a><span class="lineno">  381</span>&#160;    <span class="keyword">const</span> std::vector&lt;Subprocess::ParentHook&gt;&amp; parent_hooks = {},</div><div class="line"><a name="l00382"></a><span class="lineno">  382</span>&#160;    <span class="keyword">const</span> std::vector&lt;Subprocess::ChildHook&gt;&amp; child_
 hooks = {},</div><div class="line"><a name="l00383"></a><span class="lineno">  383</span>&#160;    <span class="keyword">const</span> std::vector&lt;int_fd&gt;&amp; whitelist_fds = {});</div><div class="line"><a name="l00384"></a><span class="lineno">  384</span>&#160;</div><div class="line"><a name="l00385"></a><span class="lineno">  385</span>&#160;</div><div class="line"><a name="l00408"></a><span class="lineno">  408</span>&#160;<span class="comment">// TODO(jmlvanre): Consider removing default argument for</span></div><div class="line"><a name="l00409"></a><span class="lineno">  409</span>&#160;<span class="comment">// `parent_hooks` to force the caller to think about setting them.</span></div><div class="line"><a name="l00410"></a><span class="lineno"><a class="line" href="namespaceprocess.html#a0a748c548ad3a094196c98f00f9674cf">  410</a></span>&#160;<span class="keyword">inline</span> <a class="code" href="classTry.html">Try&lt;Subprocess&gt;</a> <a class="code" href="classpr
 ocess_1_1Subprocess_1_1IO.html#afa34ca045f618704548708d7c5e5d82a">subprocess</a>(</div><div class="line"><a name="l00411"></a><span class="lineno">  411</span>&#160;    <span class="keyword">const</span> std::string&amp; command,</div><div class="line"><a name="l00412"></a><span class="lineno">  412</span>&#160;    <span class="keyword">const</span> <a class="code" href="classprocess_1_1Subprocess_1_1IO.html">Subprocess::IO</a>&amp; in = <a class="code" href="classprocess_1_1Subprocess.html#aaa6e1b76ef54ed6db34d595811122ce0">Subprocess::FD</a>(<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#afcf80a6d91178952d107ad00b165752b">STDIN_FILENO</a>),</div><div class="line"><a name="l00413"></a><span class="lineno">  413</span>&#160;    <span class="keyword">const</span> <a class="code" href="classprocess_1_1Subprocess_1_1IO.html">Subprocess::IO</a>&amp; out = <a class="code" href="classprocess_1_1Subprocess.html#aaa6e1b76ef54ed6db34d595811122ce0">Subprocess::FD</a>
 (<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#abd165ee6474b5b75bf075842fff13a04">STDOUT_FILENO</a>),</div><div class="line"><a name="l00414"></a><span class="lineno">  414</span>&#160;    <span class="keyword">const</span> <a class="code" href="classprocess_1_1Subprocess_1_1IO.html">Subprocess::IO</a>&amp; err = <a class="code" href="classprocess_1_1Subprocess.html#aaa6e1b76ef54ed6db34d595811122ce0">Subprocess::FD</a>(<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ae2fe1725bb5e9823d089c46b9ed5266e">STDERR_FILENO</a>),</div><div class="line"><a name="l00415"></a><span class="lineno">  415</span>&#160;    <span class="keyword">const</span> <a class="code" href="classOption.html">Option</a>&lt;std::map&lt;std::string, std::string&gt;&gt;&amp; <a class="code" href="namespacemesos_1_1internal_1_1tests.html#a1396c5e3b0a179220de2792d74770ec2">environment</a> = <a class="code" href="structNone.html">None</a>(),</div><div class="line"><a 
 name="l00416"></a><span class="lineno">  416</span>&#160;    <span class="keyword">const</span> <a class="code" href="classOption.html">Option</a>&lt;lambda::function&lt;</div><div class="line"><a name="l00417"></a><span class="lineno">  417</span>&#160;        <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a>(<span class="keyword">const</span> lambda::function&lt;<span class="keywordtype">int</span>()&gt;&amp;)&gt;&gt;&amp; <a class="code" href="namespacens.html#a98bf4d9e11d546326250997a6493f835">clone</a> = <a class="code" href="structNone.html">None</a>(),</div><div class="line"><a name="l00418"></a><span class="lineno">  418</span>&#160;    <span class="keyword">const</span> std::vector&lt;Subprocess::ParentHook&gt;&amp; parent_hooks = {},</div><div class="line"><a name="l00419"></a><span class="lineno">  419</span>&#160;    <span class="keyword">const</span> std::vector&lt;Subprocess::ChildHook&gt;&amp; child_h
 ooks = {},</div><div class="line"><a name="l00420"></a><span class="lineno">  420</span>&#160;    <span class="keyword">const</span> std::vector&lt;int_fd&gt;&amp; whitelist_fds = {})</div><div class="line"><a name="l00421"></a><span class="lineno">  421</span>&#160;{</div><div class="line"><a name="l00422"></a><span class="lineno">  422</span>&#160;  std::vector&lt;std::string&gt; argv = {<a class="code" href="namespaceos_1_1Shell.html#adeacb41dacfa03ad5ceebd9a53582997">os::Shell::arg0</a>, <a class="code" href="namespaceos_1_1Shell.html#a44f50f66f2a231de974b53c9f4384ba5">os::Shell::arg1</a>, command};</div><div class="line"><a name="l00423"></a><span class="lineno">  423</span>&#160;</div><div class="line"><a name="l00424"></a><span class="lineno">  424</span>&#160;  <span class="keywordflow">return</span> <a class="code" href="classprocess_1_1Subprocess_1_1IO.html#afa34ca045f618704548708d7c5e5d82a">subprocess</a>(</div><div class="line"><a name="l00425"></a><span class="lineno"> 
  425</span>&#160;      <a class="code" href="namespaceos_1_1Shell.html#acfe16ef2b1146ad49a8651c0a457ce46">os::Shell::name</a>,</div><div class="line"><a name="l00426"></a><span class="lineno">  426</span>&#160;      argv,</div><div class="line"><a name="l00427"></a><span class="lineno">  427</span>&#160;      in,</div><div class="line"><a name="l00428"></a><span class="lineno">  428</span>&#160;      out,</div><div class="line"><a name="l00429"></a><span class="lineno">  429</span>&#160;      err,</div><div class="line"><a name="l00430"></a><span class="lineno">  430</span>&#160;      <span class="keyword">nullptr</span>,</div><div class="line"><a name="l00431"></a><span class="lineno">  431</span>&#160;      <a class="code" href="namespacemesos_1_1internal_1_1tests.html#a1396c5e3b0a179220de2792d74770ec2">environment</a>,</div><div class="line"><a name="l00432"></a><span class="lineno">  432</span>&#160;      <a class="code" href="namespacens.html#a98bf4d9e11d546326250997a6493f835">
 clone</a>,</div><div class="line"><a name="l00433"></a><span class="lineno">  433</span>&#160;      parent_hooks,</div><div class="line"><a name="l00434"></a><span class="lineno">  434</span>&#160;      child_hooks,</div><div class="line"><a name="l00435"></a><span class="lineno">  435</span>&#160;      whitelist_fds);</div><div class="line"><a name="l00436"></a><span class="lineno">  436</span>&#160;}</div><div class="line"><a name="l00437"></a><span class="lineno">  437</span>&#160;</div><div class="line"><a name="l00438"></a><span class="lineno">  438</span>&#160;} <span class="comment">// namespace process {</span></div><div class="line"><a name="l00439"></a><span class="lineno">  439</span>&#160;</div><div class="line"><a name="l00440"></a><span class="lineno">  440</span>&#160;<span class="preprocessor">#endif // __PROCESS_SUBPROCESS_HPP__</span></div><div class="ttc" id="namespacepath_html"><div class="ttname"><a href="namespacepath.html">path</a></div><div class="ttdef"><b>D
 efinition:</b> path.hpp:26</div></div>
+<div class="ttc" id="classprocess_1_1Subprocess_html_a60535054108d572796c25011c2aa379d"><div class="ttname"><a href="classprocess_1_1Subprocess.html#a60535054108d572796c25011c2aa379d">process::Subprocess::in</a></div><div class="ttdeci">Option&lt; int_fd &gt; in() const </div><div class="ttdef"><b>Definition:</b> subprocess.hpp:249</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="classprocess_1_1Subprocess_1_1IO_html_a3d12fd22e5deb76d3529ce4e6d9179dc"><div class="ttname"><a href="classprocess_1_1Subprocess_1_1IO.html#a3d12fd22e5deb76d3529ce4e6d9179dc">process::Subprocess::IO::Subprocess</a></div><div class="ttdeci">friend class Subprocess</div><div class="ttdef"><b>Definition:</b> subprocess.hpp:115</div></div>
+<div class="ttc" id="classOption_html"><div class="ttname"><a href="classOption.html">Option&lt; int_fd &gt;</a></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&lt; pid_t &gt; clone(pid_t target, int nstypes, const lambda::function&lt; int()&gt; &amp;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="namespaceprocess_html_a882829822afa4f33b90aafc9c4ffa9af"><div class="ttname"><a href="namespaceprocess.html#a882829822afa4f33b90aafc9c4ffa9af">process::OutputFileDescriptors</a></div><div class="ttdeci">Subprocess::IO::OutputFileDescriptors OutputFileDescriptors</div><div class="ttdef"><b>Definition:</b> subprocess.hpp:344</div></div>
+<div class="ttc" id="classprocess_1_1Subprocess_1_1ChildHook_html"><div class="ttname"><a href="classprocess_1_1Subprocess_1_1ChildHook.html">process::Subprocess::ChildHook</a></div><div class="ttdoc">A ChildHook can be passed to a subprocess call. </div><div class="ttdef"><b>Definition:</b> subprocess.hpp:190</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="classprocess_1_1Subprocess_html_a54793e9c516257d68776f63f0872c3c7"><div class="ttname"><a href="classprocess_1_1Subprocess.html#a54793e9c516257d68776f63f0872c3c7">process::Subprocess::PATH</a></div><div class="ttdeci">static IO PATH(const std::string &amp;path)</div></div>
+<div class="ttc" id="classprocess_1_1Subprocess_1_1IO_html_adb9433454d727de27b2440f729d19990ad3f73761156a6e75873cf903a0d62994"><div class="ttname"><a href="classprocess_1_1Subprocess_1_1IO.html#adb9433454d727de27b2440f729d19990ad3f73761156a6e75873cf903a0d62994">process::Subprocess::IO::OWNED</a></div><div class="ttdoc">The file descriptor is not duplicated before being passed to the subprocess. </div><div class="ttdef"><b>Definition:</b> subprocess.hpp:110</div></div>
+<div class="ttc" id="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors_html_a0a3f315345ef7b7ee6f3f1d4d337854d"><div class="ttname"><a href="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors.html#a0a3f315345ef7b7ee6f3f1d4d337854d">process::Subprocess::IO::InputFileDescriptors::read</a></div><div class="ttdeci">int_fd read</div><div class="ttdef"><b>Definition:</b> subprocess.hpp:75</div></div>
+<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="classprocess_1_1Subprocess_html_ac3af3805968fc8b53e6c5a2a3cbdad2b"><div class="ttname"><a href="classprocess_1_1Subprocess.html#ac3af3805968fc8b53e6c5a2a3cbdad2b">process::Subprocess::pid</a></div><div class="ttdeci">pid_t pid() const </div><div class="ttdef"><b>Definition:</b> subprocess.hpp:242</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="lambda_8hpp_html"><div class="ttname"><a href="lambda_8hpp.html">lambda.hpp</a></div></div>
+<div class="ttc" id="namespaceprocess_html_afc6611c4913642642277b44447a16e55"><div class="ttname"><a href="namespaceprocess.html#afc6611c4913642642277b44447a16e55">process::InputFileDescriptors</a></div><div class="ttdeci">Subprocess::IO::InputFileDescriptors InputFileDescriptors</div><div class="ttdef"><b>Definition:</b> subprocess.hpp:343</div></div>
+<div class="ttc" id="namespaceos_1_1Shell_html_adeacb41dacfa03ad5ceebd9a53582997"><div class="ttname"><a href="namespaceos_1_1Shell.html#adeacb41dacfa03ad5ceebd9a53582997">os::Shell::arg0</a></div><div class="ttdeci">constexpr const char * arg0</div><div class="ttdef"><b>Definition:</b> shell.hpp:44</div></div>
+<div class="ttc" id="classprocess_1_1Subprocess_html"><div class="ttname"><a href="classprocess_1_1Subprocess.html">process::Subprocess</a></div><div class="ttdoc">Represents a fork() exec()ed subprocess. </div><div class="ttdef"><b>Definition:</b> subprocess.hpp:43</div></div>
+<div class="ttc" id="namespacemesos_1_1internal_1_1tests_html_a1396c5e3b0a179220de2792d74770ec2"><div class="ttname"><a href="namespacemesos_1_1internal_1_1tests.html#a1396c5e3b0a179220de2792d74770ec2">mesos::internal::tests::environment</a></div><div class="ttdeci">Environment * environment</div></div>
+<div class="ttc" id="3rdparty_2stout_2include_2stout_2windows_8hpp_html_ab03ced250ed239bc3b50b669493997f9"><div class="ttname"><a href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a></div><div class="ttdeci">DWORD pid_t</div><div class="ttdef"><b>Definition:</b> windows.hpp:181</div></div>
+<div class="ttc" id="classprocess_1_1Subprocess_html_aaa6e1b76ef54ed6db34d595811122ce0"><div class="ttname"><a href="classprocess_1_1Subprocess.html#aaa6e1b76ef54ed6db34d595811122ce0">process::Subprocess::FD</a></div><div class="ttdeci">static IO FD(int_fd fd, IO::FDType type=IO::DUPLICATED)</div></div>
+<div class="ttc" id="3rdparty_2stout_2include_2stout_2windows_8hpp_html_abd165ee6474b5b75bf075842fff13a04"><div class="ttname"><a href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#abd165ee6474b5b75bf075842fff13a04">STDOUT_FILENO</a></div><div class="ttdeci">#define STDOUT_FILENO</div><div class="ttdef"><b>Definition:</b> windows.hpp:154</div></div>
+<div class="ttc" id="classprocess_1_1Subprocess_html_a98180558f1427a64a03cf3f656310bc4"><div class="ttname"><a href="classprocess_1_1Subprocess.html#a98180558f1427a64a03cf3f656310bc4">process::Subprocess::err</a></div><div class="ttdeci">Option&lt; int_fd &gt; err() const </div><div class="ttdef"><b>Definition:</b> subprocess.hpp:269</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&lt; Nothing &gt; close(int fd)</div><div class="ttdef"><b>Definition:</b> close.hpp:24</div></div>
+<div class="ttc" id="classprocess_1_1Subprocess_1_1IO_html"><div class="ttname"><a href="classprocess_1_1Subprocess_1_1IO.html">process::Subprocess::IO</a></div><div class="ttdoc">Describes how the I/O is redirected for stdin/stdout/stderr. </div><div class="ttdef"><b>Definition:</b> subprocess.hpp:61</div></div>
+<div class="ttc" id="classflags_1_1FlagsBase_html"><div class="ttname"><a href="classflags_1_1FlagsBase.html">flags::FlagsBase</a></div><div class="ttdef"><b>Definition:</b> flags.hpp:44</div></div>
+<div class="ttc" id="3rdparty_2stout_2include_2stout_2flags_8hpp_html"><div class="ttname"><a href="3rdparty_2stout_2include_2stout_2flags_8hpp.html">flags.hpp</a></div></div>
+<div class="ttc" id="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors_html"><div class="ttname"><a href="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors.html">process::Subprocess::IO::InputFileDescriptors</a></div><div class="ttdoc">For input file descriptors a child reads from the read file descriptor and a parent may write to the ...</div><div class="ttdef"><b>Definition:</b> subprocess.hpp:73</div></div>
+<div class="ttc" id="classprocess_1_1Subprocess_1_1IO_html_adb9433454d727de27b2440f729d19990af648d44b624da021da40a80190291380"><div class="ttname"><a href="classprocess_1_1Subprocess_1_1IO.html#adb9433454d727de27b2440f729d19990af648d44b624da021da40a80190291380">process::Subprocess::IO::DUPLICATED</a></div><div class="ttdoc">The file descriptor is duplicated before being passed to the subprocess. </div><div class="ttdef"><b>Definition:</b> subprocess.hpp:103</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="3rdparty_2stout_2include_2stout_2windows_8hpp_html_afcf80a6d91178952d107ad00b165752b"><div class="ttname"><a href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#afcf80a6d91178952d107ad00b165752b">STDIN_FILENO</a></div><div class="ttdeci">#define STDIN_FILENO</div><div class="ttdef"><b>Definition:</b> windows.hpp:153</div></div>
+<div class="ttc" id="classprocess_1_1Subprocess_html_a1c1a81931671b15c0c4b310bc49dea56"><div class="ttname"><a href="classprocess_1_1Subprocess.html#a1c1a81931671b15c0c4b310bc49dea56">process::Subprocess::out</a></div><div class="ttdeci">Option&lt; int_fd &gt; out() const </div><div class="ttdef"><b>Definition:</b> subprocess.hpp:259</div></div>
+<div class="ttc" id="classprocess_1_1Subprocess_1_1IO_html_afa34ca045f618704548708d7c5e5d82a"><div class="ttname"><a href="classprocess_1_1Subprocess_1_1IO.html#afa34ca045f618704548708d7c5e5d82a">process::Subprocess::IO::subprocess</a></div><div class="ttdeci">friend Try&lt; Subprocess &gt; subprocess(const std::string &amp;path, std::vector&lt; std::string &gt; argv, const Subprocess::IO &amp;in, const Subprocess::IO &amp;out, const Subprocess::IO &amp;err, const flags::FlagsBase *flags, const Option&lt; std::map&lt; std::string, std::string &gt;&gt; &amp;environment, const Option&lt; lambda::function&lt; pid_t(const lambda::function&lt; int()&gt; &amp;)&gt;&gt; &amp;clone, const std::vector&lt; Subprocess::ParentHook &gt; &amp;parent_hooks, const std::vector&lt; Subprocess::ChildHook &gt; &amp;child_hooks, const std::vector&lt; int_fd &gt; &amp;whitelist_fds)</div></div>
+<div class="ttc" id="future_8hpp_html"><div class="ttname"><a href="future_8hpp.html">future.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="classprocess_1_1Subprocess_1_1IO_html_adb9433454d727de27b2440f729d19990"><div class="ttname"><a href="classprocess_1_1Subprocess_1_1IO.html#adb9433454d727de27b2440f729d19990">process::Subprocess::IO::FDType</a></div><div class="ttdeci">FDType</div><div class="ttdoc">Describes the lifecycle of a file descriptor passed into a subprocess via the Subprocess::FD helper...</div><div class="ttdef"><b>Definition:</b> subprocess.hpp:98</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:48</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>
+<div class="ttc" id="namespacemesos_1_1internal_1_1fs_html_a2343e2642db514496ba8380776487fba"><div class="ttname"><a href="namespacemesos_1_1internal_1_1fs.html#a2343e2642db514496ba8380776487fba">mesos::internal::fs::type</a></div><div class="ttdeci">Try&lt; uint32_t &gt; type(const std::string &amp;path)</div></div>
+<div class="ttc" id="shell_8hpp_html"><div class="ttname"><a href="shell_8hpp.html">shell.hpp</a></div></div>
+<div class="ttc" id="classprocess_1_1Subprocess_html_a6af5024bd1932707893908fceb86ddad"><div class="ttname"><a href="classprocess_1_1Subprocess.html#a6af5024bd1932707893908fceb86ddad">process::Subprocess::PIPE</a></div><div class="ttdeci">static IO PIPE()</div></div>
+<div class="ttc" id="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors_html_ab812da47364d793d9ec0471d3dc8c1bc"><div class="ttname"><a href="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors.html#ab812da47364d793d9ec0471d3dc8c1bc">process::Subprocess::IO::InputFileDescriptors::write</a></div><div class="ttdeci">Option&lt; int_fd &gt; write</div><div class="ttdef"><b>Definition:</b> subprocess.hpp:76</div></div>
+<div class="ttc" id="structprocess_1_1Subprocess_1_1ParentHook_html"><div class="ttname"><a href="structprocess_1_1Subprocess_1_1ParentHook.html">process::Subprocess::ParentHook</a></div><div class="ttdoc">A hook can be passed to a subprocess call. </div><div class="ttdef"><b>Definition:</b> subprocess.hpp:152</div></div>
+<div class="ttc" id="int__fd_8hpp_html_aea4dbda01c90455f158ffa9b924c2f07"><div class="ttname"><a href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a></div><div class="ttdeci">int int_fd</div><div class="ttdef"><b>Definition:</b> int_fd.hpp:35</div></div>
+<div class="ttc" id="namespaceflags_html"><div class="ttname"><a href="namespaceflags.html">flags</a></div><div class="ttdef"><b>Definition:</b> parse.hpp:33</div></div>
+<div class="ttc" id="namespaceos_1_1Shell_html_acfe16ef2b1146ad49a8651c0a457ce46"><div class="ttname"><a href="namespaceos_1_1Shell.html#acfe16ef2b1146ad49a8651c0a457ce46">os::Shell::name</a></div><div class="ttdeci">constexpr const char * name</div><div class="ttdef"><b>Definition:</b> shell.hpp:43</div></div>
+<div class="ttc" id="classprocess_1_1Subprocess_html_a3946c31d16c0625ea554d5216cd4fa3b"><div class="ttname"><a href="classprocess_1_1Subprocess.html#a3946c31d16c0625ea554d5216cd4fa3b">process::Subprocess::status</a></div><div class="ttdeci">Future&lt; Option&lt; int &gt; &gt; status() const </div><div class="ttdoc">Exit status of this subprocess captured as a Future (completed when the subprocess exits)...</div><div class="ttdef"><b>Definition:</b> subprocess.hpp:295</div></div>
+<div class="ttc" id="classprocess_1_1Subprocess_1_1ChildHook_html_ae9a996c6b3aa1113709a3d5ceba37f2c"><div class="ttname"><a href="classprocess_1_1Subprocess_1_1ChildHook.html#ae9a996c6b3aa1113709a3d5ceba37f2c">process::Subprocess::ChildHook::operator()</a></div><div class="ttdeci">Try&lt; Nothing &gt; operator()() const </div><div class="ttdef"><b>Definition:</b> subprocess.hpp:226</div></div>
+<div class="ttc" id="classprocess_1_1Future_html"><div class="ttname"><a href="classprocess_1_1Future.html">process::Future</a></div><div class="ttdef"><b>Definition:</b> future.hpp:58</div></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.11
+</small></address>
+</body>
+</html>


[24/50] mesos-site git commit: Updated the website built from mesos SHA: 7c9c72d.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/libprocess_2include_2process_2windows_2jobobject_8hpp.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/libprocess_2include_2process_2windows_2jobobject_8hpp.html b/content/api/latest/c++/libprocess_2include_2process_2windows_2jobobject_8hpp.html
index d0e3575..2e842c7 100644
--- a/content/api/latest/c++/libprocess_2include_2process_2windows_2jobobject_8hpp.html
+++ b/content/api/latest/c++/libprocess_2include_2process_2windows_2jobobject_8hpp.html
@@ -65,7 +65,7 @@
 <code>#include &lt;<a class="el" href="defer_8hpp_source.html">process/defer.hpp</a>&gt;</code><br />
 <code>#include &lt;<a class="el" href="future_8hpp_source.html">process/future.hpp</a>&gt;</code><br />
 <code>#include &lt;<a class="el" href="reap_8hpp_source.html">process/reap.hpp</a>&gt;</code><br />
-<code>#include &lt;<a class="el" href="subprocess_8hpp_source.html">process/subprocess.hpp</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="include_2process_2subprocess_8hpp_source.html">process/subprocess.hpp</a>&gt;</code><br />
 <code>#include &lt;<a class="el" href="libprocess_2include_2process_2process_8hpp_source.html">process/process.hpp</a>&gt;</code><br />
 <code>#include &lt;glog/logging.h&gt;</code><br />
 </div>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/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 6d422ec..da77d47 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
@@ -52,13 +52,13 @@
 <div class="title">jobobject.hpp</div>  </div>
 </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>&#160;<span class="comment">// Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<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>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<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>&#160;<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>&#160;<span class="comment">// distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<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>&#160;<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>&#160;<span class="comment">// limitations under the License</span></div><div class="line"><a name="l00012"></a><span class="line
 no">   12</span>&#160;</div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="preprocessor">#ifndef __PROCESS_WINDOWS_JOBOBJECT_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="preprocessor">#define __PROCESS_WINDOWS_JOBOBJECT_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;</div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="preprocessor">#include &lt;map&gt;</span></div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;</div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="lambda_8hpp.html">stout/lambda.hpp</a>&gt;</span></div><div clas
 s="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="nothing_8hpp.html">stout/nothing.hpp</a>&gt;</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html">stout/windows.hpp</a>&gt;</span> <span class="comment">// For `SharedHandle`.</span></div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="stout_2include_2stout_2os_2windows_2jobobject_8hpp.html">stout/os/windows/jobobject.hpp</a>&gt;</span></div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;</div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="preprocessor">#inclu
 de &lt;<a class="code" href="defer_8hpp.html">process/defer.hpp</a>&gt;</span></div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="future_8hpp.html">process/future.hpp</a>&gt;</span></div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="reap_8hpp.html">process/reap.hpp</a>&gt;</span></div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="subprocess_8hpp.html">process/subprocess.hpp</a>&gt;</span></div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="libprocess_2include_2process_2process_8hpp.html">process/process.hpp</a>&gt;</span></div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;</div><div 
 class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="preprocessor">#include &lt;glog/logging.h&gt;</span> <span class="comment">// For `CHECK` macro.</span></div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;</div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;<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>&#160;<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>&#160;</div><div class="line"><a name="l00037"></a><span class="lineno"><a class="line" href="classprocess_1_1internal_1_1JobObjectManager.html">   37</a></span>&#160;<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>&lt;JobObjectManager&gt;</div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;{</div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;<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>&#160;  <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">&quot;__job_object_manager&quot;</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>&#160;  <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>&#160;</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>&#160;  <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>&#160;      <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>&#160;      <span class="keyword">const</span> std::wstring&amp; <a class="code" href="namespaceos_1_1Shell.html#acfe16ef2b1146ad49a8651c0a457ce46">name</a>,</div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;      <span class="keyword">const</span> <a class="code" href="classSharedHandle.html">SharedHandle</a>&amp; handle)</div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;  {</div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;    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>&#160;</div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;    <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>&#160;      .<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>(), &amp;<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>&#160;  }</div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;</div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;<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>&#160;  <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>&lt;<a class="code" href="classOption.html">Option&lt;int&gt;</a>&gt; 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>&#160;  {</div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;    CHECK(!exit_code.isPending());</div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;    CHECK(!exit_code.isDiscarded());</div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;</div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;    <a class="code" href="classTry.html">Try&lt;Nothing&gt;</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>&#160;    CHECK(!killJobResult.isError())</div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;      &lt;&lt; <span class="stringliteral">&quot;Failed to kill job object: &quot;</span> &lt;&lt; killJobResult.error();</div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;</div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;    <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>&#160;    <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>&#160;    <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>&#160;    jobs.erase(pid);</div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;  }</div><div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;</div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;  <span class="keyword">struct </span>JobData {</div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;    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>&#160;    <a class="code" href="classSharedHandle.html">SharedHandle</a> handle;</div><div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;  };</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>&#160;  std::map&lt;pid_t, JobData&gt; jobs;</div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;};</div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;</div><div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;<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>&#160;<span class="keyword">extern</span> <a class="code" href="structprocess_1_1PID.html">PID&lt;JobObjectManager&gt;</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>&#160;</div><div class="line"><a name="l00082"></a><span cl
 ass="lineno">   82</span>&#160;} <span class="comment">// namespace internal {</span></div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;</div><div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;<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>&#160;  <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) -&gt; <a class="code" href="classTry.html">Try&lt;Nothing&gt;</a> {</div><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;    <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>&#160;    <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>&#160;    <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>&#160;    <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>&#160;    <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>&#160;    <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>&#160;    <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>&#160;    <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>&#160;    <span class="comment">// manager process.</span></div><div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;    <a class="code" href="classTry.html">Try&lt;std::wstring&gt;</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>&#160;    <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>&#160;      <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>&#160;    }</div><div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;</div><div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;    <span class="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>&#160;    <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>&#160;    <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>&#160;    <a class="code" href="classTry.html">Try&lt;SharedHandle&gt;</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>&#160;    <span class="keywordflow">if</span> (handle.isError()) {</div><div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;      <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>&#160;    }</div><div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;</div><div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;    <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>&#160;    <a class="code" href="classTry.html">Try&lt;Nothing&gt;</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>&#160;    <span class="keywordflow">if</span> (result.isError()) {</div><div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;      <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>&#160;    }</div><div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;</div><div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;    <span class="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>&#160;    <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>&#160;    <span class="comment">// when the process is reaped.</span></div><div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;    <a class="code" href="namespaceprocess_1_1internal.html#ac34bccdf47fcfa46cedf2a03771eb221">dispatch</a>(</div><div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;      <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>&#160;      &amp;<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>&#160;      pid,</div><div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;      name.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>(),</div><div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;      handle.get());</div><div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;</div><div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;    <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>&#160;  });</div><div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;}</div><div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;</div><div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;} <span class="co
 mment">// namespace process {</span></div><div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;</div><div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;<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>
+<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>&#160;<span class="comment">// Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<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>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<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>&#160;<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>&#160;<span class="comment">// distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<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>&#160;<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>&#160;<span class="comment">// limitations under the License</span></div><div class="line"><a name="l00012"></a><span class="line
 no">   12</span>&#160;</div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="preprocessor">#ifndef __PROCESS_WINDOWS_JOBOBJECT_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="preprocessor">#define __PROCESS_WINDOWS_JOBOBJECT_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;</div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="preprocessor">#include &lt;map&gt;</span></div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;</div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="lambda_8hpp.html">stout/lambda.hpp</a>&gt;</span></div><div clas
 s="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="nothing_8hpp.html">stout/nothing.hpp</a>&gt;</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html">stout/windows.hpp</a>&gt;</span> <span class="comment">// For `SharedHandle`.</span></div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="stout_2include_2stout_2os_2windows_2jobobject_8hpp.html">stout/os/windows/jobobject.hpp</a>&gt;</span></div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;</div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="preprocessor">#inclu
 de &lt;<a class="code" href="defer_8hpp.html">process/defer.hpp</a>&gt;</span></div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="future_8hpp.html">process/future.hpp</a>&gt;</span></div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="reap_8hpp.html">process/reap.hpp</a>&gt;</span></div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="include_2process_2subprocess_8hpp.html">process/subprocess.hpp</a>&gt;</span></div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="libprocess_2include_2process_2process_8hpp.html">process/process.hpp</a>&gt;</span></div><div class="line"><a name="l00030"></a><span class="lineno">   30</span
 >&#160;</div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="preprocessor">#include &lt;glog/logging.h&gt;</span> <span class="comment">// For `CHECK` macro.</span></div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;</div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;<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>&#160;<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>&#160;</div><div class="line"><a name="l00037"></a><span class="lineno"><a class="line" href="classprocess_1_1internal_1_1JobObjectManager.html">   37</a></span>&#160;<span class="
 keyword">class </span><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>&lt;JobObjectManager&gt;</div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;{</div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;<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>&#160;  <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">&quot;__job_object_manager&quot;</span>) {}</div><div class="line"><a name="l00041"></a><span class="lineno"><a class="lin
 e" href="classprocess_1_1internal_1_1JobObjectManager.html#a1d7ed88d58a332060514091e8a7385d3">   41</a></span>&#160;  <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>&#160;</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>&#160;  <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>&#160;      <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>&#160;      <span class="keyword">const</span> std::wstring&amp; <a class="code" href="namespaceos_1_1Shell.html#acfe16ef2b1146ad49a8651c0a457ce46">name</a>,</div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;      <span class="keyword">const</span> <a class="code" href="classSharedHandle.html">SharedHandle</a>&amp; handle)</div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;  {</div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;    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>&#160;</div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;    <a class="code" href="namespaceprocess.html#a8225ae5aa1b4963bb8413312282a91be">process::reap</a>(pid)</div><div 
 class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;      .<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>(), &amp;<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>&#160;  }</div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;</div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;<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>&#160;  <span class="keywordtype">void</span> <a class="code" href="classprocess_1_1internal
 _1_1JobObjectManager.html#adc672b14adbfe22f390c518457d60b2b">cleanup</a>(<a class="code" href="classprocess_1_1Future.html">Future</a>&lt;<a class="code" href="classOption.html">Option&lt;int&gt;</a>&gt; 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>&#160;  {</div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;    CHECK(!exit_code.isPending());</div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;    CHECK(!exit_code.isDiscarded());</div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;</div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;    <a class="code" href="classTry.html">Try&lt;Nothing&gt;</a> killJobResult = <a class="code" href="namespaceos.html#a8181969d159a
 69d91d1e265f1bb1eddc">os::kill_job</a>(jobs.at(pid).handle);</div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;    CHECK(!killJobResult.isError())</div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;      &lt;&lt; <span class="stringliteral">&quot;Failed to kill job object: &quot;</span> &lt;&lt; killJobResult.error();</div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;</div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;    <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>&#160;    <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>&#160;    <span class="comment">// dead process) must happen prior to t
 his, e.g. in a another parent hook.</span></div><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;    jobs.erase(pid);</div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;  }</div><div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;</div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;  <span class="keyword">struct </span>JobData {</div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;    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>&#160;    <a class="code" href="classSharedHandle.html">SharedHandle</a> handle;</div><div class="line"><a name="l00074"></a><span class="lineno">   74</span
 >&#160;  };</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>&#160;  std::map&lt;pid_t, JobData&gt; jobs;</div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;};</div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;</div><div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;<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>&#160;<span class="keyword">extern</span> <a class="code" href="structprocess_1_1PID.html">PID&lt;JobObjectManager&gt;</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>&#160;</div><div class="line"><a name="l0
 0082"></a><span class="lineno">   82</span>&#160;} <span class="comment">// namespace internal {</span></div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;</div><div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;<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>&#160;  <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) -&gt; <a class="code" href="classTry.html">Try&lt;Nothing&gt;</a> {</div><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;    <span class="comment">// NOTE: There are two very i
 mportant parts to this hook. First, Windows</span></div><div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;    <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>&#160;    <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>&#160;    <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>&#160;    <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>&#160;    <span class="comment">// created by any process in this task). Second, the lifetime of the job</span></di
 v><div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;    <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>&#160;    <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>&#160;    <span class="comment">// manager process.</span></div><div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;    <a class="code" href="classTry.html">Try&lt;std::wstring&gt;</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>&#160;    <span class="keywordflow">if</span> (name.<a class="code" 
 href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;      <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>&#160;    }</div><div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;</div><div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;    <span class="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>&#160;    <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>&#160;    <span class="comment">// a running process is assigned
  to it.</span></div><div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;    <a class="code" href="classTry.html">Try&lt;SharedHandle&gt;</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>&#160;    <span class="keywordflow">if</span> (handle.isError()) {</div><div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;      <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>&#160;    }</div><div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;</div><div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;    <span class="comment">// This actually as
 signs the process `pid` to the job object.</span></div><div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;    <a class="code" href="classTry.html">Try&lt;Nothing&gt;</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>&#160;    <span class="keywordflow">if</span> (result.isError()) {</div><div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;      <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>&#160;    }</div><div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;</div><div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;    <span class="comment">// Save the handle to the job object to ensure the object
  remains</span></div><div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;    <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>&#160;    <span class="comment">// when the process is reaped.</span></div><div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;    <a class="code" href="namespaceprocess_1_1internal.html#ac34bccdf47fcfa46cedf2a03771eb221">dispatch</a>(</div><div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;      <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>&#160;      &amp;<a class="code" href="classprocess_1_1internal_1_1JobObjectManager.html#a96b0d960771d03b6682b20fd9f6142ea">process::internal::JobObjectManage
 r::manage</a>,</div><div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;      pid,</div><div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;      name.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>(),</div><div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;      handle.get());</div><div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;</div><div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;    <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>&#160;  });</div><div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;}</div><div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;</div><div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160
 ;} <span class="comment">// namespace process {</span></div><div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;</div><div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;<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:36</div></div>
 <div class="ttc" id="classOption_html"><div class="ttname"><a href="classOption.html">Option&lt; int &gt;</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 &amp; get()&amp;</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>
-<div class="ttc" id="subprocess_8hpp_html"><div class="ttname"><a href="subprocess_8hpp.html">subprocess.hpp</a></div></div>
+<div class="ttc" id="include_2process_2subprocess_8hpp_html"><div class="ttname"><a href="include_2process_2subprocess_8hpp.html">subprocess.hpp</a></div></div>
 <div class="ttc" id="namespacecgroups_html_a12d210f286e5fcf7993c0c90b9459606"><div class="ttname"><a href="namespacecgroups.html#a12d210f286e5fcf7993c0c90b9459606">cgroups::cleanup</a></div><div class="ttdeci">process::Future&lt; bool &gt; cleanup(const std::string &amp;hierarchy)</div></div>
 <div class="ttc" id="classprocess_1_1internal_1_1JobObjectManager_html_adc672b14adbfe22f390c518457d60b2b"><div class="ttname"><a href="classprocess_1_1internal_1_1JobObjectManager.html#adc672b14adbfe22f390c518457d60b2b">process::internal::JobObjectManager::cleanup</a></div><div class="ttdeci">void cleanup(Future&lt; Option&lt; int &gt;&gt; exit_code, const pid_t pid)</div><div class="ttdef"><b>Definition:</b> jobobject.hpp:55</div></div>
 <div class="ttc" id="classprocess_1_1ProcessBase_html"><div class="ttname"><a href="classprocess_1_1ProcessBase.html">process::ProcessBase</a></div><div class="ttdef"><b>Definition:</b> process.hpp:72</div></div>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/libwinio_8hpp.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/libwinio_8hpp.html b/content/api/latest/c++/libwinio_8hpp.html
new file mode 100644
index 0000000..fd4dd7c
--- /dev/null
+++ b/content/api/latest/c++/libwinio_8hpp.html
@@ -0,0 +1,105 @@
+<!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: 3rdparty/libprocess/src/windows/libwinio.hpp File 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&#160;Page</span></a></li>
+      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li class="current"><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="files.html"><span>File&#160;List</span></a></li>
+      <li><a href="globals.html"><span>File&#160;Members</span></a></li>
+    </ul>
+  </div>
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_8cab8f464681f7cc51cee77e79a434cd.html">3rdparty</a></li><li class="navelem"><a class="el" href="dir_043a76de98701f9bddf61b5e98f305ff.html">libprocess</a></li><li class="navelem"><a class="el" href="dir_01cbbd8dcbf9de3825992568658f467e.html">src</a></li><li class="navelem"><a class="el" href="dir_4f303781ded361ff602a549327c53cc9.html">windows</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="summary">
+<a href="#nested-classes">Classes</a> &#124;
+<a href="#namespaces">Namespaces</a> &#124;
+<a href="#func-members">Functions</a>  </div>
+  <div class="headertitle">
+<div class="title">libwinio.hpp File Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &lt;<a class="el" href="lambda_8hpp_source.html">stout/lambda.hpp</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="try_8hpp_source.html">stout/try.hpp</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="3rdparty_2stout_2include_2stout_2windows_8hpp_source.html">stout/windows.hpp</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="int__fd_8hpp_source.html">stout/os/int_fd.hpp</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="address_8hpp_source.html">process/address.hpp</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="future_8hpp_source.html">process/future.hpp</a>&gt;</code><br />
+</div>
+<p><a href="libwinio_8hpp_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classprocess_1_1windows_1_1EventLoop.html">process::windows::EventLoop</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
+Namespaces</h2></td></tr>
+<tr class="memitem:namespaceprocess"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceprocess.html">process</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:namespaceprocess_1_1windows"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceprocess_1_1windows.html">process::windows</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</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:a7436ed89e84ff3415987de0ca9428d08"><td class="memItemLeft" align="right" valign="top">Future&lt; size_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceprocess_1_1windows.html#a7436ed89e84ff3415987de0ca9428d08">process::windows::read</a> (const <a class="el" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> &amp;fd, void *buf, size_t size)</td></tr>
+<tr class="separator:a7436ed89e84ff3415987de0ca9428d08"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a69a29846581bb7bb1084e9ee90cbe8e6"><td class="memItemLeft" align="right" valign="top">Future&lt; size_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceprocess_1_1windows.html#a69a29846581bb7bb1084e9ee90cbe8e6">process::windows::write</a> (const <a class="el" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> &amp;fd, const void *buf, size_t size)</td></tr>
+<tr class="separator:a69a29846581bb7bb1084e9ee90cbe8e6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a37fde6f31c2f9838a18cf83c2c865134"><td class="memItemLeft" align="right" valign="top">Future&lt; size_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceprocess_1_1windows.html#a37fde6f31c2f9838a18cf83c2c865134">process::windows::recv</a> (const <a class="el" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> &amp;fd, void *buf, size_t size)</td></tr>
+<tr class="separator:a37fde6f31c2f9838a18cf83c2c865134"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a04c64346155d34517acdf8b587162868"><td class="memItemLeft" align="right" valign="top">Future&lt; size_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceprocess_1_1windows.html#a04c64346155d34517acdf8b587162868">process::windows::send</a> (const <a class="el" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> &amp;fd, const void *buf, size_t size)</td></tr>
+<tr class="separator:a04c64346155d34517acdf8b587162868"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1f34e4ee3092afe93c37c170430c03f5"><td class="memItemLeft" align="right" valign="top">Future&lt; <a class="el" href="structNothing.html">Nothing</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceprocess_1_1windows.html#a1f34e4ee3092afe93c37c170430c03f5">process::windows::accept</a> (const <a class="el" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> &amp;fd, const <a class="el" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> &amp;accepted_socket)</td></tr>
+<tr class="separator:a1f34e4ee3092afe93c37c170430c03f5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5afdaeaeb57343d0aca728b74dcd3f71"><td class="memItemLeft" align="right" valign="top">Future&lt; <a class="el" href="structNothing.html">Nothing</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceprocess_1_1windows.html#a5afdaeaeb57343d0aca728b74dcd3f71">process::windows::connect</a> (const <a class="el" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> &amp;fd, const network::Address &amp;address)</td></tr>
+<tr class="separator:a5afdaeaeb57343d0aca728b74dcd3f71"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:afc59f27e725b5feb12f76e1c008ba767"><td class="memItemLeft" align="right" valign="top">Future&lt; size_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceprocess_1_1windows.html#afc59f27e725b5feb12f76e1c008ba767">process::windows::sendfile</a> (const <a class="el" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> &amp;fd, const <a class="el" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> &amp;file_fd, off_t offset, size_t size)</td></tr>
+<tr class="separator:afc59f27e725b5feb12f76e1c008ba767"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.11
+</small></address>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/libwinio_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/libwinio_8hpp_source.html b/content/api/latest/c++/libwinio_8hpp_source.html
new file mode 100644
index 0000000..1d49099
--- /dev/null
+++ b/content/api/latest/c++/libwinio_8hpp_source.html
@@ -0,0 +1,91 @@
+<!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: 3rdparty/libprocess/src/windows/libwinio.hpp Source File</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&#160;Page</span></a></li>
+      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li class="current"><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="files.html"><span>File&#160;List</span></a></li>
+      <li><a href="globals.html"><span>File&#160;Members</span></a></li>
+    </ul>
+  </div>
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_8cab8f464681f7cc51cee77e79a434cd.html">3rdparty</a></li><li class="navelem"><a class="el" href="dir_043a76de98701f9bddf61b5e98f305ff.html">libprocess</a></li><li class="navelem"><a class="el" href="dir_01cbbd8dcbf9de3825992568658f467e.html">src</a></li><li class="navelem"><a class="el" href="dir_4f303781ded361ff602a549327c53cc9.html">windows</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">libwinio.hpp</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="libwinio_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>&#160;<span class="comment">// Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<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>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<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>&#160;<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>&#160;<span class="comment">// distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<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>&#160;<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>&#160;<span class="comment">// limitations under the License</span></div><div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;</div><div class="
 line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="preprocessor">#ifndef __LIBWINIO_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="preprocessor">#define __LIBWINIO_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;</div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="lambda_8hpp.html">stout/lambda.hpp</a>&gt;</span></div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="try_8hpp.html">stout/try.hpp</a>&gt;</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html">stout/windows.hpp</a>&gt;</span></div><div class="line"><a name="
 l00019"></a><span class="lineno">   19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="int__fd_8hpp.html">stout/os/int_fd.hpp</a>&gt;</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;</div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="address_8hpp.html">process/address.hpp</a>&gt;</span></div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="future_8hpp.html">process/future.hpp</a>&gt;</span></div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;</div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceprocess.html">process</a> {</
 div><div class="line"><a name="l00026"></a><span class="lineno"><a class="line" href="namespaceprocess_1_1windows.html">   26</a></span>&#160;<span class="keyword">namespace </span>windows {</div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;</div><div class="line"><a name="l00028"></a><span class="lineno"><a class="line" href="classprocess_1_1windows_1_1EventLoop.html">   28</a></span>&#160;<span class="keyword">class </span><a class="code" href="classprocess_1_1windows_1_1EventLoop.html">EventLoop</a></div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;{</div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;  <span class="keyword">static</span> <a class="code" href="classTry.html">Try&lt;EventLoop*&gt;</a> <a class="code" href="classprocess_1_1windows_1_1EventLoop.html#a3b
 d3da5d721cf2c4db9c5551bdccc3a4">create</a>();</div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;  <span class="comment">// Run the event loop forever.</span></div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;  <a class="code" href="classTry.html">Try&lt;Nothing&gt;</a> <a class="code" href="classprocess_1_1windows_1_1EventLoop.html#a2578b5fad0eb039f995955c798310c86">run</a>();</div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;</div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;  <span class="comment">// Signal the event loop to stop.</span></div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;  <a class="code" href="classTry.html">Try&lt;Nothing&gt;</a> <a class="code" href="classprocess_1_1windows_1_1EventLoop.html#a8a07fc602e31875e6cbcaeac8
 008f09a">stop</a>();</div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;  <span class="comment">// Timer event that calls the callback after the timer has fired.</span></div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;  <a class="code" href="classTry.html">Try&lt;Nothing&gt;</a> <a class="code" href="classprocess_1_1windows_1_1EventLoop.html#a006cb0c8efb7aaadadf0a692d9c2659a">launchTimer</a>(</div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;      <span class="keyword">const</span> <a class="code" href="classDuration.html">Duration</a>&amp; duration, <span class="keyword">const</span> lambda::function&lt;<span class="keywordtype">void</span>()&gt;&amp; callback);</div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;</div><div class="line"><a name="l00043"></a><span class="l
 ineno">   43</span>&#160;  <span class="comment">// Register a handle for async IO.</span></div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;  <a class="code" href="classTry.html">Try&lt;Nothing&gt;</a> <a class="code" href="classprocess_1_1windows_1_1EventLoop.html#a832a73998bb3b26b7caa770ceef38827">registerHandle</a>(<span class="keyword">const</span> <a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a>&amp; fd);</div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;</div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;  <a class="code" href="classprocess_1_1windows_1_1EventLoop.html">EventLoop</a>(<a class="code" href="namespacerouting_1_1queueing_1_1ingress.html#a934208b6017d0a9aed90b6594bb8292f">HANDLE</a> iocp_handle);</div><div class=
 "line"><a name="l00048"></a><span class="lineno">   48</span>&#160;</div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;  <span class="comment">// Custom Deleter for a RAII handle.</span></div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;  <span class="keyword">struct </span>HandleDeleter</div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;  {</div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;    <span class="comment">// `HANDLE` satisfies the C++ `NullablePointer` interface, since it&#39;s</span></div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;    <span class="comment">// a literal pointer. So we can use the `HANDLE` directly instead of</span></div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;    <span class="comment">// using a pointer to the `HANDLE`.</span></div><div class="line"><a nam
 e="l00055"></a><span class="lineno">   55</span>&#160;    <span class="comment">// See http://en.cppreference.com/w/cpp/memory/unique_ptr for more info.</span></div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;    <span class="keyword">typedef</span> <a class="code" href="namespacerouting_1_1queueing_1_1ingress.html#a934208b6017d0a9aed90b6594bb8292f">HANDLE</a> pointer;</div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;    <span class="keywordtype">void</span> operator()(<a class="code" href="namespacerouting_1_1queueing_1_1ingress.html#a934208b6017d0a9aed90b6594bb8292f">HANDLE</a> h) { ::CloseHandle(h); }</div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;  };</div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;</div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;  std::unique_ptr&lt;HANDLE, HandleDeleter&gt; iocp_handle_;</
 div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;};</div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;</div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;</div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;<span class="comment">// All of these functions do an asynchronous IO operation. The returned future</span></div><div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;<span class="comment">// can be discarded to cancel the operation.</span></div><div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;<a class="code" href="classprocess_1_1Future.html">Future&lt;size_t&gt;</a> <a class="code" href="namespaceprocess_1_1windows.html#a7436ed89e84ff3415987de0ca9428d08">read</a>(<span class="keyword">const</span> <a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a>&amp; fd, <span cl
 ass="keywordtype">void</span>* buf, <span class="keywordtype">size_t</span> <a class="code" href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">size</a>);</div><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;</div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;<a class="code" href="classprocess_1_1Future.html">Future&lt;size_t&gt;</a> <a class="code" href="namespaceprocess_1_1windows.html#a69a29846581bb7bb1084e9ee90cbe8e6">write</a>(<span class="keyword">const</span> <a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a>&amp; fd, <span class="keyword">const</span> <span class="keywordtype">void</span>* buf, <span class="keywordtype">size_t</span> size);</div><div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;</div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;<span class="comment">// Socket only functions.</span></div><d
 iv class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;<a class="code" href="classprocess_1_1Future.html">Future&lt;size_t&gt;</a> <a class="code" href="namespaceprocess_1_1windows.html#a37fde6f31c2f9838a18cf83c2c865134">recv</a>(<span class="keyword">const</span> <a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a>&amp; fd, <span class="keywordtype">void</span>* buf, <span class="keywordtype">size_t</span> size);</div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;</div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;<a class="code" href="classprocess_1_1Future.html">Future&lt;size_t&gt;</a> <a class="code" href="namespaceprocess_1_1windows.html#a04c64346155d34517acdf8b587162868">send</a>(<span class="keyword">const</span> <a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a>&amp; fd, <span class="keyword">const</span> <span class="keywo
 rdtype">void</span>* buf, <span class="keywordtype">size_t</span> size);</div><div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;</div><div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;<a class="code" href="classprocess_1_1Future.html">Future&lt;Nothing&gt;</a> <a class="code" href="namespaceprocess_1_1windows.html#a1f34e4ee3092afe93c37c170430c03f5">accept</a>(<span class="keyword">const</span> <a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a>&amp; fd, <span class="keyword">const</span> <a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a>&amp; accepted_socket);</div><div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;</div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;<a class="code" href="classprocess_1_1Future.html">Future&lt;Nothing&gt;</a> <a class="code" href="namespaceprocess_1_1windows.html#a5afda
 eaeb57343d0aca728b74dcd3f71">connect</a>(<span class="keyword">const</span> <a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a>&amp; fd, <span class="keyword">const</span> <a class="code" href="classprocess_1_1network_1_1Address.html">network::Address</a>&amp; <a class="code" href="namespaceprocess.html#afdecc57ab065ab5d354e728d0ef0ff34">address</a>);</div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;</div><div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;<a class="code" href="classprocess_1_1Future.html">Future&lt;size_t&gt;</a> <a class="code" href="namespaceprocess_1_1windows.html#afc59f27e725b5feb12f76e1c008ba767">sendfile</a>(</div><div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;    <span class="keyword">const</span> <a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a>&amp; fd, <span class="keyword">const</span> <a class="
 code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a>&amp; file_fd, off_t offset, <span class="keywordtype">size_t</span> size);</div><div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;</div><div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;} <span class="comment">// namespace windows {</span></div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;} <span class="comment">// namespace process {</span></div><div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;</div><div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;<span class="preprocessor">#endif // __LIBWINIO_HPP__</span></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&lt; Bytes &gt; size(const std::string
  &amp;path, const FollowSymlink follow=FollowSymlink::FOLLOW_SYMLINK)</div><div class="ttdef"><b>Definition:</b> stat.hpp:121</div></div>
+<div class="ttc" id="address_8hpp_html"><div class="ttname"><a href="address_8hpp.html">address.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="namespaceprocess_1_1windows_html_a1f34e4ee3092afe93c37c170430c03f5"><div class="ttname"><a href="namespaceprocess_1_1windows.html#a1f34e4ee3092afe93c37c170430c03f5">process::windows::accept</a></div><div class="ttdeci">Future&lt; Nothing &gt; accept(const int_fd &amp;fd, const int_fd &amp;accepted_socket)</div></div>
+<div class="ttc" id="classprocess_1_1windows_1_1EventLoop_html_a832a73998bb3b26b7caa770ceef38827"><div class="ttname"><a href="classprocess_1_1windows_1_1EventLoop.html#a832a73998bb3b26b7caa770ceef38827">process::windows::EventLoop::registerHandle</a></div><div class="ttdeci">Try&lt; Nothing &gt; registerHandle(const int_fd &amp;fd)</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="namespaceprocess_1_1windows_html_afc59f27e725b5feb12f76e1c008ba767"><div class="ttname"><a href="namespaceprocess_1_1windows.html#afc59f27e725b5feb12f76e1c008ba767">process::windows::sendfile</a></div><div class="ttdeci">Future&lt; size_t &gt; sendfile(const int_fd &amp;fd, const int_fd &amp;file_fd, off_t offset, size_t size)</div><div class="ttdef"><b>Definition:</b> sendfile.hpp:58</div></div>
+<div class="ttc" id="namespaceprocess_1_1windows_html_a37fde6f31c2f9838a18cf83c2c865134"><div class="ttname"><a href="namespaceprocess_1_1windows.html#a37fde6f31c2f9838a18cf83c2c865134">process::windows::recv</a></div><div class="ttdeci">Future&lt; size_t &gt; recv(const int_fd &amp;fd, void *buf, size_t size)</div></div>
+<div class="ttc" id="classprocess_1_1windows_1_1EventLoop_html_a3bd3da5d721cf2c4db9c5551bdccc3a4"><div class="ttname"><a href="classprocess_1_1windows_1_1EventLoop.html#a3bd3da5d721cf2c4db9c5551bdccc3a4">process::windows::EventLoop::create</a></div><div class="ttdeci">static Try&lt; EventLoop * &gt; create()</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="classDuration_html"><div class="ttname"><a href="classDuration.html">Duration</a></div><div class="ttdef"><b>Definition:</b> duration.hpp:32</div></div>
+<div class="ttc" id="classprocess_1_1windows_1_1EventLoop_html_a2578b5fad0eb039f995955c798310c86"><div class="ttname"><a href="classprocess_1_1windows_1_1EventLoop.html#a2578b5fad0eb039f995955c798310c86">process::windows::EventLoop::run</a></div><div class="ttdeci">Try&lt; Nothing &gt; run()</div></div>
+<div class="ttc" id="namespaceprocess_1_1windows_html_a69a29846581bb7bb1084e9ee90cbe8e6"><div class="ttname"><a href="namespaceprocess_1_1windows.html#a69a29846581bb7bb1084e9ee90cbe8e6">process::windows::write</a></div><div class="ttdeci">Future&lt; size_t &gt; write(const int_fd &amp;fd, const void *buf, size_t size)</div><div class="ttdef"><b>Definition:</b> write.hpp:72</div></div>
+<div class="ttc" id="lambda_8hpp_html"><div class="ttname"><a href="lambda_8hpp.html">lambda.hpp</a></div></div>
+<div class="ttc" id="classprocess_1_1windows_1_1EventLoop_html_a006cb0c8efb7aaadadf0a692d9c2659a"><div class="ttname"><a href="classprocess_1_1windows_1_1EventLoop.html#a006cb0c8efb7aaadadf0a692d9c2659a">process::windows::EventLoop::launchTimer</a></div><div class="ttdeci">Try&lt; Nothing &gt; launchTimer(const Duration &amp;duration, const lambda::function&lt; void()&gt; &amp;callback)</div></div>
+<div class="ttc" id="namespaceprocess_1_1windows_html_a7436ed89e84ff3415987de0ca9428d08"><div class="ttname"><a href="namespaceprocess_1_1windows.html#a7436ed89e84ff3415987de0ca9428d08">process::windows::read</a></div><div class="ttdeci">Future&lt; size_t &gt; read(const int_fd &amp;fd, void *buf, size_t size)</div><div class="ttdef"><b>Definition:</b> read.hpp:83</div></div>
+<div class="ttc" id="namespacerouting_1_1queueing_1_1ingress_html_a934208b6017d0a9aed90b6594bb8292f"><div class="ttname"><a href="namespacerouting_1_1queueing_1_1ingress.html#a934208b6017d0a9aed90b6594bb8292f">routing::queueing::ingress::HANDLE</a></div><div class="ttdeci">constexpr Handle HANDLE</div><div class="ttdef"><b>Definition:</b> ingress.hpp:37</div></div>
+<div class="ttc" id="future_8hpp_html"><div class="ttname"><a href="future_8hpp.html">future.hpp</a></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:48</div></div>
+<div class="ttc" id="classprocess_1_1windows_1_1EventLoop_html_a8a07fc602e31875e6cbcaeac8008f09a"><div class="ttname"><a href="classprocess_1_1windows_1_1EventLoop.html#a8a07fc602e31875e6cbcaeac8008f09a">process::windows::EventLoop::stop</a></div><div class="ttdeci">Try&lt; Nothing &gt; stop()</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>
+<div class="ttc" id="namespaceprocess_html_afdecc57ab065ab5d354e728d0ef0ff34"><div class="ttname"><a href="namespaceprocess.html#afdecc57ab065ab5d354e728d0ef0ff34">process::address</a></div><div class="ttdeci">network::inet::Address address()</div><div class="ttdoc">Returns the socket address associated with this instance of the library. </div></div>
+<div class="ttc" id="classprocess_1_1windows_1_1EventLoop_html"><div class="ttname"><a href="classprocess_1_1windows_1_1EventLoop.html">process::windows::EventLoop</a></div><div class="ttdef"><b>Definition:</b> libwinio.hpp:28</div></div>
+<div class="ttc" id="int__fd_8hpp_html_aea4dbda01c90455f158ffa9b924c2f07"><div class="ttname"><a href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a></div><div class="ttdeci">int int_fd</div><div class="ttdef"><b>Definition:</b> int_fd.hpp:35</div></div>
+<div class="ttc" id="namespaceprocess_1_1windows_html_a5afdaeaeb57343d0aca728b74dcd3f71"><div class="ttname"><a href="namespaceprocess_1_1windows.html#a5afdaeaeb57343d0aca728b74dcd3f71">process::windows::connect</a></div><div class="ttdeci">Future&lt; Nothing &gt; connect(const int_fd &amp;fd, const network::Address &amp;address)</div></div>
+<div class="ttc" id="classprocess_1_1Future_html"><div class="ttname"><a href="classprocess_1_1Future.html">process::Future&lt; size_t &gt;</a></div></div>
+<div class="ttc" id="namespaceprocess_1_1windows_html_a04c64346155d34517acdf8b587162868"><div class="ttname"><a href="namespaceprocess_1_1windows.html#a04c64346155d34517acdf8b587162868">process::windows::send</a></div><div class="ttdeci">Future&lt; size_t &gt; send(const int_fd &amp;fd, const void *buf, size_t size)</div></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.11
+</small></address>
+</body>
+</html>


[30/50] mesos-site git commit: Updated the website built from mesos SHA: 7c9c72d.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/index.hhc
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/index.hhc b/content/api/latest/c++/index.hhc
index 31630ad..73e4188 100644
--- a/content/api/latest/c++/index.hhc
+++ b/content/api/latest/c++/index.hhc
@@ -400,7 +400,10 @@
       <LI><OBJECT type="text/sitemap"><param name="Name" value="ID"><param name="Local" value="namespaceprocess_1_1ID.html"><param name="ImageNumber" value="11"></OBJECT>
       <LI><OBJECT type="text/sitemap"><param name="Name" value="inject"><param name="Local" value="namespaceprocess_1_1inject.html"><param name="ImageNumber" value="11"></OBJECT>
       <LI><OBJECT type="text/sitemap"><param name="Name" value="internal"><param name="Local" value="namespaceprocess_1_1internal.html"><param name="ImageNumber" value="11"></OBJECT>
-      <LI><OBJECT type="text/sitemap"><param name="Name" value="io"><param name="Local" value="namespaceprocess_1_1io.html"><param name="ImageNumber" value="11"></OBJECT>
+      <LI><OBJECT type="text/sitemap"><param name="Name" value="io"><param name="Local" value="namespaceprocess_1_1io.html"><param name="ImageNumber" value="1"></OBJECT>
+        <UL>
+        <LI><OBJECT type="text/sitemap"><param name="Name" value="internal"><param name="Local" value="namespaceprocess_1_1io_1_1internal.html"><param name="ImageNumber" value="11"></OBJECT>
+        </UL>
       <LI><OBJECT type="text/sitemap"><param name="Name" value="metrics"><param name="Local" value="namespaceprocess_1_1metrics.html"><param name="ImageNumber" value="1"></OBJECT>
         <UL>
         <LI><OBJECT type="text/sitemap"><param name="Name" value="internal"><param name="Local" value="namespaceprocess_1_1metrics_1_1internal.html"><param name="ImageNumber" value="11"></OBJECT>
@@ -415,6 +418,7 @@
         <LI><OBJECT type="text/sitemap"><param name="Name" value="openssl"><param name="Local" value="namespaceprocess_1_1network_1_1openssl.html"><param name="ImageNumber" value="11"></OBJECT>
         <LI><OBJECT type="text/sitemap"><param name="Name" value="unix"><param name="Local" value="namespaceprocess_1_1network_1_1unix.html"><param name="ImageNumber" value="11"></OBJECT>
         </UL>
+      <LI><OBJECT type="text/sitemap"><param name="Name" value="windows"><param name="Local" value="namespaceprocess_1_1windows.html"><param name="ImageNumber" value="11"></OBJECT>
       </UL>
     <LI><OBJECT type="text/sitemap"><param name="Name" value="protobuf"><param name="Local" value="namespaceprotobuf.html"><param name="ImageNumber" value="1"></OBJECT>
       <UL>
@@ -6157,7 +6161,9 @@
         <LI><OBJECT type="text/sitemap"><param name="Name" value="WindowsFD"><param name="Local" value="classos_1_1WindowsFD.html#a3436f11ccbb859379717ac91e96f7144"><param name="ImageNumber" value="11"></OBJECT>
         <LI><OBJECT type="text/sitemap"><param name="Name" value="WindowsFD"><param name="Local" value="classos_1_1WindowsFD.html#a79c98e3c78c0a7155a8ed9f42832fd5d"><param name="ImageNumber" value="11"></OBJECT>
         <LI><OBJECT type="text/sitemap"><param name="Name" value="~WindowsFD"><param name="Local" value="classos_1_1WindowsFD.html#ad2ce21d9f77710472e19843e3e86343e"><param name="ImageNumber" value="11"></OBJECT>
+        <LI><OBJECT type="text/sitemap"><param name="Name" value="assign_iocp"><param name="Local" value="classos_1_1WindowsFD.html#a1a9c96c20213e1b94ba8dcc1bb059163"><param name="ImageNumber" value="11"></OBJECT>
         <LI><OBJECT type="text/sitemap"><param name="Name" value="crt"><param name="Local" value="classos_1_1WindowsFD.html#a94b69cae4edb8f3549845fbfa0355b7c"><param name="ImageNumber" value="11"></OBJECT>
+        <LI><OBJECT type="text/sitemap"><param name="Name" value="get_iocp"><param name="Local" value="classos_1_1WindowsFD.html#a380eb8d9b7bc0e6b3bfae0e8e9c6bb0f"><param name="ImageNumber" value="11"></OBJECT>
         <LI><OBJECT type="text/sitemap"><param name="Name" value="is_overlapped"><param name="Local" value="classos_1_1WindowsFD.html#a4dce5dbc3d019589b4b61d6d17e1da45"><param name="ImageNumber" value="11"></OBJECT>
         <LI><OBJECT type="text/sitemap"><param name="Name" value="is_valid"><param name="Local" value="classos_1_1WindowsFD.html#ab961444eec07c587c9a67122daf4fd33"><param name="ImageNumber" value="11"></OBJECT>
         <LI><OBJECT type="text/sitemap"><param name="Name" value="operator HANDLE"><param name="Local" value="classos_1_1WindowsFD.html#a8ba56c5251264ab13aeaaa34cde39bdb"><param name="ImageNumber" value="11"></OBJECT>
@@ -6166,6 +6172,7 @@
         <LI><OBJECT type="text/sitemap"><param name="Name" value="operator="><param name="Local" value="classos_1_1WindowsFD.html#ab780d87119c772425aa855260056d1a1"><param name="ImageNumber" value="11"></OBJECT>
         <LI><OBJECT type="text/sitemap"><param name="Name" value="operator="><param name="Local" value="classos_1_1WindowsFD.html#a057780cfa5e1cc2fa84543a6f9b6bca0"><param name="ImageNumber" value="11"></OBJECT>
         <LI><OBJECT type="text/sitemap"><param name="Name" value="type"><param name="Local" value="classos_1_1WindowsFD.html#a3ce17a730ace5352a1fc6d49f8336d52"><param name="ImageNumber" value="11"></OBJECT>
+        <LI><OBJECT type="text/sitemap"><param name="Name" value="dup"><param name="Local" value="classos_1_1WindowsFD.html#ae8d4fd38b52ea9f38605f46195fd040b"><param name="ImageNumber" value="11"></OBJECT>
         <LI><OBJECT type="text/sitemap"><param name="Name" value="operator!="><param name="Local" value="classos_1_1WindowsFD.html#a342803d2a16f81ca20f0e0c1c2e598d0"><param name="ImageNumber" value="11"></OBJECT>
         <LI><OBJECT type="text/sitemap"><param name="Name" value="operator!="><param name="Local" value="classos_1_1WindowsFD.html#ab72f13c82b5f2fb8a646c5d0d50736e7"><param name="ImageNumber" value="11"></OBJECT>
         <LI><OBJECT type="text/sitemap"><param name="Name" value="operator&lt;"><param name="Local" value="classos_1_1WindowsFD.html#a64a9d1d43e26808ec565056c183ae56f"><param name="ImageNumber" value="11"></OBJECT>
@@ -6646,6 +6653,9 @@
           <LI><OBJECT type="text/sitemap"><param name="Name" value="type"><param name="Local" value="structprocess_1_1internal_1_1wrap_3_01Future_3_01X_01_4_01_4.html#a4d8096a41c5c51b168a4bac851ae065e"><param name="ImageNumber" value="11"></OBJECT>
           </UL>
         </UL>
+      <LI><OBJECT type="text/sitemap"><param name="Name" value="io"><param name="Local" value="namespaceprocess_1_1io.html"><param name="ImageNumber" value="1"></OBJECT>
+        <UL>
+        </UL>
       <LI><OBJECT type="text/sitemap"><param name="Name" value="metrics"><param name="Local" value="namespaceprocess_1_1metrics.html"><param name="ImageNumber" value="1"></OBJECT>
         <UL>
         <LI><OBJECT type="text/sitemap"><param name="Name" value="internal"><param name="Local" value="namespaceprocess_1_1metrics_1_1internal.html"><param name="ImageNumber" value="1"></OBJECT>
@@ -6853,6 +6863,16 @@
           <LI><OBJECT type="text/sitemap"><param name="Name" value="size"><param name="Local" value="classprocess_1_1network_1_1Address.html#a0008f4285e960406a0e2e6ec96f875ad"><param name="ImageNumber" value="11"></OBJECT>
           </UL>
         </UL>
+      <LI><OBJECT type="text/sitemap"><param name="Name" value="windows"><param name="Local" value="namespaceprocess_1_1windows.html"><param name="ImageNumber" value="1"></OBJECT>
+        <UL>
+        <LI><OBJECT type="text/sitemap"><param name="Name" value="EventLoop"><param name="Local" value="classprocess_1_1windows_1_1EventLoop.html"><param name="ImageNumber" value="1"></OBJECT>
+          <UL>
+          <LI><OBJECT type="text/sitemap"><param name="Name" value="launchTimer"><param name="Local" value="classprocess_1_1windows_1_1EventLoop.html#a006cb0c8efb7aaadadf0a692d9c2659a"><param name="ImageNumber" value="11"></OBJECT>
+          <LI><OBJECT type="text/sitemap"><param name="Name" value="registerHandle"><param name="Local" value="classprocess_1_1windows_1_1EventLoop.html#a832a73998bb3b26b7caa770ceef38827"><param name="ImageNumber" value="11"></OBJECT>
+          <LI><OBJECT type="text/sitemap"><param name="Name" value="run"><param name="Local" value="classprocess_1_1windows_1_1EventLoop.html#a2578b5fad0eb039f995955c798310c86"><param name="ImageNumber" value="11"></OBJECT>
+          <LI><OBJECT type="text/sitemap"><param name="Name" value="stop"><param name="Local" value="classprocess_1_1windows_1_1EventLoop.html#a8a07fc602e31875e6cbcaeac8008f09a"><param name="ImageNumber" value="11"></OBJECT>
+          </UL>
+        </UL>
       <LI><OBJECT type="text/sitemap"><param name="Name" value="_Deferred"><param name="Local" value="structprocess_1_1__Deferred.html"><param name="ImageNumber" value="1"></OBJECT>
         <UL>
         <LI><OBJECT type="text/sitemap"><param name="Name" value="operator Deferred&lt; void"><param name="Local" value="structprocess_1_1__Deferred.html#a60f19ff0e320b6a07d749aa681153af9"><param name="ImageNumber" value="11"></OBJECT>
@@ -9631,6 +9651,7 @@
         </UL>
       </UL>
     <LI><OBJECT type="text/sitemap"><param name="Name" value="process::EventLoop"><param name="Local" value="classprocess_1_1EventLoop.html"><param name="ImageNumber" value="11"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Name" value="process::windows::EventLoop"><param name="Local" value="classprocess_1_1windows_1_1EventLoop.html"><param name="ImageNumber" value="11"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Name" value="process::EventQueue"><param name="Local" value="classprocess_1_1EventQueue.html"><param name="ImageNumber" value="11"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Name" value="process::EventVisitor"><param name="Local" value="structprocess_1_1EventVisitor.html"><param name="ImageNumber" value="11"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Name" value="os::Exec"><param name="Local" value="structos_1_1Exec.html"><param name="ImageNumber" value="11"></OBJECT>
@@ -10353,8 +10374,8 @@
       </UL>
     <LI><OBJECT type="text/sitemap"><param name="Name" value="protobuf::internal::Read&lt; T &gt;"><param name="Local" value="structprotobuf_1_1internal_1_1Read.html"><param name="ImageNumber" value="11"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Name" value="protobuf::internal::Read&lt; google::protobuf::RepeatedPtrField&lt; T &gt; &gt;"><param name="Local" value="structprotobuf_1_1internal_1_1Read_3_01google_1_1protobuf_1_1RepeatedPtrField_3_01T_01_4_01_4.html"><param name="ImageNumber" value="11"></OBJECT>
-    <LI><OBJECT type="text/sitemap"><param name="Name" value="mesos::log::Log::Reader"><param name="Local" value="classmesos_1_1log_1_1Log_1_1Reader.html"><param name="ImageNumber" value="11"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Name" value="mesos::internal::recordio::Reader&lt; T &gt;"><param name="Local" value="classmesos_1_1internal_1_1recordio_1_1Reader.html"><param name="ImageNumber" value="11"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Name" value="mesos::log::Log::Reader"><param name="Local" value="classmesos_1_1log_1_1Log_1_1Reader.html"><param name="ImageNumber" value="11"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Name" value="process::http::Pipe::Reader"><param name="Local" value="classprocess_1_1http_1_1Pipe_1_1Reader.html"><param name="ImageNumber" value="11"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Name" value="process::ReadWriteLock"><param name="Local" value="classprocess_1_1ReadWriteLock.html"><param name="ImageNumber" value="11"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Name" value="mesos::internal::slave::Slave::RecoveryInfo"><param name="Local" value="structmesos_1_1internal_1_1slave_1_1Slave_1_1RecoveryInfo.html"><param name="ImageNumber" value="11"></OBJECT>
@@ -10366,15 +10387,15 @@
         <LI><OBJECT type="text/sitemap"><param name="Name" value="JSON::Protobuf"><param name="Local" value="structJSON_1_1Protobuf.html"><param name="ImageNumber" value="11"></OBJECT>
         </UL>
       </UL>
+    <LI><OBJECT type="text/sitemap"><param name="Name" value="mesos::internal::master::Registrar"><param name="Local" value="classmesos_1_1internal_1_1master_1_1Registrar.html"><param name="ImageNumber" value="1"></OBJECT>
+      <UL>
+      <LI><OBJECT type="text/sitemap"><param name="Name" value="mesos::internal::tests::MockRegistrar"><param name="Local" value="classmesos_1_1internal_1_1tests_1_1MockRegistrar.html"><param name="ImageNumber" value="11"></OBJECT>
+      </UL>
     <LI><OBJECT type="text/sitemap"><param name="Name" value="mesos::resource_provider::Registrar"><param name="Local" value="classmesos_1_1resource__provider_1_1Registrar.html"><param name="ImageNumber" value="1"></OBJECT>
       <UL>
       <LI><OBJECT type="text/sitemap"><param name="Name" value="mesos::resource_provider::GenericRegistrar"><param name="Local" value="classmesos_1_1resource__provider_1_1GenericRegistrar.html"><param name="ImageNumber" value="11"></OBJECT>
       <LI><OBJECT type="text/sitemap"><param name="Name" value="mesos::resource_provider::MasterRegistrar"><param name="Local" value="classmesos_1_1resource__provider_1_1MasterRegistrar.html"><param name="ImageNumber" value="11"></OBJECT>
       </UL>
-    <LI><OBJECT type="text/sitemap"><param name="Name" value="mesos::internal::master::Registrar"><param name="Local" value="classmesos_1_1internal_1_1master_1_1Registrar.html"><param name="ImageNumber" value="1"></OBJECT>
-      <UL>
-      <LI><OBJECT type="text/sitemap"><param name="Name" value="mesos::internal::tests::MockRegistrar"><param name="Local" value="classmesos_1_1internal_1_1tests_1_1MockRegistrar.html"><param name="ImageNumber" value="11"></OBJECT>
-      </UL>
     <LI><OBJECT type="text/sitemap"><param name="Name" value="mesos::internal::log::Replica"><param name="Local" value="classmesos_1_1internal_1_1log_1_1Replica.html"><param name="ImageNumber" value="11"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Name" value="process::http::Request"><param name="Local" value="structprocess_1_1http_1_1Request.html"><param name="ImageNumber" value="11"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Name" value="mesos::internal::RequestMediaTypes"><param name="Local" value="structmesos_1_1internal_1_1RequestMediaTypes.html"><param name="ImageNumber" value="11"></OBJECT>
@@ -10489,9 +10510,9 @@
       <UL>
       <LI><OBJECT type="text/sitemap"><param name="Name" value="SharedHandle"><param name="Local" value="classSharedHandle.html"><param name="ImageNumber" value="11"></OBJECT>
       </UL>
-    <LI><OBJECT type="text/sitemap"><param name="Name" value="mesos::internal::tests::cluster::Slave"><param name="Local" value="classmesos_1_1internal_1_1tests_1_1cluster_1_1Slave.html"><param name="ImageNumber" value="11"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Name" value="mesos::internal::master::Slave"><param name="Local" value="structmesos_1_1internal_1_1master_1_1Slave.html"><param name="ImageNumber" value="11"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Name" value="mesos::internal::master::allocator::internal::HierarchicalAllocatorProcess::Slave"><param name="Local" value="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess_1_1Slave.html"><param name="ImageNumber" value="11"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Name" value="mesos::internal::tests::cluster::Slave"><param name="Local" value="classmesos_1_1internal_1_1tests_1_1cluster_1_1Slave.html"><param name="ImageNumber" value="11"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Name" value="mesos::internal::slave::state::SlaveState"><param name="Local" value="structmesos_1_1internal_1_1slave_1_1state_1_1SlaveState.html"><param name="ImageNumber" value="11"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Name" value="process::network::internal::Socket&lt; AddressType &gt;"><param name="Local" value="classprocess_1_1network_1_1internal_1_1Socket.html"><param name="ImageNumber" value="11"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Name" value="process::network::internal::Socket&lt; inet::Address &gt;"><param name="Local" value="classprocess_1_1network_1_1internal_1_1Socket.html"><param name="ImageNumber" value="11"></OBJECT>
@@ -10503,14 +10524,14 @@
       <LI><OBJECT type="text/sitemap"><param name="Name" value="mesos::internal::master::allocator::RandomSorter"><param name="Local" value="classmesos_1_1internal_1_1master_1_1allocator_1_1RandomSorter.html"><param name="ImageNumber" value="11"></OBJECT>
       </UL>
     <LI><OBJECT type="text/sitemap"><param name="Name" value="os::Stack"><param name="Local" value="classos_1_1Stack.html"><param name="ImageNumber" value="11"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Name" value="mesos::internal::StatusUpdateManagerProcess&lt; IDType, CheckpointType, UpdateType &gt;::State"><param name="Local" value="structmesos_1_1internal_1_1StatusUpdateManagerProcess_1_1State.html"><param name="ImageNumber" value="11"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Name" value="mesos::internal::slave::state::State"><param name="Local" value="structmesos_1_1internal_1_1slave_1_1state_1_1State.html"><param name="ImageNumber" value="11"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Name" value="mesos::state::State"><param name="Local" value="classmesos_1_1state_1_1State.html"><param name="ImageNumber" value="1"></OBJECT>
       <UL>
       <LI><OBJECT type="text/sitemap"><param name="Name" value="mesos::state::protobuf::State"><param name="Local" value="classmesos_1_1state_1_1protobuf_1_1State.html"><param name="ImageNumber" value="11"></OBJECT>
       </UL>
-    <LI><OBJECT type="text/sitemap"><param name="Name" value="mesos::internal::StatusUpdateManagerProcess&lt; IDType, CheckpointType, UpdateType &gt;::State"><param name="Local" value="structmesos_1_1internal_1_1StatusUpdateManagerProcess_1_1State.html"><param name="ImageNumber" value="11"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Name" value="mesos::internal::StatusUpdateManagerProcess&lt; IDType, CheckpointType, UpdateType &gt;::StatusUpdateStream::State"><param name="Local" value="structmesos_1_1internal_1_1StatusUpdateManagerProcess_1_1StatusUpdateStream_1_1State.html"><param name="ImageNumber" value="11"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Name" value="mesos::internal::log::Storage::State"><param name="Local" value="structmesos_1_1internal_1_1log_1_1Storage_1_1State.html"><param name="ImageNumber" value="11"></OBJECT>
-    <LI><OBJECT type="text/sitemap"><param name="Name" value="mesos::internal::slave::state::State"><param name="Local" value="structmesos_1_1internal_1_1slave_1_1state_1_1State.html"><param name="ImageNumber" value="11"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Name" value="process::StateMachine&lt; State &gt;"><param name="Local" value="classprocess_1_1StateMachine.html"><param name="ImageNumber" value="11"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Name" value="static_visitor"><param name="ImageNumber" value="1"></OBJECT>
       <UL>
@@ -11109,15 +11130,15 @@
       </UL>
     <LI><OBJECT type="text/sitemap"><param name="Name" value="cgroups::blkio::Value"><param name="Local" value="structcgroups_1_1blkio_1_1Value.html"><param name="ImageNumber" value="11"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Name" value="process::TimeSeries&lt; T &gt;::Value"><param name="Local" value="structprocess_1_1TimeSeries_1_1Value.html"><param name="ImageNumber" value="11"></OBJECT>
-    <LI><OBJECT type="text/sitemap"><param name="Name" value="Jvm::Variable&lt; T, name, signature &gt;"><param name="Local" value="classJvm_1_1Variable.html"><param name="ImageNumber" value="11"></OBJECT>
-    <LI><OBJECT type="text/sitemap"><param name="Name" value="mesos::state::Variable"><param name="Local" value="classmesos_1_1state_1_1Variable.html"><param name="ImageNumber" value="11"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Name" value="mesos::state::protobuf::Variable&lt; T &gt;"><param name="Local" value="classmesos_1_1state_1_1protobuf_1_1Variable.html"><param name="ImageNumber" value="11"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Name" value="mesos::state::Variable"><param name="Local" value="classmesos_1_1state_1_1Variable.html"><param name="ImageNumber" value="11"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Name" value="Jvm::Variable&lt; T, name, signature &gt;"><param name="Local" value="classJvm_1_1Variable.html"><param name="ImageNumber" value="11"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Name" value="Jvm::Variable&lt; org::apache::zookeeper::server::SessionTracker, ZOOKEEPERSERVER_SESSIONTRACKER, ZOOKEEPERSERVER_SESSIONTRACKER_SIGNATURE &gt;"><param name="Local" value="classJvm_1_1Variable.html"><param name="ImageNumber" value="11"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Name" value="Variant&lt; T, Ts &gt;"><param name="Local" value="classVariant.html"><param name="ImageNumber" value="11"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Name" value="Variant"><param name="ImageNumber" value="1"></OBJECT>
       <UL>
       <LI><OBJECT type="text/sitemap"><param name="Name" value="JSON::Value"><param name="Local" value="structJSON_1_1Value.html"><param name="ImageNumber" value="11"></OBJECT>
       </UL>
-    <LI><OBJECT type="text/sitemap"><param name="Name" value="Variant&lt; T, Ts &gt;"><param name="Local" value="classVariant.html"><param name="ImageNumber" value="11"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Name" value="Variant&lt; check::Command, check::Http, check::Tcp &gt;"><param name="Local" value="classVariant.html"><param name="ImageNumber" value="11"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Name" value="Variant&lt; runtime::Plain, runtime::Docker, runtime::Nested &gt;"><param name="Local" value="classVariant.html"><param name="ImageNumber" value="11"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Name" value="Variant&lt; unix::Address, inet4::Address, inet6::Address &gt;"><param name="Local" value="classVariant.html"><param name="ImageNumber" value="1"></OBJECT>
@@ -11138,8 +11159,8 @@
     <LI><OBJECT type="text/sitemap"><param name="Name" value="os::WindowsFD"><param name="Local" value="classos_1_1WindowsFD.html"><param name="ImageNumber" value="11"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Name" value="process::internal::wrap&lt; T &gt;"><param name="Local" value="structprocess_1_1internal_1_1wrap.html"><param name="ImageNumber" value="11"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Name" value="process::internal::wrap&lt; Future&lt; X &gt; &gt;"><param name="Local" value="structprocess_1_1internal_1_1wrap_3_01Future_3_01X_01_4_01_4.html"><param name="ImageNumber" value="11"></OBJECT>
-    <LI><OBJECT type="text/sitemap"><param name="Name" value="process::http::Pipe::Writer"><param name="Local" value="classprocess_1_1http_1_1Pipe_1_1Writer.html"><param name="ImageNumber" value="11"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Name" value="mesos::log::Log::Writer"><param name="Local" value="classmesos_1_1log_1_1Log_1_1Writer.html"><param name="ImageNumber" value="11"></OBJECT>
+    <LI><OBJECT type="text/sitemap"><param name="Name" value="process::http::Pipe::Writer"><param name="Local" value="classprocess_1_1http_1_1Pipe_1_1Writer.html"><param name="ImageNumber" value="11"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Name" value="JSON::WriterProxy"><param name="Local" value="classJSON_1_1WriterProxy.html"><param name="ImageNumber" value="11"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Name" value="process::http::header::WWWAuthenticate"><param name="Local" value="classprocess_1_1http_1_1header_1_1WWWAuthenticate.html"><param name="ImageNumber" value="11"></OBJECT>
     <LI><OBJECT type="text/sitemap"><param name="Name" value="ZooKeeper"><param name="Local" value="classZooKeeper.html"><param name="ImageNumber" value="11"></OBJECT>
@@ -12586,7 +12607,9 @@
               </UL>
             <LI><OBJECT type="text/sitemap"><param name="Name" value="io.hpp"><param name="Local" value="3rdparty_2libprocess_2include_2process_2io_8hpp.html"><param name="ImageNumber" value="1"></OBJECT>
               <UL>
+              <LI><OBJECT type="text/sitemap"><param name="Name" value="is_async"><param name="Local" value="3rdparty_2libprocess_2include_2process_2io_8hpp.html#ada6541d78cad2ecc225be8a26662c748"><param name="ImageNumber" value="11"></OBJECT>
               <LI><OBJECT type="text/sitemap"><param name="Name" value="poll"><param name="Local" value="3rdparty_2libprocess_2include_2process_2io_8hpp.html#af71c45e0a85e21f6b39060f4e716cebf"><param name="ImageNumber" value="11"></OBJECT>
+              <LI><OBJECT type="text/sitemap"><param name="Name" value="prepare_async"><param name="Local" value="3rdparty_2libprocess_2include_2process_2io_8hpp.html#a9db94d84fb44b21fb669ade7c6a82114"><param name="ImageNumber" value="11"></OBJECT>
               <LI><OBJECT type="text/sitemap"><param name="Name" value="read"><param name="Local" value="3rdparty_2libprocess_2include_2process_2io_8hpp.html#a4c34d22e475e29f12ac739921dcc580f"><param name="ImageNumber" value="11"></OBJECT>
               <LI><OBJECT type="text/sitemap"><param name="Name" value="read"><param name="Local" value="3rdparty_2libprocess_2include_2process_2io_8hpp.html#ad1290a283a4d16068acfef3903bfd88b"><param name="ImageNumber" value="11"></OBJECT>
               <LI><OBJECT type="text/sitemap"><param name="Name" value="redirect"><param name="Local" value="3rdparty_2libprocess_2include_2process_2io_8hpp.html#ab9c4a52a88fcc9983438e391643424ca"><param name="ImageNumber" value="11"></OBJECT>
@@ -13198,7 +13221,7 @@
                 <LI><OBJECT type="text/sitemap"><param name="Name" value="p9999"><param name="Local" value="structprocess_1_1Statistics.html#a44d4be6321166bda0dfb11463a60f849"><param name="ImageNumber" value="11"></OBJECT>
                 </UL>
               </UL>
-            <LI><OBJECT type="text/sitemap"><param name="Name" value="subprocess.hpp"><param name="Local" value="subprocess_8hpp.html"><param name="ImageNumber" value="1"></OBJECT>
+            <LI><OBJECT type="text/sitemap"><param name="Name" value="subprocess.hpp"><param name="Local" value="include_2process_2subprocess_8hpp.html"><param name="ImageNumber" value="1"></OBJECT>
               <UL>
               <LI><OBJECT type="text/sitemap"><param name="Name" value="Subprocess"><param name="Local" value="classprocess_1_1Subprocess.html"><param name="ImageNumber" value="1"></OBJECT>
                 <UL>
@@ -13279,10 +13302,10 @@
                 <UL>
                 <LI><OBJECT type="text/sitemap"><param name="Name" value="operator()"><param name="Local" value="classprocess_1_1Subprocess_1_1ChildHook.html#ae9a996c6b3aa1113709a3d5ceba37f2c"><param name="ImageNumber" value="11"></OBJECT>
                 </UL>
-              <LI><OBJECT type="text/sitemap"><param name="Name" value="InputFileDescriptors"><param name="Local" value="subprocess_8hpp.html#afc6611c4913642642277b44447a16e55"><param name="ImageNumber" value="11"></OBJECT>
-              <LI><OBJECT type="text/sitemap"><param name="Name" value="OutputFileDescriptors"><param name="Local" value="subprocess_8hpp.html#a882829822afa4f33b90aafc9c4ffa9af"><param name="ImageNumber" value="11"></OBJECT>
-              <LI><OBJECT type="text/sitemap"><param name="Name" value="subprocess"><param name="Local" value="subprocess_8hpp.html#a2d7e0a283bc0c9eca8a8b0532e026269"><param name="ImageNumber" value="11"></OBJECT>
-              <LI><OBJECT type="text/sitemap"><param name="Name" value="subprocess"><param name="Local" value="subprocess_8hpp.html#a0a748c548ad3a094196c98f00f9674cf"><param name="ImageNumber" value="11"></OBJECT>
+              <LI><OBJECT type="text/sitemap"><param name="Name" value="InputFileDescriptors"><param name="Local" value="include_2process_2subprocess_8hpp.html#afc6611c4913642642277b44447a16e55"><param name="ImageNumber" value="11"></OBJECT>
+              <LI><OBJECT type="text/sitemap"><param name="Name" value="OutputFileDescriptors"><param name="Local" value="include_2process_2subprocess_8hpp.html#a882829822afa4f33b90aafc9c4ffa9af"><param name="ImageNumber" value="11"></OBJECT>
+              <LI><OBJECT type="text/sitemap"><param name="Name" value="subprocess"><param name="Local" value="include_2process_2subprocess_8hpp.html#a2d7e0a283bc0c9eca8a8b0532e026269"><param name="ImageNumber" value="11"></OBJECT>
+              <LI><OBJECT type="text/sitemap"><param name="Name" value="subprocess"><param name="Local" value="include_2process_2subprocess_8hpp.html#a0a748c548ad3a094196c98f00f9674cf"><param name="ImageNumber" value="11"></OBJECT>
               </UL>
             <LI><OBJECT type="text/sitemap"><param name="Name" value="system.hpp"><param name="Local" value="system_8hpp.html"><param name="ImageNumber" value="11"></OBJECT>
               <UL>
@@ -13386,6 +13409,90 @@
           </UL>
         <LI><OBJECT type="text/sitemap"><param name="Name" value="src"><param name="Local" value="dir_01cbbd8dcbf9de3825992568658f467e.html"><param name="ImageNumber" value="1"></OBJECT>
           <UL>
+          <LI><OBJECT type="text/sitemap"><param name="Name" value="posix"><param name="Local" value="dir_0ac73505685689cb4a842e520ca4cca6.html"><param name="ImageNumber" value="1"></OBJECT>
+            <UL>
+            <LI><OBJECT type="text/sitemap"><param name="Name" value="libev"><param name="Local" value="dir_ecbc207ab261ae6376e9b7d1e9eba3c1.html"><param name="ImageNumber" value="1"></OBJECT>
+              <UL>
+              <LI><OBJECT type="text/sitemap"><param name="Name" value="libev.hpp"><param name="Local" value="libev_8hpp.html"><param name="ImageNumber" value="1"></OBJECT>
+                <UL>
+                <LI><OBJECT type="text/sitemap"><param name="Name" value="__in_event_loop__"><param name="Local" value="libev_8hpp.html#a8a6cf2ec36d767c973bd04779f513986"><param name="ImageNumber" value="11"></OBJECT>
+                <LI><OBJECT type="text/sitemap"><param name="Name" value="_run_in_event_loop"><param name="Local" value="libev_8hpp.html#ad224a6bc6e6b3ca551939fea690af936"><param name="ImageNumber" value="11"></OBJECT>
+                <LI><OBJECT type="text/sitemap"><param name="Name" value="run_in_event_loop"><param name="Local" value="libev_8hpp.html#abd611a6cc14dc5e3d73fad6c84268342"><param name="ImageNumber" value="11"></OBJECT>
+                <LI><OBJECT type="text/sitemap"><param name="Name" value="_in_event_loop_"><param name="Local" value="libev_8hpp.html#a3d7b11f4e8691d998daa100de16ed8bc"><param name="ImageNumber" value="11"></OBJECT>
+                <LI><OBJECT type="text/sitemap"><param name="Name" value="async_watcher"><param name="Local" value="libev_8hpp.html#abde24dee21e5f3c5110d36020c9f8d89"><param name="ImageNumber" value="11"></OBJECT>
+                <LI><OBJECT type="text/sitemap"><param name="Name" value="functions"><param name="Local" value="libev_8hpp.html#a2f79b2f1afbe2c85db95b8276735d861"><param name="ImageNumber" value="11"></OBJECT>
+                <LI><OBJECT type="text/sitemap"><param name="Name" value="loop"><param name="Local" value="libev_8hpp.html#a59c192ee8ea5abbbee1642957f47c92a"><param name="ImageNumber" value="11"></OBJECT>
+                <LI><OBJECT type="text/sitemap"><param name="Name" value="watchers"><param name="Local" value="libev_8hpp.html#a73ddff05d642ba235230804b85c7ee43"><param name="ImageNumber" value="11"></OBJECT>
+                <LI><OBJECT type="text/sitemap"><param name="Name" value="watchers_mutex"><param name="Local" value="libev_8hpp.html#ac2a375f1a48140736670146a43426b85"><param name="ImageNumber" value="11"></OBJECT>
+                </UL>
+              </UL>
+            <LI><OBJECT type="text/sitemap"><param name="Name" value="libevent"><param name="Local" value="dir_b2935a02400d93f2f95b894ab5508ef6.html"><param name="ImageNumber" value="1"></OBJECT>
+              <UL>
+              <LI><OBJECT type="text/sitemap"><param name="Name" value="libevent.hpp"><param name="Local" value="libevent_8hpp.html"><param name="ImageNumber" value="1"></OBJECT>
+                <UL>
+                <LI><OBJECT type="text/sitemap"><param name="Name" value="__in_event_loop__"><param name="Local" value="libevent_8hpp.html#a8a6cf2ec36d767c973bd04779f513986"><param name="ImageNumber" value="11"></OBJECT>
+                <LI><OBJECT type="text/sitemap"><param name="Name" value="EventLoopLogicFlow"><param name="Local" value="libevent_8hpp.html#af8d01fbc04e5157d594146e377243573"><param name="ImageNumber" value="1"></OBJECT>
+                  <UL>
+                  <LI><OBJECT type="text/sitemap"><param name="Name" value="ALLOW_SHORT_CIRCUIT"><param name="Local" value="libevent_8hpp.html#af8d01fbc04e5157d594146e377243573a240417b1e0b6d0ddcbe488f9b18f679c"><param name="ImageNumber" value="11"></OBJECT>
+                  <LI><OBJECT type="text/sitemap"><param name="Name" value="DISALLOW_SHORT_CIRCUIT"><param name="Local" value="libevent_8hpp.html#af8d01fbc04e5157d594146e377243573a22a3dd39a9c94dd501273e0a76806c41"><param name="ImageNumber" value="11"></OBJECT>
+                  </UL>
+                <LI><OBJECT type="text/sitemap"><param name="Name" value="run_in_event_loop"><param name="Local" value="libevent_8hpp.html#ad91a0486ed34c25dc10ba404f4a1fc9b"><param name="ImageNumber" value="11"></OBJECT>
+                <LI><OBJECT type="text/sitemap"><param name="Name" value="base"><param name="Local" value="libevent_8hpp.html#a373bd5e2bd8f2694e4589293af477854"><param name="ImageNumber" value="11"></OBJECT>
+                </UL>
+              <LI><OBJECT type="text/sitemap"><param name="Name" value="libevent_ssl_socket.hpp"><param name="Local" value="libevent__ssl__socket_8hpp.html"><param name="ImageNumber" value="11"></OBJECT>
+                <UL>
+                <LI><OBJECT type="text/sitemap"><param name="Name" value="LibeventSSLSocketImpl"><param name="Local" value="classprocess_1_1network_1_1internal_1_1LibeventSSLSocketImpl.html"><param name="ImageNumber" value="1"></OBJECT>
+                  <UL>
+                  <LI><OBJECT type="text/sitemap"><param name="Name" value="LibeventSSLSocketImpl"><param name="Local" value="classprocess_1_1network_1_1internal_1_1LibeventSSLSocketImpl.html#a8c1ea3c61d392c14a70d594c8e930df8"><param name="ImageNumber" value="11"></OBJECT>
+                  <LI><OBJECT type="text/sitemap"><param name="Name" value="~LibeventSSLSocketImpl"><param name="Local" value="classprocess_1_1network_1_1internal_1_1LibeventSSLSocketImpl.html#ad2077833906c7d37189588ff67b43a20"><param name="ImageNumber" value="11"></OBJECT>
+                  <LI><OBJECT type="text/sitemap"><param name="Name" value="accept"><param name="Local" value="classprocess_1_1network_1_1internal_1_1LibeventSSLSocketImpl.html#a5dd3f53871f2152a0092a222ff63a778"><param name="ImageNumber" value="11"></OBJECT>
+                  <LI><OBJECT type="text/sitemap"><param name="Name" value="connect"><param name="Local" value="classprocess_1_1network_1_1internal_1_1LibeventSSLSocketImpl.html#a4ee00c94cb838618b65c5f231e7c367a"><param name="ImageNumber" value="11"></OBJECT>
+                  <LI><OBJECT type="text/sitemap"><param name="Name" value="initialize"><param name="Local" value="classprocess_1_1network_1_1internal_1_1LibeventSSLSocketImpl.html#a0585a14478590e525165a418df7beb3a"><param name="ImageNumber" value="11"></OBJECT>
+                  <LI><OBJECT type="text/sitemap"><param name="Name" value="kind"><param name="Local" value="classprocess_1_1network_1_1internal_1_1LibeventSSLSocketImpl.html#ad0ecd3ed460c9cf93b32e4d68b0107e7"><param name="ImageNumber" value="11"></OBJECT>
+                  <LI><OBJECT type="text/sitemap"><param name="Name" value="listen"><param name="Local" value="classprocess_1_1network_1_1internal_1_1LibeventSSLSocketImpl.html#a107ac49390f671b4cd5d180e5bddb4ad"><param name="ImageNumber" value="11"></OBJECT>
+                  <LI><OBJECT type="text/sitemap"><param name="Name" value="recv"><param name="Local" value="classprocess_1_1network_1_1internal_1_1LibeventSSLSocketImpl.html#a25118017aa15a1ee25039e69fdfd8ea4"><param name="ImageNumber" value="11"></OBJECT>
+                  <LI><OBJECT type="text/sitemap"><param name="Name" value="send"><param name="Local" value="classprocess_1_1network_1_1internal_1_1LibeventSSLSocketImpl.html#a6c91fd87e95efe9c12fe77e02bf306da"><param name="ImageNumber" value="11"></OBJECT>
+                  <LI><OBJECT type="text/sitemap"><param name="Name" value="sendfile"><param name="Local" value="classprocess_1_1network_1_1internal_1_1LibeventSSLSocketImpl.html#a3ee2460274ef43b0665de263b08e3539"><param name="ImageNumber" value="11"></OBJECT>
+                  <LI><OBJECT type="text/sitemap"><param name="Name" value="shutdown"><param name="Local" value="classprocess_1_1network_1_1internal_1_1LibeventSSLSocketImpl.html#a5d1386c7494d6681a764ddf0cff19e40"><param name="ImageNumber" value="11"></OBJECT>
+                  </UL>
+                </UL>
+              </UL>
+            <LI><OBJECT type="text/sitemap"><param name="Name" value="subprocess.hpp"><param name="Local" value="src_2posix_2subprocess_8hpp.html"><param name="ImageNumber" value="1"></OBJECT>
+              <UL>
+              <LI><OBJECT type="text/sitemap"><param name="Name" value="childMain"><param name="Local" value="src_2posix_2subprocess_8hpp.html#a902e2646d88c41ce674a3009cafe0aad"><param name="ImageNumber" value="11"></OBJECT>
+              <LI><OBJECT type="text/sitemap"><param name="Name" value="cloexec"><param name="Local" value="src_2posix_2subprocess_8hpp.html#a345a534b82b79bf20333fb6faef43e93"><param name="ImageNumber" value="11"></OBJECT>
+              <LI><OBJECT type="text/sitemap"><param name="Name" value="cloneChild"><param name="Local" value="src_2posix_2subprocess_8hpp.html#afe2c3a3ffdd0ee6fda82e198ece80a37"><param name="ImageNumber" value="11"></OBJECT>
+              <LI><OBJECT type="text/sitemap"><param name="Name" value="defaultClone"><param name="Local" value="src_2posix_2subprocess_8hpp.html#af2f19b6f367cddc0c8283560a9cd9215"><param name="ImageNumber" value="11"></OBJECT>
+              </UL>
+            </UL>
+          <LI><OBJECT type="text/sitemap"><param name="Name" value="windows"><param name="Local" value="dir_4f303781ded361ff602a549327c53cc9.html"><param name="ImageNumber" value="1"></OBJECT>
+            <UL>
+            <LI><OBJECT type="text/sitemap"><param name="Name" value="event_loop.hpp"><param name="Local" value="windows_2event__loop_8hpp.html"><param name="ImageNumber" value="1"></OBJECT>
+              <UL>
+              <LI><OBJECT type="text/sitemap"><param name="Name" value="libwinio_loop"><param name="Local" value="windows_2event__loop_8hpp.html#a3b1f9b3719ea6358ad426ae31bc8eae6"><param name="ImageNumber" value="11"></OBJECT>
+              </UL>
+            <LI><OBJECT type="text/sitemap"><param name="Name" value="libwinio.hpp"><param name="Local" value="libwinio_8hpp.html"><param name="ImageNumber" value="1"></OBJECT>
+              <UL>
+              <LI><OBJECT type="text/sitemap"><param name="Name" value="EventLoop"><param name="Local" value="classprocess_1_1windows_1_1EventLoop.html"><param name="ImageNumber" value="1"></OBJECT>
+                <UL>
+                <LI><OBJECT type="text/sitemap"><param name="Name" value="launchTimer"><param name="Local" value="classprocess_1_1windows_1_1EventLoop.html#a006cb0c8efb7aaadadf0a692d9c2659a"><param name="ImageNumber" value="11"></OBJECT>
+                <LI><OBJECT type="text/sitemap"><param name="Name" value="registerHandle"><param name="Local" value="classprocess_1_1windows_1_1EventLoop.html#a832a73998bb3b26b7caa770ceef38827"><param name="ImageNumber" value="11"></OBJECT>
+                <LI><OBJECT type="text/sitemap"><param name="Name" value="run"><param name="Local" value="classprocess_1_1windows_1_1EventLoop.html#a2578b5fad0eb039f995955c798310c86"><param name="ImageNumber" value="11"></OBJECT>
+                <LI><OBJECT type="text/sitemap"><param name="Name" value="stop"><param name="Local" value="classprocess_1_1windows_1_1EventLoop.html#a8a07fc602e31875e6cbcaeac8008f09a"><param name="ImageNumber" value="11"></OBJECT>
+                </UL>
+              <LI><OBJECT type="text/sitemap"><param name="Name" value="accept"><param name="Local" value="libwinio_8hpp.html#a1f34e4ee3092afe93c37c170430c03f5"><param name="ImageNumber" value="11"></OBJECT>
+              <LI><OBJECT type="text/sitemap"><param name="Name" value="connect"><param name="Local" value="libwinio_8hpp.html#a5afdaeaeb57343d0aca728b74dcd3f71"><param name="ImageNumber" value="11"></OBJECT>
+              <LI><OBJECT type="text/sitemap"><param name="Name" value="read"><param name="Local" value="libwinio_8hpp.html#a7436ed89e84ff3415987de0ca9428d08"><param name="ImageNumber" value="11"></OBJECT>
+              <LI><OBJECT type="text/sitemap"><param name="Name" value="recv"><param name="Local" value="libwinio_8hpp.html#a37fde6f31c2f9838a18cf83c2c865134"><param name="ImageNumber" value="11"></OBJECT>
+              <LI><OBJECT type="text/sitemap"><param name="Name" value="send"><param name="Local" value="libwinio_8hpp.html#a04c64346155d34517acdf8b587162868"><param name="ImageNumber" value="11"></OBJECT>
+              <LI><OBJECT type="text/sitemap"><param name="Name" value="sendfile"><param name="Local" value="libwinio_8hpp.html#afc59f27e725b5feb12f76e1c008ba767"><param name="ImageNumber" value="11"></OBJECT>
+              <LI><OBJECT type="text/sitemap"><param name="Name" value="write"><param name="Local" value="libwinio_8hpp.html#a69a29846581bb7bb1084e9ee90cbe8e6"><param name="ImageNumber" value="11"></OBJECT>
+              </UL>
+            <LI><OBJECT type="text/sitemap"><param name="Name" value="subprocess.hpp"><param name="Local" value="src_2windows_2subprocess_8hpp.html"><param name="ImageNumber" value="1"></OBJECT>
+              <UL>
+              <LI><OBJECT type="text/sitemap"><param name="Name" value="createChildProcess"><param name="Local" value="src_2windows_2subprocess_8hpp.html#a32020f2bbbcc116f2e055e209b4b8ce7"><param name="ImageNumber" value="11"></OBJECT>
+              </UL>
+            </UL>
           <LI><OBJECT type="text/sitemap"><param name="Name" value="authenticator_manager.hpp"><param name="Local" value="authenticator__manager_8hpp.html"><param name="ImageNumber" value="11"></OBJECT>
             <UL>
             <LI><OBJECT type="text/sitemap"><param name="Name" value="AuthenticatorManager"><param name="Local" value="classprocess_1_1http_1_1authentication_1_1AuthenticatorManager.html"><param name="ImageNumber" value="1"></OBJECT>
@@ -13540,45 +13647,12 @@
               <LI><OBJECT type="text/sitemap"><param name="Name" value="handle"><param name="Local" value="classprocess_1_1HttpProxy.html#af7583014e65aee0dd1055f15463ea24b"><param name="ImageNumber" value="11"></OBJECT>
               </UL>
             </UL>
-          <LI><OBJECT type="text/sitemap"><param name="Name" value="libev.hpp"><param name="Local" value="libev_8hpp.html"><param name="ImageNumber" value="1"></OBJECT>
-            <UL>
-            <LI><OBJECT type="text/sitemap"><param name="Name" value="__in_event_loop__"><param name="Local" value="libev_8hpp.html#a8a6cf2ec36d767c973bd04779f513986"><param name="ImageNumber" value="11"></OBJECT>
-            <LI><OBJECT type="text/sitemap"><param name="Name" value="_run_in_event_loop"><param name="Local" value="libev_8hpp.html#ad224a6bc6e6b3ca551939fea690af936"><param name="ImageNumber" value="11"></OBJECT>
-            <LI><OBJECT type="text/sitemap"><param name="Name" value="run_in_event_loop"><param name="Local" value="libev_8hpp.html#abd611a6cc14dc5e3d73fad6c84268342"><param name="ImageNumber" value="11"></OBJECT>
-            <LI><OBJECT type="text/sitemap"><param name="Name" value="_in_event_loop_"><param name="Local" value="libev_8hpp.html#a3d7b11f4e8691d998daa100de16ed8bc"><param name="ImageNumber" value="11"></OBJECT>
-            <LI><OBJECT type="text/sitemap"><param name="Name" value="async_watcher"><param name="Local" value="libev_8hpp.html#abde24dee21e5f3c5110d36020c9f8d89"><param name="ImageNumber" value="11"></OBJECT>
-            <LI><OBJECT type="text/sitemap"><param name="Name" value="functions"><param name="Local" value="libev_8hpp.html#a2f79b2f1afbe2c85db95b8276735d861"><param name="ImageNumber" value="11"></OBJECT>
-            <LI><OBJECT type="text/sitemap"><param name="Name" value="loop"><param name="Local" value="libev_8hpp.html#a59c192ee8ea5abbbee1642957f47c92a"><param name="ImageNumber" value="11"></OBJECT>
-            <LI><OBJECT type="text/sitemap"><param name="Name" value="watchers"><param name="Local" value="libev_8hpp.html#a73ddff05d642ba235230804b85c7ee43"><param name="ImageNumber" value="11"></OBJECT>
-            <LI><OBJECT type="text/sitemap"><param name="Name" value="watchers_mutex"><param name="Local" value="libev_8hpp.html#ac2a375f1a48140736670146a43426b85"><param name="ImageNumber" value="11"></OBJECT>
-            </UL>
-          <LI><OBJECT type="text/sitemap"><param name="Name" value="libevent.hpp"><param name="Local" value="libevent_8hpp.html"><param name="ImageNumber" value="1"></OBJECT>
-            <UL>
-            <LI><OBJECT type="text/sitemap"><param name="Name" value="__in_event_loop__"><param name="Local" value="libevent_8hpp.html#a8a6cf2ec36d767c973bd04779f513986"><param name="ImageNumber" value="11"></OBJECT>
-            <LI><OBJECT type="text/sitemap"><param name="Name" value="EventLoopLogicFlow"><param name="Local" value="libevent_8hpp.html#af8d01fbc04e5157d594146e377243573"><param name="ImageNumber" value="1"></OBJECT>
-              <UL>
-              <LI><OBJECT type="text/sitemap"><param name="Name" value="ALLOW_SHORT_CIRCUIT"><param name="Local" value="libevent_8hpp.html#af8d01fbc04e5157d594146e377243573a240417b1e0b6d0ddcbe488f9b18f679c"><param name="ImageNumber" value="11"></OBJECT>
-              <LI><OBJECT type="text/sitemap"><param name="Name" value="DISALLOW_SHORT_CIRCUIT"><param name="Local" value="libevent_8hpp.html#af8d01fbc04e5157d594146e377243573a22a3dd39a9c94dd501273e0a76806c41"><param name="ImageNumber" value="11"></OBJECT>
-              </UL>
-            <LI><OBJECT type="text/sitemap"><param name="Name" value="run_in_event_loop"><param name="Local" value="libevent_8hpp.html#ad91a0486ed34c25dc10ba404f4a1fc9b"><param name="ImageNumber" value="11"></OBJECT>
-            <LI><OBJECT type="text/sitemap"><param name="Name" value="base"><param name="Local" value="libevent_8hpp.html#a373bd5e2bd8f2694e4589293af477854"><param name="ImageNumber" value="11"></OBJECT>
-            </UL>
-          <LI><OBJECT type="text/sitemap"><param name="Name" value="libevent_ssl_socket.hpp"><param name="Local" value="libevent__ssl__socket_8hpp.html"><param name="ImageNumber" value="11"></OBJECT>
+          <LI><OBJECT type="text/sitemap"><param name="Name" value="io_internal.hpp"><param name="Local" value="io__internal_8hpp.html"><param name="ImageNumber" value="1"></OBJECT>
             <UL>
-            <LI><OBJECT type="text/sitemap"><param name="Name" value="LibeventSSLSocketImpl"><param name="Local" value="classprocess_1_1network_1_1internal_1_1LibeventSSLSocketImpl.html"><param name="ImageNumber" value="1"></OBJECT>
-              <UL>
-              <LI><OBJECT type="text/sitemap"><param name="Name" value="LibeventSSLSocketImpl"><param name="Local" value="classprocess_1_1network_1_1internal_1_1LibeventSSLSocketImpl.html#a8c1ea3c61d392c14a70d594c8e930df8"><param name="ImageNumber" value="11"></OBJECT>
-              <LI><OBJECT type="text/sitemap"><param name="Name" value="~LibeventSSLSocketImpl"><param name="Local" value="classprocess_1_1network_1_1internal_1_1LibeventSSLSocketImpl.html#ad2077833906c7d37189588ff67b43a20"><param name="ImageNumber" value="11"></OBJECT>
-              <LI><OBJECT type="text/sitemap"><param name="Name" value="accept"><param name="Local" value="classprocess_1_1network_1_1internal_1_1LibeventSSLSocketImpl.html#a5dd3f53871f2152a0092a222ff63a778"><param name="ImageNumber" value="11"></OBJECT>
-              <LI><OBJECT type="text/sitemap"><param name="Name" value="connect"><param name="Local" value="classprocess_1_1network_1_1internal_1_1LibeventSSLSocketImpl.html#a4ee00c94cb838618b65c5f231e7c367a"><param name="ImageNumber" value="11"></OBJECT>
-              <LI><OBJECT type="text/sitemap"><param name="Name" value="initialize"><param name="Local" value="classprocess_1_1network_1_1internal_1_1LibeventSSLSocketImpl.html#a0585a14478590e525165a418df7beb3a"><param name="ImageNumber" value="11"></OBJECT>
-              <LI><OBJECT type="text/sitemap"><param name="Name" value="kind"><param name="Local" value="classprocess_1_1network_1_1internal_1_1LibeventSSLSocketImpl.html#ad0ecd3ed460c9cf93b32e4d68b0107e7"><param name="ImageNumber" value="11"></OBJECT>
-              <LI><OBJECT type="text/sitemap"><param name="Name" value="listen"><param name="Local" value="classprocess_1_1network_1_1internal_1_1LibeventSSLSocketImpl.html#a107ac49390f671b4cd5d180e5bddb4ad"><param name="ImageNumber" value="11"></OBJECT>
-              <LI><OBJECT type="text/sitemap"><param name="Name" value="recv"><param name="Local" value="classprocess_1_1network_1_1internal_1_1LibeventSSLSocketImpl.html#a25118017aa15a1ee25039e69fdfd8ea4"><param name="ImageNumber" value="11"></OBJECT>
-              <LI><OBJECT type="text/sitemap"><param name="Name" value="send"><param name="Local" value="classprocess_1_1network_1_1internal_1_1LibeventSSLSocketImpl.html#a6c91fd87e95efe9c12fe77e02bf306da"><param name="ImageNumber" value="11"></OBJECT>
-              <LI><OBJECT type="text/sitemap"><param name="Name" value="sendfile"><param name="Local" value="classprocess_1_1network_1_1internal_1_1LibeventSSLSocketImpl.html#a3ee2460274ef43b0665de263b08e3539"><param name="ImageNumber" value="11"></OBJECT>
-              <LI><OBJECT type="text/sitemap"><param name="Name" value="shutdown"><param name="Local" value="classprocess_1_1network_1_1internal_1_1LibeventSSLSocketImpl.html#a5d1386c7494d6681a764ddf0cff19e40"><param name="ImageNumber" value="11"></OBJECT>
-              </UL>
+            <LI><OBJECT type="text/sitemap"><param name="Name" value="is_async"><param name="Local" value="io__internal_8hpp.html#a2291f1f69f4bdf80f3b114c493eb1e37"><param name="ImageNumber" value="11"></OBJECT>
+            <LI><OBJECT type="text/sitemap"><param name="Name" value="prepare_async"><param name="Local" value="io__internal_8hpp.html#a9458b24220892124c2112b3fe85e585e"><param name="ImageNumber" value="11"></OBJECT>
+            <LI><OBJECT type="text/sitemap"><param name="Name" value="read"><param name="Local" value="io__internal_8hpp.html#ac0a90b8abf47098e5a57d90e744a42a8"><param name="ImageNumber" value="11"></OBJECT>
+            <LI><OBJECT type="text/sitemap"><param name="Name" value="write"><param name="Local" value="io__internal_8hpp.html#ab4ecbbe96ef3c0600060e16c47988798"><param name="ImageNumber" value="11"></OBJECT>
             </UL>
           <LI><OBJECT type="text/sitemap"><param name="Name" value="memory_profiler.hpp"><param name="Local" value="memory__profiler_8hpp.html"><param name="ImageNumber" value="11"></OBJECT>
             <UL>
@@ -13692,17 +13766,6 @@
               </UL>
             <LI><OBJECT type="text/sitemap"><param name="Name" value="socket_manager"><param name="Local" value="socket__manager_8hpp.html#a355bad70041c7d49455fb810578a72cf"><param name="ImageNumber" value="11"></OBJECT>
             </UL>
-          <LI><OBJECT type="text/sitemap"><param name="Name" value="subprocess_posix.hpp"><param name="Local" value="subprocess__posix_8hpp.html"><param name="ImageNumber" value="1"></OBJECT>
-            <UL>
-            <LI><OBJECT type="text/sitemap"><param name="Name" value="childMain"><param name="Local" value="subprocess__posix_8hpp.html#a902e2646d88c41ce674a3009cafe0aad"><param name="ImageNumber" value="11"></OBJECT>
-            <LI><OBJECT type="text/sitemap"><param name="Name" value="cloexec"><param name="Local" value="subprocess__posix_8hpp.html#a345a534b82b79bf20333fb6faef43e93"><param name="ImageNumber" value="11"></OBJECT>
-            <LI><OBJECT type="text/sitemap"><param name="Name" value="cloneChild"><param name="Local" value="subprocess__posix_8hpp.html#afe2c3a3ffdd0ee6fda82e198ece80a37"><param name="ImageNumber" value="11"></OBJECT>
-            <LI><OBJECT type="text/sitemap"><param name="Name" value="defaultClone"><param name="Local" value="subprocess__posix_8hpp.html#af2f19b6f367cddc0c8283560a9cd9215"><param name="ImageNumber" value="11"></OBJECT>
-            </UL>
-          <LI><OBJECT type="text/sitemap"><param name="Name" value="subprocess_windows.hpp"><param name="Local" value="subprocess__windows_8hpp.html"><param name="ImageNumber" value="1"></OBJECT>
-            <UL>
-            <LI><OBJECT type="text/sitemap"><param name="Name" value="createChildProcess"><param name="Local" value="subprocess__windows_8hpp.html#a32020f2bbbcc116f2e055e209b4b8ce7"><param name="ImageNumber" value="11"></OBJECT>
-            </UL>
           </UL>
         </UL>
       <LI><OBJECT type="text/sitemap"><param name="Name" value="stout"><param name="Local" value="dir_aa547de1d719d14adccfca1dfb1735b3.html"><param name="ImageNumber" value="1"></OBJECT>
@@ -14248,7 +14311,9 @@
                     <LI><OBJECT type="text/sitemap"><param name="Name" value="WindowsFD"><param name="Local" value="classos_1_1WindowsFD.html#a3436f11ccbb859379717ac91e96f7144"><param name="ImageNumber" value="11"></OBJECT>
                     <LI><OBJECT type="text/sitemap"><param name="Name" value="WindowsFD"><param name="Local" value="classos_1_1WindowsFD.html#a79c98e3c78c0a7155a8ed9f42832fd5d"><param name="ImageNumber" value="11"></OBJECT>
                     <LI><OBJECT type="text/sitemap"><param name="Name" value="~WindowsFD"><param name="Local" value="classos_1_1WindowsFD.html#ad2ce21d9f77710472e19843e3e86343e"><param name="ImageNumber" value="11"></OBJECT>
+                    <LI><OBJECT type="text/sitemap"><param name="Name" value="assign_iocp"><param name="Local" value="classos_1_1WindowsFD.html#a1a9c96c20213e1b94ba8dcc1bb059163"><param name="ImageNumber" value="11"></OBJECT>
                     <LI><OBJECT type="text/sitemap"><param name="Name" value="crt"><param name="Local" value="classos_1_1WindowsFD.html#a94b69cae4edb8f3549845fbfa0355b7c"><param name="ImageNumber" value="11"></OBJECT>
+                    <LI><OBJECT type="text/sitemap"><param name="Name" value="get_iocp"><param name="Local" value="classos_1_1WindowsFD.html#a380eb8d9b7bc0e6b3bfae0e8e9c6bb0f"><param name="ImageNumber" value="11"></OBJECT>
                     <LI><OBJECT type="text/sitemap"><param name="Name" value="is_overlapped"><param name="Local" value="classos_1_1WindowsFD.html#a4dce5dbc3d019589b4b61d6d17e1da45"><param name="ImageNumber" value="11"></OBJECT>
                     <LI><OBJECT type="text/sitemap"><param name="Name" value="is_valid"><param name="Local" value="classos_1_1WindowsFD.html#ab961444eec07c587c9a67122daf4fd33"><param name="ImageNumber" value="11"></OBJECT>
                     <LI><OBJECT type="text/sitemap"><param name="Name" value="operator HANDLE"><param name="Local" value="classos_1_1WindowsFD.html#a8ba56c5251264ab13aeaaa34cde39bdb"><param name="ImageNumber" value="11"></OBJECT>
@@ -14257,6 +14322,7 @@
                     <LI><OBJECT type="text/sitemap"><param name="Name" value="operator="><param name="Local" value="classos_1_1WindowsFD.html#ab780d87119c772425aa855260056d1a1"><param name="ImageNumber" value="11"></OBJECT>
                     <LI><OBJECT type="text/sitemap"><param name="Name" value="operator="><param name="Local" value="classos_1_1WindowsFD.html#a057780cfa5e1cc2fa84543a6f9b6bca0"><param name="ImageNumber" value="11"></OBJECT>
                     <LI><OBJECT type="text/sitemap"><param name="Name" value="type"><param name="Local" value="classos_1_1WindowsFD.html#a3ce17a730ace5352a1fc6d49f8336d52"><param name="ImageNumber" value="11"></OBJECT>
+                    <LI><OBJECT type="text/sitemap"><param name="Name" value="dup"><param name="Local" value="classos_1_1WindowsFD.html#ae8d4fd38b52ea9f38605f46195fd040b"><param name="ImageNumber" value="11"></OBJECT>
                     <LI><OBJECT type="text/sitemap"><param name="Name" value="operator!="><param name="Local" value="classos_1_1WindowsFD.html#a342803d2a16f81ca20f0e0c1c2e598d0"><param name="ImageNumber" value="11"></OBJECT>
                     <LI><OBJECT type="text/sitemap"><param name="Name" value="operator!="><param name="Local" value="classos_1_1WindowsFD.html#ab72f13c82b5f2fb8a646c5d0d50736e7"><param name="ImageNumber" value="11"></OBJECT>
                     <LI><OBJECT type="text/sitemap"><param name="Name" value="operator&lt;"><param name="Local" value="classos_1_1WindowsFD.html#a64a9d1d43e26808ec565056c183ae56f"><param name="ImageNumber" value="11"></OBJECT>
@@ -14917,6 +14983,7 @@
                 <LI><OBJECT type="text/sitemap"><param name="Name" value="unsetenv"><param name="Local" value="windows_2os_8hpp.html#a7471e14f4cbd7e23b5daa21e556f4eb5"><param name="ImageNumber" value="11"></OBJECT>
                 <LI><OBJECT type="text/sitemap"><param name="Name" value="var"><param name="Local" value="windows_2os_8hpp.html#a547f04b42e472b2ff0070897010fac78"><param name="ImageNumber" value="11"></OBJECT>
                 <LI><OBJECT type="text/sitemap"><param name="Name" value="waitpid"><param name="Local" value="windows_2os_8hpp.html#a59caf358baf81de389c29d983b8e21ad"><param name="ImageNumber" value="11"></OBJECT>
+                <LI><OBJECT type="text/sitemap"><param name="Name" value="windows_to_unix_epoch"><param name="Local" value="windows_2os_8hpp.html#a1493e5fcc92753702d08b36881ee8f97"><param name="ImageNumber" value="11"></OBJECT>
                 </UL>
               </UL>
             <LI><OBJECT type="text/sitemap"><param name="Name" value="abort.hpp"><param name="Local" value="abort_8hpp.html"><param name="ImageNumber" value="1"></OBJECT>


[38/50] mesos-site git commit: Updated the website built from mesos SHA: 7c9c72d.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/docker__common_8hpp.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/docker__common_8hpp.html b/content/api/latest/c++/docker__common_8hpp.html
index 0807d17..84232e2 100644
--- a/content/api/latest/c++/docker__common_8hpp.html
+++ b/content/api/latest/c++/docker__common_8hpp.html
@@ -61,7 +61,7 @@
 <code>#include &lt;<a class="el" href="libprocess_2include_2process_2gtest_8hpp_source.html">process/gtest.hpp</a>&gt;</code><br />
 <code>#include &lt;<a class="el" href="3rdparty_2libprocess_2include_2process_2io_8hpp_source.html">process/io.hpp</a>&gt;</code><br />
 <code>#include &lt;<a class="el" href="owned_8hpp_source.html">process/owned.hpp</a>&gt;</code><br />
-<code>#include &lt;<a class="el" href="subprocess_8hpp_source.html">process/subprocess.hpp</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="include_2process_2subprocess_8hpp_source.html">process/subprocess.hpp</a>&gt;</code><br />
 <code>#include &lt;<a class="el" href="format_8hpp_source.html">stout/format.hpp</a>&gt;</code><br />
 <code>#include &lt;<a class="el" href="stout_2include_2stout_2gtest_8hpp_source.html">stout/gtest.hpp</a>&gt;</code><br />
 <code>#include &lt;<a class="el" href="lambda_8hpp_source.html">stout/lambda.hpp</a>&gt;</code><br />

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/docker__common_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/docker__common_8hpp_source.html b/content/api/latest/c++/docker__common_8hpp_source.html
index 4312ea4..41b47ea 100644
--- a/content/api/latest/c++/docker__common_8hpp_source.html
+++ b/content/api/latest/c++/docker__common_8hpp_source.html
@@ -52,7 +52,7 @@
 <div class="title">docker_common.hpp</div>  </div>
 </div><!--header-->
 <div class="contents">
-<a href="docker__common_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>&#160;<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>&#160;<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>&#160;<span class="comment">// distributed with this work for additional information</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<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>&#160;<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>&#160;<span class="comment">// &quot;License&quot;); you may not use this file except in compliance</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<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>&#160;<span class="comment">// di
 stributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<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>&#160;<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>&#160;<span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;</div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="preprocessor">#ifndef __TEST_DOCKER_COMMON_HPP__</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="preprocessor">#define __TEST_DOCKER_COMMON_HPP__</span></div><div c
 lass="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;</div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="future_8hpp.html">process/future.hpp</a>&gt;</span></div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="libprocess_2include_2process_2gtest_8hpp.html">process/gtest.hpp</a>&gt;</span></div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="3rdparty_2libprocess_2include_2process_2io_8hpp.html">process/io.hpp</a>&gt;</span></div><div class="line"><a name="l00025"></a><spa
 n class="lineno">   25</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="owned_8hpp.html">process/owned.hpp</a>&gt;</span></div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="subprocess_8hpp.html">process/subprocess.hpp</a>&gt;</span></div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;</div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="format_8hpp.html">stout/format.hpp</a>&gt;</span></div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="stout_2include_2stout_2gtest_8hpp.html">stout/gtest.hpp</a>&gt;</span></div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="lambd
 a_8hpp.html">stout/lambda.hpp</a>&gt;</span></div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="nothing_8hpp.html">stout/nothing.hpp</a>&gt;</span></div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="option_8hpp.html">stout/option.hpp</a>&gt;</span></div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="try_8hpp.html">stout/try.hpp</a>&gt;</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>&#160;<span class="preprocessor">#include &lt;<a class="code" href="mkdtemp_8hpp.html">stout/os/mkdtemp.hpp</a>&gt;</span></div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;</di
 v><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="docker_2docker_8hpp.html">docker/docker.hpp</a>&quot;</span></div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="src_2tests_2flags_8hpp.html">tests/flags.hpp</a>&quot;</span></div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;</div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacemesos.html">mesos</a> {</div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceinternal.html">internal</a> {</div><div class="line"><a name="l00043"></a><span class
 ="lineno">   43</span>&#160;<span class="keyword">namespace </span>tests {</div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;</div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;<span class="preprocessor">#ifdef __WINDOWS__</span></div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;<span class="comment">// The following image is the microsoft/nanoserver image with</span></div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;<span class="comment">// ContainerAdministrator as the default user. There are some permission bugs</span></div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;<span class="comment">// with accessing volume mounts in process (but not Hyper-V) isolation as</span></div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;<span class="comment">// the regular ContainerUser user, but accesing
  them as ContainerAdministrator</span></div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;<span class="comment">// works fine.</span></div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;<span class="keyword">static</span> constexpr <span class="keywordtype">char</span> DOCKER_TEST_IMAGE[] = <span class="stringliteral">&quot;akagup/nano-admin&quot;</span>;</div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;</div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;<span class="comment">// We use a custom HTTP(S) server here, because the official `microsoft/iis`</span></div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;<span class="comment">// HTTP server image is ~20x larger than this one, so pulling it takes too</span></div><div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;<span class="comment">// long. Th
 is server supports HTTP and HTTPS listening on port 80 and 443.</span></div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;<span class="comment">// For more information, see https://github.com/gupta-ak/https-server.</span></div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;<span class="keyword">static</span> constexpr <span class="keywordtype">char</span> DOCKER_HTTP_IMAGE[] = <span class="stringliteral">&quot;akagup/https-server&quot;</span>;</div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;<span class="keyword">static</span> constexpr <span class="keywordtype">char</span> DOCKER_HTTP_COMMAND[] = <span class="stringliteral">&quot;http.exe&quot;</span>;</div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;<span class="keyword">static</span> constexpr <span class="keywordtype">char</span> DOCKER_HTTPS_IMAGE[] = <span class="stringliteral">&quot;akagup/https-s
 erver&quot;</span>;</div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;<span class="keyword">static</span> constexpr <span class="keywordtype">char</span> DOCKER_HTTPS_COMMAND[] = <span class="stringliteral">&quot;http.exe&quot;</span>;</div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;<span class="keyword">static</span> constexpr <span class="keywordtype">char</span> DOCKER_TEST_IMAGE[] = <span class="stringliteral">&quot;alpine&quot;</span>;</div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;</div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;<span class="comment">// The HTTP server is netcat running on alpine.</span></div><div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;<span class="keyword">static</span
 > constexpr <span class="keywordtype">char</span> DOCKER_HTTP_IMAGE[] = <span class="stringliteral">&quot;alpine&quot;</span>;</div><div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;<span class="keyword">static</span> constexpr <span class="keywordtype">char</span> DOCKER_HTTP_COMMAND[] =</div><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;  <span class="stringliteral">&quot;nc -lk -p 80 -e echo -e \&quot;HTTP/1.1 200 OK\r\nContent-Length: 0\r\n\&quot;&quot;</span>;</div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;</div><div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;<span class="comment">// Refer to https://github.com/qianzhangxa/https-server for</span></div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;<span class="comment">// how the Docker image `zhq527725/https-server` works.</span></div><div class="line"><a name="l00071"></a
 ><span class="lineno">   71</span>&#160;<span class="keyword">static</span> constexpr <span class="keywordtype">char</span> DOCKER_HTTPS_IMAGE[] = <span class="stringliteral">&quot;zhq527725/https-server&quot;</span>;</div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;<span class="keyword">static</span> constexpr <span class="keywordtype">char</span> DOCKER_HTTPS_COMMAND[] = <span class="stringliteral">&quot;python https_server.py 443&quot;</span>;</div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;<span class="preprocessor">#endif // __WINDOWS__</span></div><div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;</div><div class="line"><a name="l00075"></a><span class="lineno"><a class="line" href="namespacemesos_1_1internal_1_1tests.html#a3e9b4c80f181d9d31576c268120dd49e">   75</a></span>&#160;constexpr <span class="keywordtype">char</span> <a class="code" href="namespacemesos_1_1internal_1_1test
 s.html#a3e9b4c80f181d9d31576c268120dd49e">DOCKER_IPv6_NETWORK</a>[] = <span class="stringliteral">&quot;mesos-docker-ip6-test&quot;</span>;</div><div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;</div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;</div><div class="line"><a name="l00078"></a><span class="lineno"><a class="line" href="namespacemesos_1_1internal_1_1tests.html#a15c592efe4e9ba851ddcf2c79f4b2dcf">   78</a></span>&#160;<span class="keyword">inline</span> <a class="code" href="classprocess_1_1Future.html">process::Future&lt;Nothing&gt;</a> <a class="code" href="namespacemesos_1_1internal_1_1tests.html#a15c592efe4e9ba851ddcf2c79f4b2dcf">pullDockerImage</a>(<span class="keyword">const</span> std::string&amp; imageName)</div><div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;{</div><div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;  <a class="code" href="classTry.
 html">Try&lt;process::Owned&lt;Docker&gt;</a>&gt; <a class="code" href="namespacedocker.html">docker</a> =</div><div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;    <a class="code" href="classDocker.html#a370c1d613e35cc8b8e393dc8c83876e6">Docker::create</a>(<a class="code" href="namespacemesos_1_1internal_1_1tests.html#af8289f648a916c3f66923867452c7b1b">tests::flags</a>.docker, <a class="code" href="namespacemesos_1_1internal_1_1tests.html#af8289f648a916c3f66923867452c7b1b">tests::flags</a>.docker_socket, <span class="keyword">false</span>);</div><div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;</div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;  <span class="keywordflow">if</span> (docker.isError()) {</div><div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="structprocess_1_1Failure.html">process::Failu
 re</a>(docker.error());</div><div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;  }</div><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;</div><div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;  <span class="keyword">const</span> <a class="code" href="classTry.html">Try&lt;std::string&gt;</a> directory = <a class="code" href="namespaceos.html#afe70fd86d13b8f10cafb222bb80adcf6">os::mkdtemp</a>();</div><div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;  <span class="keywordflow">if</span> (directory.isError()) {</div><div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="structprocess_1_1Failure.html">process::Failure</a>(docker.error());</div><div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;  }</div><div class="line"><a name="l00091"></a><span class="lineno
 ">   91</span>&#160;</div><div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;  <span class="keywordflow">return</span> docker.get()-&gt;pull(directory.get(), imageName)</div><div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;    .<a class="code" href="namespaceprocess_1_1internal.html#a7885011cf6470b707294a6ef4ec7a0a6">then</a>([]() {</div><div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;      <span class="comment">// `Docker::pull` returns a `Future&lt;Docker::Image`&gt;, but we only really</span></div><div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;      <span class="comment">// if the pull was successful, so we just return `Nothing` to match the</span></div><div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;      <span class="comment">// return type of `pullDockerImage`.</span></div><div class="line"><a name="l00097"></a><span class="lineno">
    97</span>&#160;      <span class="keywordflow">return</span> <a class="code" href="structNothing.html">Nothing</a>();</div><div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;    })</div><div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;    .onAny([directory]() -&gt; <a class="code" href="classprocess_1_1Future.html">process::Future&lt;Nothing&gt;</a> {</div><div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;      <a class="code" href="classTry.html">Try&lt;Nothing&gt;</a> <a class="code" href="namespaceos.html#a84298b990ad52dfd353358427b04ff3f">rmdir</a> = <a class="code" href="namespaceos.html#a84298b990ad52dfd353358427b04ff3f">os::rmdir</a>(directory.get());</div><div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;      <span class="keywordflow">if</span> (rmdir.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line">
 <a name="l00102"></a><span class="lineno">  102</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="structprocess_1_1Failure.html">process::Failure</a>(rmdir.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;      }</div><div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;      <span class="keywordflow">return</span> <a class="code" href="structNothing.html">Nothing</a>();</div><div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;    });</div><div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;}</div><div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;</div><div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;</div><div class="line"><a name="l00109"></a><span class="lineno"><a class="line" href="namespacemesos_1
 _1internal_1_1tests.html#a971a18f563bfbd01896a97a7a72ccde1">  109</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespacemesos_1_1internal_1_1tests.html#a971a18f563bfbd01896a97a7a72ccde1">createDockerIPv6UserNetwork</a>()</div><div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;{</div><div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;  <span class="comment">// Docker IPv6 is not supported on Windows, so no-op on that platform.</span></div><div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;  <span class="comment">// TODO(akagup): Remove the #ifdef when Windows supports IPv6 networks</span></div><div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;  <span class="comment">// in docker containers. See MESOS-8566.</span></div><div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;<span class="pre
 processor">#ifndef __WINDOWS__</span></div><div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;  <span class="comment">// Create a Docker user network with IPv6 enabled.</span></div><div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;  <a class="code" href="classTry.html">Try&lt;std::string&gt;</a> dockerCommand = <a class="code" href="namespacestrings.html#a7884a23bea2a6543b8a93ad48faabe0c">strings::format</a>(</div><div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;      <span class="stringliteral">&quot;docker network create --driver=bridge --ipv6 &quot;</span></div><div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;      <span class="stringliteral">&quot;--subnet=fd01::/64 %s&quot;</span>,</div><div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;      DOCKER_IPv6_NETWORK);</div><div class="line"><a name="l00120"></a><span class="lineno">  120</span>
 &#160;</div><div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;  <a class="code" href="classTry.html">Try&lt;process::Subprocess&gt;</a> s = <a class="code" href="namespaceprocess.html#a2d7e0a283bc0c9eca8a8b0532e026269">process::subprocess</a>(</div><div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;      dockerCommand.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>(),</div><div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;      <a class="code" href="classprocess_1_1Subprocess.html#a54793e9c516257d68776f63f0872c3c7">process::Subprocess::PATH</a>(<span class="stringliteral">&quot;/dev/null&quot;</span>),</div><div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;      <a class="code" href="classprocess_1_1Subprocess.html#a54793e9c516257d68776f63f0872c3c7">process::Subprocess::PATH</a>(<span class="stringliteral">&quot;/dev/null&quot;</span>),</div><
 div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;      <a class="code" href="classprocess_1_1Subprocess.html#a6af5024bd1932707893908fceb86ddad">process::Subprocess::PIPE</a>());</div><div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;</div><div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;  <a class="code" href="stout_2include_2stout_2gtest_8hpp.html#a0add664e84bbf99f845f1b715dd63f90">ASSERT_SOME</a>(s) &lt;&lt; <span class="stringliteral">&quot;Unable to create the Docker IPv6 network: &quot;</span></div><div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;                 &lt;&lt; <a class="code" href="namespacemesos_1_1internal_1_1tests.html#a3e9b4c80f181d9d31576c268120dd49e">DOCKER_IPv6_NETWORK</a>;</div><div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;</div><div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;  <a clas
 s="code" href="classprocess_1_1Future.html">process::Future&lt;std::string&gt;</a> err = <a class="code" href="namespaceprocess_1_1io.html#a4c34d22e475e29f12ac739921dcc580f">process::io::read</a>(s-&gt;<a class="code" href="classprocess_1_1Subprocess.html#a98180558f1427a64a03cf3f656310bc4">err</a>().<a class="code" href="classOption.html#a21358442c0fac1cc978a67a9a9089a79">get</a>());</div><div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;</div><div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;  <span class="comment">// Wait for the network to be created.</span></div><div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;  <a class="code" href="libprocess_2include_2process_2gtest_8hpp.html#a269c59ba4bb2bec7ac8e361e45f52d43">AWAIT_READY</a>(s-&gt;<a class="code" href="classprocess_1_1Subprocess.html#a3946c31d16c0625ea554d5216cd4fa3b">status</a>());</div><div class="line"><a name="l00134"></a><span class="li
 neno">  134</span>&#160;  <a class="code" href="libprocess_2include_2process_2gtest_8hpp.html#a269c59ba4bb2bec7ac8e361e45f52d43">AWAIT_READY</a>(err);</div><div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;</div><div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;  <a class="code" href="stout_2include_2stout_2gtest_8hpp.html#a0add664e84bbf99f845f1b715dd63f90">ASSERT_SOME</a>(s-&gt;<a class="code" href="classprocess_1_1Subprocess.html#a3946c31d16c0625ea554d5216cd4fa3b">status</a>().<a class="code" href="classprocess_1_1Future.html#aa78977d3b585a5f5ccd682c1e9e2ddc4">get</a>());</div><div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;  ASSERT_EQ(s-&gt;<a class="code" href="classprocess_1_1Subprocess.html#a3946c31d16c0625ea554d5216cd4fa3b">status</a>()-&gt;<a class="code" href="classOption.html#a21358442c0fac1cc978a67a9a9089a79">get</a>(), 0)</div><div class="line"><a name="l00138"></a><span class="lineno">
   138</span>&#160;    &lt;&lt; <span class="stringliteral">&quot;Unable to create the Docker IPv6 network &quot;</span></div><div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;    &lt;&lt; DOCKER_IPv6_NETWORK</div><div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;    &lt;&lt; <span class="stringliteral">&quot; : &quot;</span> &lt;&lt; err.<a class="code" href="classprocess_1_1Future.html#aa78977d3b585a5f5ccd682c1e9e2ddc4">get</a>();</div><div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;<span class="preprocessor">#endif // __WINDOWS__</span></div><div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;}</div><div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;</div><div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;</div><div class="line"><a name="l00145"></a><span class="lineno"><a class="line" href="namespacemesos_1_1internal
 _1_1tests.html#a4143a755ba48009f54529ab97cb3beb3">  145</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespacemesos_1_1internal_1_1tests.html#a4143a755ba48009f54529ab97cb3beb3">removeDockerIPv6UserNetwork</a>()</div><div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;{</div><div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;  <span class="comment">// Docker IPv6 is not supported on Windows, so no-op on that platform.</span></div><div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;  <span class="comment">// TODO(akagup): Remove the #ifdef when Windows supports IPv6 networks</span></div><div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;  <span class="comment">// in docker containers. See MESOS-8566.</span></div><div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;<span class="preprocessor"
 >#ifndef __WINDOWS__</span></div><div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;  <span class="comment">// Delete the Docker user network.</span></div><div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;  <a class="code" href="classTry.html">Try&lt;std::string&gt;</a> dockerCommand =</div><div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;    <a class="code" href="namespacestrings.html#a7884a23bea2a6543b8a93ad48faabe0c">strings::format</a>(<span class="stringliteral">&quot;docker network rm %s&quot;</span>, DOCKER_IPv6_NETWORK);</div><div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;</div><div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;  <a class="code" href="classTry.html">Try&lt;process::Subprocess&gt;</a> s = <a class="code" href="namespaceprocess.html#a2d7e0a283bc0c9eca8a8b0532e026269">subprocess</a>(</div><div class="line"><a name="l00156
 "></a><span class="lineno">  156</span>&#160;      dockerCommand.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>(),</div><div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;      <a class="code" href="classprocess_1_1Subprocess.html#a54793e9c516257d68776f63f0872c3c7">process::Subprocess::PATH</a>(<span class="stringliteral">&quot;/dev/null&quot;</span>),</div><div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;      <a class="code" href="classprocess_1_1Subprocess.html#a54793e9c516257d68776f63f0872c3c7">process::Subprocess::PATH</a>(<span class="stringliteral">&quot;/dev/null&quot;</span>),</div><div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;      <a class="code" href="classprocess_1_1Subprocess.html#a6af5024bd1932707893908fceb86ddad">process::Subprocess::PIPE</a>());</div><div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;</div><div class="lin
 e"><a name="l00161"></a><span class="lineno">  161</span>&#160;  <span class="comment">// This is best effort cleanup. In case of an error just a log an</span></div><div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;  <span class="comment">// error.</span></div><div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;  <a class="code" href="stout_2include_2stout_2gtest_8hpp.html#a0add664e84bbf99f845f1b715dd63f90">ASSERT_SOME</a>(s) &lt;&lt; <span class="stringliteral">&quot;Unable to delete the Docker IPv6 network: &quot;</span></div><div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;                 &lt;&lt; <a class="code" href="namespacemesos_1_1internal_1_1tests.html#a3e9b4c80f181d9d31576c268120dd49e">DOCKER_IPv6_NETWORK</a>;</div><div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;</div><div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;  <a class="cod
 e" href="classprocess_1_1Future.html">process::Future&lt;std::string&gt;</a> err = <a class="code" href="namespaceprocess_1_1io.html#a4c34d22e475e29f12ac739921dcc580f">process::io::read</a>(s-&gt;<a class="code" href="classprocess_1_1Subprocess.html#a98180558f1427a64a03cf3f656310bc4">err</a>().<a class="code" href="classOption.html#a21358442c0fac1cc978a67a9a9089a79">get</a>());</div><div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;</div><div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;  <span class="comment">// Wait for the network to be deleted.</span></div><div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;  <a class="code" href="libprocess_2include_2process_2gtest_8hpp.html#a269c59ba4bb2bec7ac8e361e45f52d43">AWAIT_READY</a>(s-&gt;<a class="code" href="classprocess_1_1Subprocess.html#a3946c31d16c0625ea554d5216cd4fa3b">status</a>());</div><div class="line"><a name="l00170"></a><span class="lineno">
   170</span>&#160;  <a class="code" href="libprocess_2include_2process_2gtest_8hpp.html#a269c59ba4bb2bec7ac8e361e45f52d43">AWAIT_READY</a>(err);</div><div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;</div><div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;  <a class="code" href="stout_2include_2stout_2gtest_8hpp.html#a0add664e84bbf99f845f1b715dd63f90">ASSERT_SOME</a>(s-&gt;<a class="code" href="classprocess_1_1Subprocess.html#a3946c31d16c0625ea554d5216cd4fa3b">status</a>().<a class="code" href="classprocess_1_1Future.html#aa78977d3b585a5f5ccd682c1e9e2ddc4">get</a>());</div><div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;  ASSERT_EQ(s-&gt;<a class="code" href="classprocess_1_1Subprocess.html#a3946c31d16c0625ea554d5216cd4fa3b">status</a>()-&gt;<a class="code" href="classOption.html#a21358442c0fac1cc978a67a9a9089a79">get</a>(), 0)</div><div class="line"><a name="l00174"></a><span class="lineno">  174<
 /span>&#160;    &lt;&lt; <span class="stringliteral">&quot;Unable to delete the Docker IPv6 network &quot;</span></div><div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;    &lt;&lt; DOCKER_IPv6_NETWORK</div><div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;    &lt;&lt; <span class="stringliteral">&quot; : &quot;</span> &lt;&lt; err.<a class="code" href="classprocess_1_1Future.html#aa78977d3b585a5f5ccd682c1e9e2ddc4">get</a>();</div><div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;<span class="preprocessor">#endif // __WINDOWS__</span></div><div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;}</div><div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;</div><div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;</div><div class="line"><a name="l00181"></a><span class="lineno"><a class="line" href="namespacemesos_1_1internal_1_1te
 sts.html#af386ecbbf46a9598c02450185b4ba3e2">  181</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespacemesos_1_1internal_1_1tests.html#af386ecbbf46a9598c02450185b4ba3e2">assertDockerKillStatus</a>(<a class="code" href="classprocess_1_1Future.html">process::Future</a>&lt;<a class="code" href="classOption.html">Option&lt;int&gt;</a>&gt;&amp; <a class="code" href="namespaceproc.html#a34396c6140a28f583dc13fee3c3c35d4">status</a>)</div><div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160;{</div><div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;<span class="preprocessor">#ifdef __WINDOWS__</span></div><div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;  <span class="comment">// On Windows, there is no standard exit code for determining if a process</span></div><div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;  <spa
 n class="comment">// as been killed. However, in Docker, it will not return 0.</span></div><div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;  <a class="code" href="libprocess_2include_2process_2gtest_8hpp.html#ae4d00c37c2287bce910fff6885429cfb">AWAIT_EXPECT_WEXITSTATUS_NE</a>(0, <a class="code" href="namespaceproc.html#a34396c6140a28f583dc13fee3c3c35d4">status</a>.get());</div><div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;  <a class="code" href="libprocess_2include_2process_2gtest_8hpp.html#a222e5f770c87370e0f92d2a597b95b2d">AWAIT_EXPECT_WEXITSTATUS_EQ</a>(128 + <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a1c2b5693161bbc9d516ef5d16c7b54f5">SIGKILL</a>, <a class="code" href="namespaceproc.html#a34396c6140a28f583dc13fee3c3c35d4">status</a>);</div><div class="line"><a name="l0
 0189"></a><span class="lineno">  189</span>&#160;<span class="preprocessor">#endif // __WINDOWS__</span></div><div class="line"><a name="l00190"></a><span class="lineno">  190</span>&#160;}</div><div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160;</div><div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;} <span class="comment">// namespace tests {</span></div><div class="line"><a name="l00193"></a><span class="lineno">  193</span>&#160;} <span class="comment">// namespace internal {</span></div><div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#160;} <span class="comment">// namespace mesos {</span></div><div class="line"><a name="l00195"></a><span class="lineno">  195</span>&#160;</div><div class="line"><a name="l00196"></a><span class="lineno">  196</span>&#160;<span class="preprocessor">#endif // __TEST_DOCKER_COMMON_HPP__</span></div><div class="ttc" id="namespaceos_html_a84298b990ad52dfd353358427b04ff3f"
 ><div class="ttname"><a href="namespaceos.html#a84298b990ad52dfd353358427b04ff3f">os::rmdir</a></div><div class="ttdeci">Try&lt; Nothing &gt; rmdir(const std::string &amp;directory, bool recursive=true, bool removeRoot=true, bool continueOnError=false)</div><div class="ttdef"><b>Definition:</b> rmdir.hpp:43</div></div>
+<a href="docker__common_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>&#160;<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>&#160;<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>&#160;<span class="comment">// distributed with this work for additional information</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<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>&#160;<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>&#160;<span class="comment">// &quot;License&quot;); you may not use this file except in compliance</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<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>&#160;<span class="comment">// di
 stributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<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>&#160;<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>&#160;<span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;</div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="preprocessor">#ifndef __TEST_DOCKER_COMMON_HPP__</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="preprocessor">#define __TEST_DOCKER_COMMON_HPP__</span></div><div c
 lass="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;</div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="future_8hpp.html">process/future.hpp</a>&gt;</span></div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="libprocess_2include_2process_2gtest_8hpp.html">process/gtest.hpp</a>&gt;</span></div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="3rdparty_2libprocess_2include_2process_2io_8hpp.html">process/io.hpp</a>&gt;</span></div><div class="line"><a name="l00025"></a><spa
 n class="lineno">   25</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="owned_8hpp.html">process/owned.hpp</a>&gt;</span></div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="include_2process_2subprocess_8hpp.html">process/subprocess.hpp</a>&gt;</span></div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;</div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="format_8hpp.html">stout/format.hpp</a>&gt;</span></div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="stout_2include_2stout_2gtest_8hpp.html">stout/gtest.hpp</a>&gt;</span></div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="preprocessor">#include &lt;<a class=
 "code" href="lambda_8hpp.html">stout/lambda.hpp</a>&gt;</span></div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="nothing_8hpp.html">stout/nothing.hpp</a>&gt;</span></div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="option_8hpp.html">stout/option.hpp</a>&gt;</span></div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="try_8hpp.html">stout/try.hpp</a>&gt;</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>&#160;<span class="preprocessor">#include &lt;<a class="code" href="mkdtemp_8hpp.html">stout/os/mkdtemp.hpp</a>&gt;</span></div><div class="line"><a name="l00036"></a><span class="lineno">   3
 6</span>&#160;</div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="docker_2docker_8hpp.html">docker/docker.hpp</a>&quot;</span></div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="src_2tests_2flags_8hpp.html">tests/flags.hpp</a>&quot;</span></div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;</div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacemesos.html">mesos</a> {</div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceinternal.html">internal</a> {</div><div class="line"><a name="l0004
 3"></a><span class="lineno">   43</span>&#160;<span class="keyword">namespace </span>tests {</div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;</div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;<span class="preprocessor">#ifdef __WINDOWS__</span></div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;<span class="comment">// The following image is the microsoft/nanoserver image with</span></div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;<span class="comment">// ContainerAdministrator as the default user. There are some permission bugs</span></div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;<span class="comment">// with accessing volume mounts in process (but not Hyper-V) isolation as</span></div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;<span class="comment">// the regular ContainerUser 
 user, but accesing them as ContainerAdministrator</span></div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;<span class="comment">// works fine.</span></div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;<span class="keyword">static</span> constexpr <span class="keywordtype">char</span> DOCKER_TEST_IMAGE[] = <span class="stringliteral">&quot;akagup/nano-admin&quot;</span>;</div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;</div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;<span class="comment">// We use a custom HTTP(S) server here, because the official `microsoft/iis`</span></div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;<span class="comment">// HTTP server image is ~20x larger than this one, so pulling it takes too</span></div><div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;<span class="co
 mment">// long. This server supports HTTP and HTTPS listening on port 80 and 443.</span></div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;<span class="comment">// For more information, see https://github.com/gupta-ak/https-server.</span></div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;<span class="keyword">static</span> constexpr <span class="keywordtype">char</span> DOCKER_HTTP_IMAGE[] = <span class="stringliteral">&quot;akagup/https-server&quot;</span>;</div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;<span class="keyword">static</span> constexpr <span class="keywordtype">char</span> DOCKER_HTTP_COMMAND[] = <span class="stringliteral">&quot;http.exe&quot;</span>;</div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;<span class="keyword">static</span> constexpr <span class="keywordtype">char</span> DOCKER_HTTPS_IMAGE[] = <span class="stringliteral">&q
 uot;akagup/https-server&quot;</span>;</div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;<span class="keyword">static</span> constexpr <span class="keywordtype">char</span> DOCKER_HTTPS_COMMAND[] = <span class="stringliteral">&quot;http.exe&quot;</span>;</div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;<span class="keyword">static</span> constexpr <span class="keywordtype">char</span> DOCKER_TEST_IMAGE[] = <span class="stringliteral">&quot;alpine&quot;</span>;</div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;</div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;<span class="comment">// The HTTP server is netcat running on alpine.</span></div><div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;<span class="key
 word">static</span> constexpr <span class="keywordtype">char</span> DOCKER_HTTP_IMAGE[] = <span class="stringliteral">&quot;alpine&quot;</span>;</div><div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;<span class="keyword">static</span> constexpr <span class="keywordtype">char</span> DOCKER_HTTP_COMMAND[] =</div><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;  <span class="stringliteral">&quot;nc -lk -p 80 -e echo -e \&quot;HTTP/1.1 200 OK\r\nContent-Length: 0\r\n\&quot;&quot;</span>;</div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;</div><div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;<span class="comment">// Refer to https://github.com/qianzhangxa/https-server for</span></div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;<span class="comment">// how the Docker image `zhq527725/https-server` works.</span></div><div class="line"><a
  name="l00071"></a><span class="lineno">   71</span>&#160;<span class="keyword">static</span> constexpr <span class="keywordtype">char</span> DOCKER_HTTPS_IMAGE[] = <span class="stringliteral">&quot;zhq527725/https-server&quot;</span>;</div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;<span class="keyword">static</span> constexpr <span class="keywordtype">char</span> DOCKER_HTTPS_COMMAND[] = <span class="stringliteral">&quot;python https_server.py 443&quot;</span>;</div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;<span class="preprocessor">#endif // __WINDOWS__</span></div><div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;</div><div class="line"><a name="l00075"></a><span class="lineno"><a class="line" href="namespacemesos_1_1internal_1_1tests.html#a3e9b4c80f181d9d31576c268120dd49e">   75</a></span>&#160;constexpr <span class="keywordtype">char</span> <a class="code" href="namespacemesos_1
 _1internal_1_1tests.html#a3e9b4c80f181d9d31576c268120dd49e">DOCKER_IPv6_NETWORK</a>[] = <span class="stringliteral">&quot;mesos-docker-ip6-test&quot;</span>;</div><div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;</div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;</div><div class="line"><a name="l00078"></a><span class="lineno"><a class="line" href="namespacemesos_1_1internal_1_1tests.html#a15c592efe4e9ba851ddcf2c79f4b2dcf">   78</a></span>&#160;<span class="keyword">inline</span> <a class="code" href="classprocess_1_1Future.html">process::Future&lt;Nothing&gt;</a> <a class="code" href="namespacemesos_1_1internal_1_1tests.html#a15c592efe4e9ba851ddcf2c79f4b2dcf">pullDockerImage</a>(<span class="keyword">const</span> std::string&amp; imageName)</div><div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;{</div><div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;  <a class="cod
 e" href="classTry.html">Try&lt;process::Owned&lt;Docker&gt;</a>&gt; <a class="code" href="namespacedocker.html">docker</a> =</div><div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;    <a class="code" href="classDocker.html#a370c1d613e35cc8b8e393dc8c83876e6">Docker::create</a>(<a class="code" href="namespacemesos_1_1internal_1_1tests.html#af8289f648a916c3f66923867452c7b1b">tests::flags</a>.docker, <a class="code" href="namespacemesos_1_1internal_1_1tests.html#af8289f648a916c3f66923867452c7b1b">tests::flags</a>.docker_socket, <span class="keyword">false</span>);</div><div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;</div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;  <span class="keywordflow">if</span> (docker.isError()) {</div><div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="structprocess_1_1Failure.ht
 ml">process::Failure</a>(docker.error());</div><div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;  }</div><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;</div><div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;  <span class="keyword">const</span> <a class="code" href="classTry.html">Try&lt;std::string&gt;</a> directory = <a class="code" href="namespaceos.html#afe70fd86d13b8f10cafb222bb80adcf6">os::mkdtemp</a>();</div><div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;  <span class="keywordflow">if</span> (directory.isError()) {</div><div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="structprocess_1_1Failure.html">process::Failure</a>(docker.error());</div><div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;  }</div><div class="line"><a name="l00091"></a><
 span class="lineno">   91</span>&#160;</div><div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;  <span class="keywordflow">return</span> docker.get()-&gt;pull(directory.get(), imageName)</div><div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;    .<a class="code" href="namespaceprocess_1_1internal.html#a7885011cf6470b707294a6ef4ec7a0a6">then</a>([]() {</div><div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;      <span class="comment">// `Docker::pull` returns a `Future&lt;Docker::Image`&gt;, but we only really</span></div><div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;      <span class="comment">// if the pull was successful, so we just return `Nothing` to match the</span></div><div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;      <span class="comment">// return type of `pullDockerImage`.</span></div><div class="line"><a name="l00097"></a><sp
 an class="lineno">   97</span>&#160;      <span class="keywordflow">return</span> <a class="code" href="structNothing.html">Nothing</a>();</div><div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;    })</div><div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;    .onAny([directory]() -&gt; <a class="code" href="classprocess_1_1Future.html">process::Future&lt;Nothing&gt;</a> {</div><div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;      <a class="code" href="classTry.html">Try&lt;Nothing&gt;</a> <a class="code" href="namespaceos.html#a84298b990ad52dfd353358427b04ff3f">rmdir</a> = <a class="code" href="namespaceos.html#a84298b990ad52dfd353358427b04ff3f">os::rmdir</a>(directory.get());</div><div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;      <span class="keywordflow">if</span> (rmdir.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div>
 <div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="structprocess_1_1Failure.html">process::Failure</a>(rmdir.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;      }</div><div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;      <span class="keywordflow">return</span> <a class="code" href="structNothing.html">Nothing</a>();</div><div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;    });</div><div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;}</div><div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;</div><div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;</div><div class="line"><a name="l00109"></a><span class="lineno"><a class="line" href
 ="namespacemesos_1_1internal_1_1tests.html#a971a18f563bfbd01896a97a7a72ccde1">  109</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespacemesos_1_1internal_1_1tests.html#a971a18f563bfbd01896a97a7a72ccde1">createDockerIPv6UserNetwork</a>()</div><div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;{</div><div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;  <span class="comment">// Docker IPv6 is not supported on Windows, so no-op on that platform.</span></div><div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;  <span class="comment">// TODO(akagup): Remove the #ifdef when Windows supports IPv6 networks</span></div><div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;  <span class="comment">// in docker containers. See MESOS-8566.</span></div><div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#16
 0;<span class="preprocessor">#ifndef __WINDOWS__</span></div><div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;  <span class="comment">// Create a Docker user network with IPv6 enabled.</span></div><div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;  <a class="code" href="classTry.html">Try&lt;std::string&gt;</a> dockerCommand = <a class="code" href="namespacestrings.html#a7884a23bea2a6543b8a93ad48faabe0c">strings::format</a>(</div><div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;      <span class="stringliteral">&quot;docker network create --driver=bridge --ipv6 &quot;</span></div><div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;      <span class="stringliteral">&quot;--subnet=fd01::/64 %s&quot;</span>,</div><div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;      DOCKER_IPv6_NETWORK);</div><div class="line"><a name="l00120"></a><span class="li
 neno">  120</span>&#160;</div><div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;  <a class="code" href="classTry.html">Try&lt;process::Subprocess&gt;</a> s = <a class="code" href="namespaceprocess.html#a2d7e0a283bc0c9eca8a8b0532e026269">process::subprocess</a>(</div><div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;      dockerCommand.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>(),</div><div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;      <a class="code" href="classprocess_1_1Subprocess.html#a54793e9c516257d68776f63f0872c3c7">process::Subprocess::PATH</a>(<span class="stringliteral">&quot;/dev/null&quot;</span>),</div><div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;      <a class="code" href="classprocess_1_1Subprocess.html#a54793e9c516257d68776f63f0872c3c7">process::Subprocess::PATH</a>(<span class="stringliteral">&quot;/dev/null&quo
 t;</span>),</div><div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;      <a class="code" href="classprocess_1_1Subprocess.html#a6af5024bd1932707893908fceb86ddad">process::Subprocess::PIPE</a>());</div><div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;</div><div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;  <a class="code" href="stout_2include_2stout_2gtest_8hpp.html#a0add664e84bbf99f845f1b715dd63f90">ASSERT_SOME</a>(s) &lt;&lt; <span class="stringliteral">&quot;Unable to create the Docker IPv6 network: &quot;</span></div><div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;                 &lt;&lt; <a class="code" href="namespacemesos_1_1internal_1_1tests.html#a3e9b4c80f181d9d31576c268120dd49e">DOCKER_IPv6_NETWORK</a>;</div><div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;</div><div class="line"><a name="l00130"></a><span class="lineno">  130</sp
 an>&#160;  <a class="code" href="classprocess_1_1Future.html">process::Future&lt;std::string&gt;</a> err = <a class="code" href="namespaceprocess_1_1io.html#a4c34d22e475e29f12ac739921dcc580f">process::io::read</a>(s-&gt;<a class="code" href="classprocess_1_1Subprocess.html#a98180558f1427a64a03cf3f656310bc4">err</a>().<a class="code" href="classOption.html#a21358442c0fac1cc978a67a9a9089a79">get</a>());</div><div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;</div><div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;  <span class="comment">// Wait for the network to be created.</span></div><div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;  <a class="code" href="libprocess_2include_2process_2gtest_8hpp.html#a269c59ba4bb2bec7ac8e361e45f52d43">AWAIT_READY</a>(s-&gt;<a class="code" href="classprocess_1_1Subprocess.html#a3946c31d16c0625ea554d5216cd4fa3b">status</a>());</div><div class="line"><a name="l00134"><
 /a><span class="lineno">  134</span>&#160;  <a class="code" href="libprocess_2include_2process_2gtest_8hpp.html#a269c59ba4bb2bec7ac8e361e45f52d43">AWAIT_READY</a>(err);</div><div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;</div><div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;  <a class="code" href="stout_2include_2stout_2gtest_8hpp.html#a0add664e84bbf99f845f1b715dd63f90">ASSERT_SOME</a>(s-&gt;<a class="code" href="classprocess_1_1Subprocess.html#a3946c31d16c0625ea554d5216cd4fa3b">status</a>().<a class="code" href="classprocess_1_1Future.html#aa78977d3b585a5f5ccd682c1e9e2ddc4">get</a>());</div><div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;  ASSERT_EQ(s-&gt;<a class="code" href="classprocess_1_1Subprocess.html#a3946c31d16c0625ea554d5216cd4fa3b">status</a>()-&gt;<a class="code" href="classOption.html#a21358442c0fac1cc978a67a9a9089a79">get</a>(), 0)</div><div class="line"><a name="l00138"></a><sp
 an class="lineno">  138</span>&#160;    &lt;&lt; <span class="stringliteral">&quot;Unable to create the Docker IPv6 network &quot;</span></div><div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;    &lt;&lt; DOCKER_IPv6_NETWORK</div><div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;    &lt;&lt; <span class="stringliteral">&quot; : &quot;</span> &lt;&lt; err.<a class="code" href="classprocess_1_1Future.html#aa78977d3b585a5f5ccd682c1e9e2ddc4">get</a>();</div><div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;<span class="preprocessor">#endif // __WINDOWS__</span></div><div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;}</div><div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;</div><div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;</div><div class="line"><a name="l00145"></a><span class="lineno"><a class="line" href="namespac
 emesos_1_1internal_1_1tests.html#a4143a755ba48009f54529ab97cb3beb3">  145</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespacemesos_1_1internal_1_1tests.html#a4143a755ba48009f54529ab97cb3beb3">removeDockerIPv6UserNetwork</a>()</div><div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;{</div><div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;  <span class="comment">// Docker IPv6 is not supported on Windows, so no-op on that platform.</span></div><div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;  <span class="comment">// TODO(akagup): Remove the #ifdef when Windows supports IPv6 networks</span></div><div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;  <span class="comment">// in docker containers. See MESOS-8566.</span></div><div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;<span cl
 ass="preprocessor">#ifndef __WINDOWS__</span></div><div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;  <span class="comment">// Delete the Docker user network.</span></div><div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;  <a class="code" href="classTry.html">Try&lt;std::string&gt;</a> dockerCommand =</div><div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;    <a class="code" href="namespacestrings.html#a7884a23bea2a6543b8a93ad48faabe0c">strings::format</a>(<span class="stringliteral">&quot;docker network rm %s&quot;</span>, DOCKER_IPv6_NETWORK);</div><div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;</div><div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;  <a class="code" href="classTry.html">Try&lt;process::Subprocess&gt;</a> s = <a class="code" href="namespaceprocess.html#a2d7e0a283bc0c9eca8a8b0532e026269">subprocess</a>(</div><div class="lin
 e"><a name="l00156"></a><span class="lineno">  156</span>&#160;      dockerCommand.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>(),</div><div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;      <a class="code" href="classprocess_1_1Subprocess.html#a54793e9c516257d68776f63f0872c3c7">process::Subprocess::PATH</a>(<span class="stringliteral">&quot;/dev/null&quot;</span>),</div><div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;      <a class="code" href="classprocess_1_1Subprocess.html#a54793e9c516257d68776f63f0872c3c7">process::Subprocess::PATH</a>(<span class="stringliteral">&quot;/dev/null&quot;</span>),</div><div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;      <a class="code" href="classprocess_1_1Subprocess.html#a6af5024bd1932707893908fceb86ddad">process::Subprocess::PIPE</a>());</div><div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;</d
 iv><div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;  <span class="comment">// This is best effort cleanup. In case of an error just a log an</span></div><div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;  <span class="comment">// error.</span></div><div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;  <a class="code" href="stout_2include_2stout_2gtest_8hpp.html#a0add664e84bbf99f845f1b715dd63f90">ASSERT_SOME</a>(s) &lt;&lt; <span class="stringliteral">&quot;Unable to delete the Docker IPv6 network: &quot;</span></div><div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;                 &lt;&lt; <a class="code" href="namespacemesos_1_1internal_1_1tests.html#a3e9b4c80f181d9d31576c268120dd49e">DOCKER_IPv6_NETWORK</a>;</div><div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;</div><div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#1
 60;  <a class="code" href="classprocess_1_1Future.html">process::Future&lt;std::string&gt;</a> err = <a class="code" href="namespaceprocess_1_1io.html#a4c34d22e475e29f12ac739921dcc580f">process::io::read</a>(s-&gt;<a class="code" href="classprocess_1_1Subprocess.html#a98180558f1427a64a03cf3f656310bc4">err</a>().<a class="code" href="classOption.html#a21358442c0fac1cc978a67a9a9089a79">get</a>());</div><div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;</div><div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;  <span class="comment">// Wait for the network to be deleted.</span></div><div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;  <a class="code" href="libprocess_2include_2process_2gtest_8hpp.html#a269c59ba4bb2bec7ac8e361e45f52d43">AWAIT_READY</a>(s-&gt;<a class="code" href="classprocess_1_1Subprocess.html#a3946c31d16c0625ea554d5216cd4fa3b">status</a>());</div><div class="line"><a name="l00170"></a><sp
 an class="lineno">  170</span>&#160;  <a class="code" href="libprocess_2include_2process_2gtest_8hpp.html#a269c59ba4bb2bec7ac8e361e45f52d43">AWAIT_READY</a>(err);</div><div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;</div><div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;  <a class="code" href="stout_2include_2stout_2gtest_8hpp.html#a0add664e84bbf99f845f1b715dd63f90">ASSERT_SOME</a>(s-&gt;<a class="code" href="classprocess_1_1Subprocess.html#a3946c31d16c0625ea554d5216cd4fa3b">status</a>().<a class="code" href="classprocess_1_1Future.html#aa78977d3b585a5f5ccd682c1e9e2ddc4">get</a>());</div><div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;  ASSERT_EQ(s-&gt;<a class="code" href="classprocess_1_1Subprocess.html#a3946c31d16c0625ea554d5216cd4fa3b">status</a>()-&gt;<a class="code" href="classOption.html#a21358442c0fac1cc978a67a9a9089a79">get</a>(), 0)</div><div class="line"><a name="l00174"></a><span cla
 ss="lineno">  174</span>&#160;    &lt;&lt; <span class="stringliteral">&quot;Unable to delete the Docker IPv6 network &quot;</span></div><div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;    &lt;&lt; DOCKER_IPv6_NETWORK</div><div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;    &lt;&lt; <span class="stringliteral">&quot; : &quot;</span> &lt;&lt; err.<a class="code" href="classprocess_1_1Future.html#aa78977d3b585a5f5ccd682c1e9e2ddc4">get</a>();</div><div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;<span class="preprocessor">#endif // __WINDOWS__</span></div><div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;}</div><div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;</div><div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;</div><div class="line"><a name="l00181"></a><span class="lineno"><a class="line" href="namespacemesos
 _1_1internal_1_1tests.html#af386ecbbf46a9598c02450185b4ba3e2">  181</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespacemesos_1_1internal_1_1tests.html#af386ecbbf46a9598c02450185b4ba3e2">assertDockerKillStatus</a>(<a class="code" href="classprocess_1_1Future.html">process::Future</a>&lt;<a class="code" href="classOption.html">Option&lt;int&gt;</a>&gt;&amp; <a class="code" href="namespaceproc.html#a34396c6140a28f583dc13fee3c3c35d4">status</a>)</div><div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160;{</div><div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;<span class="preprocessor">#ifdef __WINDOWS__</span></div><div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;  <span class="comment">// On Windows, there is no standard exit code for determining if a process</span></div><div class="line"><a name="l00185"></a><span class="lineno">  185<
 /span>&#160;  <span class="comment">// as been killed. However, in Docker, it will not return 0.</span></div><div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;  <a class="code" href="libprocess_2include_2process_2gtest_8hpp.html#ae4d00c37c2287bce910fff6885429cfb">AWAIT_EXPECT_WEXITSTATUS_NE</a>(0, <a class="code" href="namespaceproc.html#a34396c6140a28f583dc13fee3c3c35d4">status</a>.get());</div><div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;  <a class="code" href="libprocess_2include_2process_2gtest_8hpp.html#a222e5f770c87370e0f92d2a597b95b2d">AWAIT_EXPECT_WEXITSTATUS_EQ</a>(128 + <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a1c2b5693161bbc9d516ef5d16c7b54f5">SIGKILL</a>, <a class="code" href="namespaceproc.html#a34396c6140a28f583dc13fee3c3c35d4">status</a>);</div><div class=
 "line"><a name="l00189"></a><span class="lineno">  189</span>&#160;<span class="preprocessor">#endif // __WINDOWS__</span></div><div class="line"><a name="l00190"></a><span class="lineno">  190</span>&#160;}</div><div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160;</div><div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;} <span class="comment">// namespace tests {</span></div><div class="line"><a name="l00193"></a><span class="lineno">  193</span>&#160;} <span class="comment">// namespace internal {</span></div><div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#160;} <span class="comment">// namespace mesos {</span></div><div class="line"><a name="l00195"></a><span class="lineno">  195</span>&#160;</div><div class="line"><a name="l00196"></a><span class="lineno">  196</span>&#160;<span class="preprocessor">#endif // __TEST_DOCKER_COMMON_HPP__</span></div><div class="ttc" id="namespaceos_html_a84298b990ad52df
 d353358427b04ff3f"><div class="ttname"><a href="namespaceos.html#a84298b990ad52dfd353358427b04ff3f">os::rmdir</a></div><div class="ttdeci">Try&lt; Nothing &gt; rmdir(const std::string &amp;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="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="classOption_html"><div class="ttname"><a href="classOption.html">Option&lt; int &gt;</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 &amp; get()&amp;</div><div class="ttdef"><b>Definition:</b> try.hpp:73</div></div>
@@ -61,8 +61,8 @@
 <div class="ttc" id="3rdparty_2stout_2include_2stout_2windows_8hpp_html_a1c2b5693161bbc9d516ef5d16c7b54f5"><div class="ttname"><a href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a1c2b5693161bbc9d516ef5d16c7b54f5">SIGKILL</a></div><div class="ttdeci">const mode_t SIGKILL</div><div class="ttdef"><b>Definition:</b> windows.hpp:335</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="src_2tests_2flags_8hpp_html"><div class="ttname"><a href="src_2tests_2flags_8hpp.html">flags.hpp</a></div></div>
-<div class="ttc" id="subprocess_8hpp_html"><div class="ttname"><a href="subprocess_8hpp.html">subprocess.hpp</a></div></div>
 <div class="ttc" id="structprocess_1_1Failure_html"><div class="ttname"><a href="structprocess_1_1Failure.html">process::Failure</a></div><div class="ttdef"><b>Definition:</b> future.hpp:668</div></div>
+<div class="ttc" id="include_2process_2subprocess_8hpp_html"><div class="ttname"><a href="include_2process_2subprocess_8hpp.html">subprocess.hpp</a></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&lt; ProcessStatus &gt; status(pid_t pid)</div><div class="ttdef"><b>Definition:</b> proc.hpp:166</div></div>
 <div class="ttc" id="classprocess_1_1Subprocess_html_a54793e9c516257d68776f63f0872c3c7"><div class="ttname"><a href="classprocess_1_1Subprocess.html#a54793e9c516257d68776f63f0872c3c7">process::Subprocess::PATH</a></div><div class="ttdeci">static IO PATH(const std::string &amp;path)</div></div>
 <div class="ttc" id="format_8hpp_html"><div class="ttname"><a href="format_8hpp.html">format.hpp</a></div></div>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/encoder_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/encoder_8hpp_source.html b/content/api/latest/c++/encoder_8hpp_source.html
index 30f8ddb..1742635 100644
--- a/content/api/latest/c++/encoder_8hpp_source.html
+++ b/content/api/latest/c++/encoder_8hpp_source.html
@@ -124,7 +124,7 @@
 <div class="ttc" id="namespaceprocess_html_a13d37773ca341b12d88d7e5cf2654e83"><div class="ttname"><a href="namespaceprocess.html#a13d37773ca341b12d88d7e5cf2654e83">process::GZIP_MINIMUM_BODY_LENGTH</a></div><div class="ttdeci">const uint32_t GZIP_MINIMUM_BODY_LENGTH</div><div class="ttdef"><b>Definition:</b> encoder.hpp:35</div></div>
 <div class="ttc" id="namespacecgroups_1_1blkio_1_1cfq_html_abe4d7d69fdf7ca70fb30c6cd34a953e4"><div class="ttname"><a href="namespacecgroups_1_1blkio_1_1cfq.html#abe4d7d69fdf7ca70fb30c6cd34a953e4">cgroups::blkio::cfq::time</a></div><div class="ttdeci">Try&lt; std::vector&lt; Value &gt; &gt; time(const std::string &amp;hierarchy, const std::string &amp;cgroup)</div></div>
 <div class="ttc" id="classprocess_1_1Encoder_html_a61ab7c7c77f3285b9e1a91c3f962a007a0268afc52c40ae5367e3735511000246"><div class="ttname"><a href="classprocess_1_1Encoder.html#a61ab7c7c77f3285b9e1a91c3f962a007a0268afc52c40ae5367e3735511000246">process::Encoder::FILE</a></div><div class="ttdef"><b>Definition:</b> encoder.hpp:47</div></div>
-<div class="ttc" id="namespaceos_html_a5e0295f0e3bae2bd29d86803f9293b5d"><div class="ttname"><a href="namespaceos.html#a5e0295f0e3bae2bd29d86803f9293b5d">os::gmtime_r</a></div><div class="ttdeci">tm * gmtime_r(const time_t *timep, tm *result)</div><div class="ttdef"><b>Definition:</b> os.hpp:401</div></div>
+<div class="ttc" id="namespaceos_html_a5e0295f0e3bae2bd29d86803f9293b5d"><div class="ttname"><a href="namespaceos.html#a5e0295f0e3bae2bd29d86803f9293b5d">os::gmtime_r</a></div><div class="ttdeci">tm * gmtime_r(const time_t *timep, tm *result)</div><div class="ttdef"><b>Definition:</b> os.hpp:431</div></div>
 <div class="ttc" id="classprocess_1_1FileEncoder_html_a25204db3e56d1089156b5954f3ca973b"><div class="ttname"><a href="classprocess_1_1FileEncoder.html#a25204db3e56d1089156b5954f3ca973b">process::FileEncoder::~FileEncoder</a></div><div class="ttdeci">virtual ~FileEncoder()</div><div class="ttdef"><b>Definition:</b> encoder.hpp:246</div></div>
 </div><!-- fragment --></div><!-- contents -->
 <!-- start footer part -->

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/fd_8hpp.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/fd_8hpp.html b/content/api/latest/c++/fd_8hpp.html
index e8a3155..f8b5aba 100644
--- a/content/api/latest/c++/fd_8hpp.html
+++ b/content/api/latest/c++/fd_8hpp.html
@@ -59,11 +59,13 @@
 <div class="textblock"><code>#include &lt;fcntl.h&gt;</code><br />
 <code>#include &lt;io.h&gt;</code><br />
 <code>#include &lt;array&gt;</code><br />
+<code>#include &lt;atomic&gt;</code><br />
 <code>#include &lt;memory&gt;</code><br />
 <code>#include &lt;ostream&gt;</code><br />
 <code>#include &lt;type_traits&gt;</code><br />
 <code>#include &lt;<a class="el" href="stout_2include_2stout_2check_8hpp_source.html">stout/check.hpp</a>&gt;</code><br />
 <code>#include &lt;<a class="el" href="nothing_8hpp_source.html">stout/nothing.hpp</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="synchronized_8hpp_source.html">stout/synchronized.hpp</a>&gt;</code><br />
 <code>#include &lt;<a class="el" href="try_8hpp_source.html">stout/try.hpp</a>&gt;</code><br />
 <code>#include &lt;<a class="el" href="unreachable_8hpp_source.html">stout/unreachable.hpp</a>&gt;</code><br />
 <code>#include &lt;<a class="el" href="3rdparty_2stout_2include_2stout_2windows_8hpp_source.html">stout/windows.hpp</a>&gt;</code><br />


[07/50] mesos-site git commit: Updated the website built from mesos SHA: 7c9c72d.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/tests_2containerizer_2launcher_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/tests_2containerizer_2launcher_8hpp_source.html b/content/api/latest/c++/tests_2containerizer_2launcher_8hpp_source.html
index 96fe1ac..8ca040e 100644
--- a/content/api/latest/c++/tests_2containerizer_2launcher_8hpp_source.html
+++ b/content/api/latest/c++/tests_2containerizer_2launcher_8hpp_source.html
@@ -52,14 +52,14 @@
 <div class="title">launcher.hpp</div>  </div>
 </div><!--header-->
 <div class="contents">
-<a href="tests_2containerizer_2launcher_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>&#160;<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>&#160;<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>&#160;<span class="comment">// distributed with this work for additional information</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<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>&#160;<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>&#160;<span class="comment">// &quot;License&quot;); you may not use this file except in compliance</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<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>&#160;<span class
 ="comment">// distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<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>&#160;<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>&#160;<span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;</div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="preprocessor">#ifndef __TEST_LAUNCHER_HPP__</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="preprocessor">#define __TEST_LAUNCHER_HPP__</span></div>
 <div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="preprocessor">#include &lt;map&gt;</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span></div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="preprocessor">#include &lt;vector&gt;</span></div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;</div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="preprocessor">#include &lt;gmock/gmock.h&gt;</span></div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;</div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="include_2mesos_2mesos_8hpp.html">meso
 s/mesos.hpp</a>&gt;</span></div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;</div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="include_2mesos_2slave_2isolator_8hpp.html">mesos/slave/isolator.hpp</a>&gt;</span></div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;</div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="future_8hpp.html">process/future.hpp</a>&gt;</span></div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="owned_8hpp.html">process/owned.hpp</a>&gt;</span></div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="subprocess_8hpp.html">process/subproc
 ess.hpp</a>&gt;</span></div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;</div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="3rdparty_2stout_2include_2stout_2flags_8hpp.html">stout/flags.hpp</a>&gt;</span></div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="lambda_8hpp.html">stout/lambda.hpp</a>&gt;</span></div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="nothing_8hpp.html">stout/nothing.hpp</a>&gt;</span></div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="option_8hpp.html">stout/option.hpp</a>&gt;</span></div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>
 &#160;</div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="slave_2containerizer_2mesos_2launcher_8hpp.html">slave/containerizer/mesos/launcher.hpp</a>&quot;</span></div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;</div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacemesos.html">mesos</a> {</div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceinternal.html">internal</a> {</div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;<span class="keyword">namespace </span>tests {</div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;</div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#1
 60;</div><div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1tests_1_1TestLauncher.html">   46</a></span>&#160;<span class="keyword">class </span><a class="code" href="classmesos_1_1internal_1_1tests_1_1TestLauncher.html">TestLauncher</a> : <span class="keyword">public</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Launcher.html">slave::Launcher</a></div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;{</div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;  <a class="code" href="classmesos_1_1internal_1_1tests_1_1TestLauncher.html#a03b2e4b3d90bb58e6e032c153e929722">TestLauncher</a>(<span class="keyword">const</span> <a class="code" href="classprocess_1_1Owned.html">process::Owned&lt;slave::Launcher&gt;</a>&amp; _real);</div><div class
 ="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;</div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;  <a class="code" href="classmesos_1_1internal_1_1tests_1_1TestLauncher.html#a79fd9c048b6ad3aa6ea8081da0773a37">~TestLauncher</a>();</div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;</div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;  <a class="code" href="classmesos_1_1internal_1_1tests_1_1TestLauncher.html#a364457036ee4eee072a47db251e590ab">MOCK_METHOD1</a>(</div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;      <a class="code" href="classmesos_1_1internal_1_1slave_1_1Launcher.html#a93e8c38b7a4d497b37ce82d9108fedb4">recover</a>,</div><div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;      <a class="code" href="classprocess_1_1Future.html">process::Future</a>&lt;<a class="code" href="classhashset.html">has
 hset&lt;ContainerID&gt;</a>&gt;(</div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;          <span class="keyword">const</span> std::vector&lt;mesos::slave::ContainerState&gt;&amp; states));</div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;</div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;  <a class="code" href="classmesos_1_1internal_1_1tests_1_1TestLauncher.html#a6c773728de6975683f0059474a7fca31">MOCK_METHOD9</a>(</div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;      <a class="code" href="classmesos_1_1internal_1_1slave_1_1Launcher.html#acb021e7df5f9a5cc902de09e2da7b1df">fork</a>,</div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;      <a class="code" href="classTry.html">Try&lt;pid_t&gt;</a>(</div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;          <span class="keyword">const</s
 pan> ContainerID&amp; containerId,</div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;          <span class="keyword">const</span> std::string&amp; <a class="code" href="namespacepath.html">path</a>,</div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;          <span class="keyword">const</span> std::vector&lt;std::string&gt;&amp; argv,</div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;          <span class="keyword">const</span> <a class="code" href="structmesos_1_1slave_1_1ContainerIO.html">mesos::slave::ContainerIO</a>&amp; containerIO,</div><div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;          <span class="keyword">const</span> <a class="code" href="classflags_1_1FlagsBase.html">flags::FlagsBase</a>* <a class="code" href="namespaceflags.html">flags</a>,</div><div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;          <span 
 class="keyword">const</span> <a class="code" href="classOption.html">Option</a>&lt;std::map&lt;std::string, std::string&gt;&gt;&amp; env,</div><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;          <span class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;int&gt;</a>&amp; enterNamespaces,</div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;          <span class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;int&gt;</a>&amp; cloneNamespaces,</div><div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;          <span class="keyword">const</span> std::vector&lt;int_fd&gt;&amp; whitelistFds));</div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;</div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;  <a class="code" href="classmesos_1_1internal_1_1tests_1_1TestLauncher.html#a364457036ee4eee
 072a47db251e590ab">MOCK_METHOD1</a>(</div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;      <a class="code" href="classmesos_1_1internal_1_1slave_1_1Launcher.html#adf9cd543b7aaf0b999a2a00aa31c6175">destroy</a>,</div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;      <a class="code" href="classprocess_1_1Future.html">process::Future&lt;Nothing&gt;</a>(<span class="keyword">const</span> ContainerID&amp; containerId));</div><div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;</div><div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;  <a class="code" href="classmesos_1_1internal_1_1tests_1_1TestLauncher.html#a364457036ee4eee072a47db251e590ab">MOCK_METHOD1</a>(</div><div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;      <a class="code" href="classmesos_1_1internal_1_1slave_1_1Launcher.html#a45a6d7403aeb433663419923a9956bc0">status</a>,</div><
 div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;      <a class="code" href="classprocess_1_1Future.html">process::Future&lt;ContainerStatus&gt;</a>(<span class="keyword">const</span> ContainerID&amp; containerId));</div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;</div><div class="line"><a name="l00079"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1tests_1_1TestLauncher.html#af98963da1a56e1ec7422f074b889d286">   79</a></span>&#160;  <a class="code" href="classprocess_1_1Owned.html">process::Owned&lt;slave::Launcher&gt;</a> <a class="code" href="classmesos_1_1internal_1_1tests_1_1TestLauncher.html#af98963da1a56e1ec7422f074b889d286">real</a>;</div><div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;};</div><div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;</div><div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;} <sp
 an class="comment">// namespace tests {</span></div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;} <span class="comment">// namespace internal {</span></div><div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;} <span class="comment">// namespace mesos {</span></div><div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;</div><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;<span class="preprocessor">#endif // __TEST_LAUNCHER_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>
+<a href="tests_2containerizer_2launcher_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>&#160;<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>&#160;<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>&#160;<span class="comment">// distributed with this work for additional information</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<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>&#160;<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>&#160;<span class="comment">// &quot;License&quot;); you may not use this file except in compliance</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<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>&#160;<span class
 ="comment">// distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<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>&#160;<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>&#160;<span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;</div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="preprocessor">#ifndef __TEST_LAUNCHER_HPP__</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="preprocessor">#define __TEST_LAUNCHER_HPP__</span></div>
 <div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="preprocessor">#include &lt;map&gt;</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span></div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="preprocessor">#include &lt;vector&gt;</span></div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;</div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="preprocessor">#include &lt;gmock/gmock.h&gt;</span></div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;</div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="include_2mesos_2mesos_8hpp.html">meso
 s/mesos.hpp</a>&gt;</span></div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;</div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="include_2mesos_2slave_2isolator_8hpp.html">mesos/slave/isolator.hpp</a>&gt;</span></div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;</div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="future_8hpp.html">process/future.hpp</a>&gt;</span></div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="owned_8hpp.html">process/owned.hpp</a>&gt;</span></div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="include_2process_2subprocess_8hpp.htm
 l">process/subprocess.hpp</a>&gt;</span></div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;</div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="3rdparty_2stout_2include_2stout_2flags_8hpp.html">stout/flags.hpp</a>&gt;</span></div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="lambda_8hpp.html">stout/lambda.hpp</a>&gt;</span></div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="nothing_8hpp.html">stout/nothing.hpp</a>&gt;</span></div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="option_8hpp.html">stout/option.hpp</a>&gt;</span></div><div class="line"><a name="l00038"></a><span class="li
 neno">   38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="slave_2containerizer_2mesos_2launcher_8hpp.html">slave/containerizer/mesos/launcher.hpp</a>&quot;</span></div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;</div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacemesos.html">mesos</a> {</div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceinternal.html">internal</a> {</div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;<span class="keyword">namespace </span>tests {</div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;</div><div class="line"><a name="l00045"></a><span class="linen
 o">   45</span>&#160;</div><div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1tests_1_1TestLauncher.html">   46</a></span>&#160;<span class="keyword">class </span><a class="code" href="classmesos_1_1internal_1_1tests_1_1TestLauncher.html">TestLauncher</a> : <span class="keyword">public</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Launcher.html">slave::Launcher</a></div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;{</div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;  <a class="code" href="classmesos_1_1internal_1_1tests_1_1TestLauncher.html#a03b2e4b3d90bb58e6e032c153e929722">TestLauncher</a>(<span class="keyword">const</span> <a class="code" href="classprocess_1_1Owned.html">process::Owned&lt;slave::Launcher&gt;</a>&amp; _real
 );</div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;</div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;  <a class="code" href="classmesos_1_1internal_1_1tests_1_1TestLauncher.html#a79fd9c048b6ad3aa6ea8081da0773a37">~TestLauncher</a>();</div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;</div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;  <a class="code" href="classmesos_1_1internal_1_1tests_1_1TestLauncher.html#a364457036ee4eee072a47db251e590ab">MOCK_METHOD1</a>(</div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;      <a class="code" href="classmesos_1_1internal_1_1slave_1_1Launcher.html#a93e8c38b7a4d497b37ce82d9108fedb4">recover</a>,</div><div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;      <a class="code" href="classprocess_1_1Future.html">process::Future</a>&lt;<a class="code" href="clas
 shashset.html">hashset&lt;ContainerID&gt;</a>&gt;(</div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;          <span class="keyword">const</span> std::vector&lt;mesos::slave::ContainerState&gt;&amp; states));</div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;</div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;  <a class="code" href="classmesos_1_1internal_1_1tests_1_1TestLauncher.html#a6c773728de6975683f0059474a7fca31">MOCK_METHOD9</a>(</div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;      <a class="code" href="classmesos_1_1internal_1_1slave_1_1Launcher.html#acb021e7df5f9a5cc902de09e2da7b1df">fork</a>,</div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;      <a class="code" href="classTry.html">Try&lt;pid_t&gt;</a>(</div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;          <span class=
 "keyword">const</span> ContainerID&amp; containerId,</div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;          <span class="keyword">const</span> std::string&amp; <a class="code" href="namespacepath.html">path</a>,</div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;          <span class="keyword">const</span> std::vector&lt;std::string&gt;&amp; argv,</div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;          <span class="keyword">const</span> <a class="code" href="structmesos_1_1slave_1_1ContainerIO.html">mesos::slave::ContainerIO</a>&amp; containerIO,</div><div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;          <span class="keyword">const</span> <a class="code" href="classflags_1_1FlagsBase.html">flags::FlagsBase</a>* <a class="code" href="namespaceflags.html">flags</a>,</div><div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#16
 0;          <span class="keyword">const</span> <a class="code" href="classOption.html">Option</a>&lt;std::map&lt;std::string, std::string&gt;&gt;&amp; env,</div><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;          <span class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;int&gt;</a>&amp; enterNamespaces,</div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;          <span class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;int&gt;</a>&amp; cloneNamespaces,</div><div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;          <span class="keyword">const</span> std::vector&lt;int_fd&gt;&amp; whitelistFds));</div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;</div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;  <a class="code" href="classmesos_1_1internal_1_1tests_1_1TestLauncher.htm
 l#a364457036ee4eee072a47db251e590ab">MOCK_METHOD1</a>(</div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;      <a class="code" href="classmesos_1_1internal_1_1slave_1_1Launcher.html#adf9cd543b7aaf0b999a2a00aa31c6175">destroy</a>,</div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;      <a class="code" href="classprocess_1_1Future.html">process::Future&lt;Nothing&gt;</a>(<span class="keyword">const</span> ContainerID&amp; containerId));</div><div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;</div><div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;  <a class="code" href="classmesos_1_1internal_1_1tests_1_1TestLauncher.html#a364457036ee4eee072a47db251e590ab">MOCK_METHOD1</a>(</div><div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;      <a class="code" href="classmesos_1_1internal_1_1slave_1_1Launcher.html#a45a6d7403aeb433663419923a9956bc0">
 status</a>,</div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;      <a class="code" href="classprocess_1_1Future.html">process::Future&lt;ContainerStatus&gt;</a>(<span class="keyword">const</span> ContainerID&amp; containerId));</div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;</div><div class="line"><a name="l00079"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1tests_1_1TestLauncher.html#af98963da1a56e1ec7422f074b889d286">   79</a></span>&#160;  <a class="code" href="classprocess_1_1Owned.html">process::Owned&lt;slave::Launcher&gt;</a> <a class="code" href="classmesos_1_1internal_1_1tests_1_1TestLauncher.html#af98963da1a56e1ec7422f074b889d286">real</a>;</div><div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;};</div><div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;</div><div class="line"><a name="l00082"></a><span class="lineno">   82
 </span>&#160;} <span class="comment">// namespace tests {</span></div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;} <span class="comment">// namespace internal {</span></div><div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;} <span class="comment">// namespace mesos {</span></div><div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;</div><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;<span class="preprocessor">#endif // __TEST_LAUNCHER_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="classmesos_1_1internal_1_1slave_1_1Launcher_html"><div class="ttname"><a href="classmesos_1_1internal_1_1slave_1_1Launcher.html">mesos::internal::slave::Launcher</a></div><div class="ttdef"><b>Definition:</b> launcher.hpp:47</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_1internal_1_1slave_1_1Launcher_html_a93e8c38b7a4d497b37ce82d9108fedb4"><div class="ttname"><a href="classmesos_1_1internal_1_1slave_1_1Launcher.html#a93e8c38b7a4d497b37ce82d9108fedb4">mesos::internal::slave::Launcher::recover</a></div><div class="ttdeci">virtual process::Future&lt; hashset&lt; ContainerID &gt; &gt; recover(const std::vector&lt; mesos::slave::ContainerState &gt; &amp;states)=0</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_1tests_1_1TestLauncher_html_a79fd9c048b6ad3aa6ea8081da0773a37"><div class="ttname"><a href="classmesos_1_1internal_1_1tests_1_1TestLauncher.html#a79fd9c048b6ad3aa6ea8081da0773a37">mesos::internal::tests::TestLauncher::~TestLauncher</a></div><div class="ttdeci">~TestLauncher()</div></div>
 <div class="ttc" id="classhashset_html"><div class="ttname"><a href="classhashset.html">hashset&lt; ContainerID &gt;</a></div></div>
-<div class="ttc" id="subprocess_8hpp_html"><div class="ttname"><a href="subprocess_8hpp.html">subprocess.hpp</a></div></div>
+<div class="ttc" id="include_2process_2subprocess_8hpp_html"><div class="ttname"><a href="include_2process_2subprocess_8hpp.html">subprocess.hpp</a></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="include_2mesos_2slave_2isolator_8hpp_html"><div class="ttname"><a href="include_2mesos_2slave_2isolator_8hpp.html">isolator.hpp</a></div></div>
 <div class="ttc" id="classmesos_1_1internal_1_1slave_1_1Launcher_html_acb021e7df5f9a5cc902de09e2da7b1df"><div class="ttname"><a href="classmesos_1_1internal_1_1slave_1_1Launcher.html#acb021e7df5f9a5cc902de09e2da7b1df">mesos::internal::slave::Launcher::fork</a></div><div class="ttdeci">virtual Try&lt; pid_t &gt; fork(const ContainerID &amp;containerId, const std::string &amp;path, const std::vector&lt; std::string &gt; &amp;argv, const mesos::slave::ContainerIO &amp;containerIO, const flags::FlagsBase *flags, const Option&lt; std::map&lt; std::string, std::string &gt;&gt; &amp;environment, const Option&lt; int &gt; &amp;enterNamespaces, const Option&lt; int &gt; &amp;cloneNamespaces, const std::vector&lt; int_fd &gt; &amp;whitelistFds)=0</div></div>

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/v1_2resource__provider_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/v1_2resource__provider_8hpp_source.html b/content/api/latest/c++/v1_2resource__provider_8hpp_source.html
index 4c63aa5..0c7a2c6 100644
--- a/content/api/latest/c++/v1_2resource__provider_8hpp_source.html
+++ b/content/api/latest/c++/v1_2resource__provider_8hpp_source.html
@@ -52,7 +52,7 @@
 <div class="title">resource_provider.hpp</div>  </div>
 </div><!--header-->
 <div class="contents">
-<a href="v1_2resource__provider_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>&#160;<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>&#160;<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>&#160;<span class="comment">// distributed with this work for additional information</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<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>&#160;<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>&#160;<span class="comment">// &quot;License&quot;); you may not use this file except in compliance</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<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>&#160;<span class="commen
 t">// distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<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>&#160;<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>&#160;<span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;</div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="preprocessor">#ifndef __MESOS_V1_RESOURCE_PROVIDER_HPP__</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="preprocessor">#define __MESOS_V1_RESOURCE_PROVIDER_
 HPP__</span></div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="preprocessor">#include &lt;functional&gt;</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="preprocessor">#include &lt;queue&gt;</span></div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="future_8hpp.html">process/future.hpp</a>&gt;</span></div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="3rdparty_2libprocess_2include_2process_2http_8hpp.html">process/http.hpp</a>&gt;</span></div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="prepr
 ocessor">#include &lt;<a class="code" href="owned_8hpp.html">process/owned.hpp</a>&gt;</span></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>&#160;<span class="preprocessor">#include &lt;<a class="code" href="include_2mesos_2http_8hpp.html">mesos/http.hpp</a>&gt;</span></div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;</div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="include_2mesos_2v1_2mesos_8hpp.html">mesos/v1/mesos.hpp</a>&gt;</span></div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;</div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="v1_2resource__provider_2resource__provider_8hpp.html">mesos/v1/resource_provider/re
 source_provider.hpp</a>&gt;</span></div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="nothing_8hpp.html">stout/nothing.hpp</a>&gt;</span></div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="option_8hpp.html">stout/option.hpp</a>&gt;</span></div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;</div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;<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>&#160;<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>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;<span class="comment">// Forward declarations.</span></div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Call, <span class="keyword">typename</span> Event&gt;</div><div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1HttpConnectionProcess.html">   41</a></span>&#160;<span class="keyword">class </span><a class="code" href="classmesos_1_1internal_1_1HttpConnectionProcess.html">HttpConnectionProcess</a>;</div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;</div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;<span class="keyword">class </span><a class="code" href="classmesos_1_1internal_1_1EndpointDetector.html">EndpointDetector</a>;</div>
 <div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;</div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;} <span class="comment">// namespace internal {</span></div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;</div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;<span class="keyword">namespace </span>v1 {</div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;<span class="keyword">namespace </span>resource_provider {</div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;</div><div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="namespacemesos_1_1v1_1_1resource__provider.html#a8979cd8b1f8485e283620cf6827d21fc">   50</a></span>&#160;typedef ::mesos::internal::HttpConnectionProcess&lt;Call, Event&gt; <a class="code" href="namespacemesos_1_1v1_1_1resource__provider.html#a8979cd8b1f84
 85e283620cf6827d21fc">DriverProcess</a>;</div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;</div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;</div><div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="classmesos_1_1v1_1_1resource__provider_1_1Driver.html">   56</a></span>&#160;<span class="keyword">class </span><a class="code" href="classmesos_1_1v1_1_1resource__provider_1_1Driver.html">Driver</a></div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;{</div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;  <a class="code" href="classmesos_1_1v1_1_1resource__provider_1_1Driver.html">Driver</a>(<a class="code" href="classprocess_1_1Owned.html">process::Owned&lt;mesos::internal::EndpointDetector&gt;</a> detector,</di
 v><div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;         <a class="code" href="namespacemesos.html#a13035ce0cc66cca4a467787b4716039e">ContentType</a> contentType,</div><div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;         <span class="keyword">const</span> std::function&lt;<span class="keywordtype">void</span>(<span class="keywordtype">void</span>)&gt;&amp; connected,</div><div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;         <span class="keyword">const</span> std::function&lt;<span class="keywordtype">void</span>(<span class="keywordtype">void</span>)&gt;&amp; disconnected,</div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;         <span class="keyword">const</span> std::function&lt;<span class="keywordtype">void</span>(<span class="keyword">const</span> std::queue&lt;Event&gt;&amp;)&gt;&amp; received,</div><div class="line"><a name="l00084"></a><span c
 lass="lineno">   84</span>&#160;         <span class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;std::string&gt;</a>&amp; token);</div><div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;</div><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;  ~<a class="code" href="classmesos_1_1v1_1_1resource__provider_1_1Driver.html">Driver</a>();</div><div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;</div><div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;  <span class="keywordtype">void</span> <a class="code" href="namespacesystemd_1_1slices.html#a95aa197d8eed9f20dacb44f433b15f01">start</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;</div><div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;  <a class="code" href="classmesos_1_1v1_1_1resource__provider_1_1
 Driver.html">Driver</a>(<span class="keyword">const</span> <a class="code" href="classmesos_1_1v1_1_1resource__provider_1_1Driver.html">Driver</a>&amp; other) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;  <a class="code" href="classmesos_1_1v1_1_1resource__provider_1_1Driver.html">Driver</a>&amp; operator=(<span class="keyword">const</span> <a class="code" href="classmesos_1_1v1_1_1resource__provider_1_1Driver.html">Driver</a>&amp; other) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;</div><div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;  <a class="code" href="classprocess_1_1Future.html">process::Future&lt;Nothing&gt;</a> <a class="code" href="namespacenet.html#aa0a46766b4aca53ea50e1921567ddb40">send</a>(<span class="keyword">const</span> <a class="code" href="namespacemesos_1_1internal_1_1tests_1_1v1
 _1_1scheduler.html#acb18ceaa5f6f2338f2a9727af398eb79">Call</a>&amp; call);</div><div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;</div><div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;  <a class="code" href="classprocess_1_1Owned.html">process::Owned&lt;DriverProcess&gt;</a> <a class="code" href="namespaceos.html#ae19e4161a51b86a1f330f3bf1dc75389">process</a>;</div><div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;};</div><div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;</div><div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;} <span class="comment">// namespace resource_provider {</span></div><div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;} <span class="comment">// namespace v1 {</span></div><
 div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;} <span class="comment">// namespace mesos {</span></div><div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;</div><div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;<span class="preprocessor">#endif // __MESOS_V1_RESOURCE_PROVIDER_HPP__</span></div><div class="ttc" id="include_2mesos_2http_8hpp_html"><div class="ttname"><a href="include_2mesos_2http_8hpp.html">http.hpp</a></div></div>
+<a href="v1_2resource__provider_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>&#160;<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>&#160;<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>&#160;<span class="comment">// distributed with this work for additional information</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<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>&#160;<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>&#160;<span class="comment">// &quot;License&quot;); you may not use this file except in compliance</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<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>&#160;<span class="commen
 t">// distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<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>&#160;<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>&#160;<span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;</div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="preprocessor">#ifndef __MESOS_V1_RESOURCE_PROVIDER_HPP__</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="preprocessor">#define __MESOS_V1_RESOURCE_PROVIDER_
 HPP__</span></div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="preprocessor">#include &lt;functional&gt;</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="preprocessor">#include &lt;queue&gt;</span></div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="future_8hpp.html">process/future.hpp</a>&gt;</span></div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="3rdparty_2libprocess_2include_2process_2http_8hpp.html">process/http.hpp</a>&gt;</span></div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="prepr
 ocessor">#include &lt;<a class="code" href="owned_8hpp.html">process/owned.hpp</a>&gt;</span></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>&#160;<span class="preprocessor">#include &lt;<a class="code" href="include_2mesos_2http_8hpp.html">mesos/http.hpp</a>&gt;</span></div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;</div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="include_2mesos_2v1_2mesos_8hpp.html">mesos/v1/mesos.hpp</a>&gt;</span></div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;</div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="v1_2resource__provider_2resource__provider_8hpp.html">mesos/v1/resource_provider/re
 source_provider.hpp</a>&gt;</span></div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="nothing_8hpp.html">stout/nothing.hpp</a>&gt;</span></div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="option_8hpp.html">stout/option.hpp</a>&gt;</span></div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;</div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;<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>&#160;<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>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;<span class="comment">// Forward declarations.</span></div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Call, <span class="keyword">typename</span> Event&gt;</div><div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1HttpConnectionProcess.html">   41</a></span>&#160;<span class="keyword">class </span><a class="code" href="classmesos_1_1internal_1_1HttpConnectionProcess.html">HttpConnectionProcess</a>;</div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;</div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;<span class="keyword">class </span><a class="code" href="classmesos_1_1internal_1_1EndpointDetector.html">EndpointDetector</a>;</div>
 <div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;</div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;} <span class="comment">// namespace internal {</span></div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;</div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;<span class="keyword">namespace </span>v1 {</div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;<span class="keyword">namespace </span>resource_provider {</div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;</div><div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="namespacemesos_1_1v1_1_1resource__provider.html#a8979cd8b1f8485e283620cf6827d21fc">   50</a></span>&#160;typedef ::mesos::internal::HttpConnectionProcess&lt;Call, Event&gt; <a class="code" href="namespacemesos_1_1v1_1_1resource__provider.html#a8979cd8b1f84
 85e283620cf6827d21fc">DriverProcess</a>;</div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;</div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;</div><div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="classmesos_1_1v1_1_1resource__provider_1_1Driver.html">   56</a></span>&#160;<span class="keyword">class </span><a class="code" href="classmesos_1_1v1_1_1resource__provider_1_1Driver.html">Driver</a></div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;{</div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;  <a class="code" href="classmesos_1_1v1_1_1resource__provider_1_1Driver.html">Driver</a>(<a class="code" href="classprocess_1_1Owned.html">process::Owned&lt;mesos::internal::EndpointDetector&gt;</a> detector,</di
 v><div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;         <a class="code" href="namespacemesos.html#a13035ce0cc66cca4a467787b4716039e">ContentType</a> contentType,</div><div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;         <span class="keyword">const</span> std::function&lt;<span class="keywordtype">void</span>(<span class="keywordtype">void</span>)&gt;&amp; connected,</div><div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;         <span class="keyword">const</span> std::function&lt;<span class="keywordtype">void</span>(<span class="keywordtype">void</span>)&gt;&amp; disconnected,</div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;         <span class="keyword">const</span> std::function&lt;<span class="keywordtype">void</span>(<span class="keyword">const</span> std::queue&lt;Event&gt;&amp;)&gt;&amp; received,</div><div class="line"><a name="l00084"></a><span c
 lass="lineno">   84</span>&#160;         <span class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;std::string&gt;</a>&amp; token);</div><div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;</div><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;  ~<a class="code" href="classmesos_1_1v1_1_1resource__provider_1_1Driver.html">Driver</a>();</div><div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;</div><div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;  <span class="keywordtype">void</span> <a class="code" href="namespacesystemd_1_1slices.html#a95aa197d8eed9f20dacb44f433b15f01">start</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;</div><div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;  <a class="code" href="classmesos_1_1v1_1_1resource__provider_1_1
 Driver.html">Driver</a>(<span class="keyword">const</span> <a class="code" href="classmesos_1_1v1_1_1resource__provider_1_1Driver.html">Driver</a>&amp; other) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;  <a class="code" href="classmesos_1_1v1_1_1resource__provider_1_1Driver.html">Driver</a>&amp; operator=(<span class="keyword">const</span> <a class="code" href="classmesos_1_1v1_1_1resource__provider_1_1Driver.html">Driver</a>&amp; other) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;</div><div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;  <a class="code" href="classprocess_1_1Future.html">process::Future&lt;Nothing&gt;</a> <a class="code" href="namespaceprocess_1_1windows.html#a04c64346155d34517acdf8b587162868">send</a>(<span class="keyword">const</span> <a class="code" href="namespacemesos_1_1internal
 _1_1tests_1_1v1_1_1scheduler.html#acb18ceaa5f6f2338f2a9727af398eb79">Call</a>&amp; call);</div><div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;</div><div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;  <a class="code" href="classprocess_1_1Owned.html">process::Owned&lt;DriverProcess&gt;</a> <a class="code" href="namespaceos.html#ae19e4161a51b86a1f330f3bf1dc75389">process</a>;</div><div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;};</div><div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;</div><div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;} <span class="comment">// namespace resource_provider {</span></div><div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;} <span class="comment">// namespace v1 
 {</span></div><div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;} <span class="comment">// namespace mesos {</span></div><div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;</div><div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;<span class="preprocessor">#endif // __MESOS_V1_RESOURCE_PROVIDER_HPP__</span></div><div class="ttc" id="include_2mesos_2http_8hpp_html"><div class="ttname"><a href="include_2mesos_2http_8hpp.html">http.hpp</a></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="classOption_html"><div class="ttname"><a href="classOption.html">Option&lt; std::string &gt;</a></div></div>
 <div class="ttc" id="namespacemesos_1_1internal_1_1tests_1_1v1_1_1scheduler_html_acb18ceaa5f6f2338f2a9727af398eb79"><div class="ttname"><a href="namespacemesos_1_1internal_1_1tests_1_1v1_1_1scheduler.html#acb18ceaa5f6f2338f2a9727af398eb79">mesos::internal::tests::v1::scheduler::Call</a></div><div class="ttdeci">mesos::v1::scheduler::Call Call</div><div class="ttdef"><b>Definition:</b> mesos.hpp:2660</div></div>
@@ -62,7 +62,6 @@
 <div class="ttc" id="namespacemesos_1_1v1_1_1resource__provider_html_a8979cd8b1f8485e283620cf6827d21fc"><div class="ttname"><a href="namespacemesos_1_1v1_1_1resource__provider.html#a8979cd8b1f8485e283620cf6827d21fc">mesos::v1::resource_provider::DriverProcess</a></div><div class="ttdeci">::mesos::internal::HttpConnectionProcess&lt; Call, Event &gt; DriverProcess</div><div class="ttdef"><b>Definition:</b> resource_provider.hpp:50</div></div>
 <div class="ttc" id="namespacesystemd_1_1slices_html_a95aa197d8eed9f20dacb44f433b15f01"><div class="ttname"><a href="namespacesystemd_1_1slices.html#a95aa197d8eed9f20dacb44f433b15f01">systemd::slices::start</a></div><div class="ttdeci">Try&lt; Nothing &gt; start(const std::string &amp;name)</div><div class="ttdoc">Starts the slice with the given name (via &amp;#39;systemctl start &lt;name&gt;&amp;#39;). </div></div>
 <div class="ttc" id="classmesos_1_1v1_1_1resource__provider_1_1Driver_html"><div class="ttname"><a href="classmesos_1_1v1_1_1resource__provider_1_1Driver.html">mesos::v1::resource_provider::Driver</a></div><div class="ttdoc">Resource provider driver. </div><div class="ttdef"><b>Definition:</b> resource_provider.hpp:56</div></div>
-<div class="ttc" id="namespacenet_html_aa0a46766b4aca53ea50e1921567ddb40"><div class="ttname"><a href="namespacenet.html#aa0a46766b4aca53ea50e1921567ddb40">net::send</a></div><div class="ttdeci">ssize_t send(const int_fd &amp;fd, const void *buf, size_t len, int flags)</div><div class="ttdef"><b>Definition:</b> socket.hpp:159</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="namespacemesos_html"><div class="ttname"><a href="namespacemesos.html">mesos</a></div><div class="ttdef"><b>Definition:</b> spec.hpp:30</div></div>
 <div class="ttc" id="option_8hpp_html"><div class="ttname"><a href="option_8hpp.html">option.hpp</a></div></div>
@@ -74,6 +73,7 @@
 <div class="ttc" id="classprocess_1_1Owned_html"><div class="ttname"><a href="classprocess_1_1Owned.html">process::Owned&lt; mesos::internal::EndpointDetector &gt;</a></div></div>
 <div class="ttc" id="3rdparty_2libprocess_2include_2process_2http_8hpp_html"><div class="ttname"><a href="3rdparty_2libprocess_2include_2process_2http_8hpp.html">http.hpp</a></div></div>
 <div class="ttc" id="classprocess_1_1Future_html"><div class="ttname"><a href="classprocess_1_1Future.html">process::Future&lt; Nothing &gt;</a></div></div>
+<div class="ttc" id="namespaceprocess_1_1windows_html_a04c64346155d34517acdf8b587162868"><div class="ttname"><a href="namespaceprocess_1_1windows.html#a04c64346155d34517acdf8b587162868">process::windows::send</a></div><div class="ttdeci">Future&lt; size_t &gt; send(const int_fd &amp;fd, const void *buf, size_t size)</div></div>
 </div><!-- fragment --></div><!-- contents -->
 <!-- start footer part -->
 <hr class="footer"/><address class="footer"><small>


[47/50] mesos-site git commit: Updated the website built from mesos SHA: 7c9c72d.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/3rdparty_2libprocess_2include_2process_2protobuf_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/3rdparty_2libprocess_2include_2process_2protobuf_8hpp_source.html b/content/api/latest/c++/3rdparty_2libprocess_2include_2process_2protobuf_8hpp_source.html
index ffa98d0..472d98a 100644
--- a/content/api/latest/c++/3rdparty_2libprocess_2include_2process_2protobuf_8hpp_source.html
+++ b/content/api/latest/c++/3rdparty_2libprocess_2include_2process_2protobuf_8hpp_source.html
@@ -52,7 +52,7 @@
 <div class="title">protobuf.hpp</div>  </div>
 </div><!--header-->
 <div class="contents">
-<a href="3rdparty_2libprocess_2include_2process_2protobuf_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>&#160;<span class="comment">// Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<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>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<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>&#160;<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>&#160;<span class="comment">// distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<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>&#160;<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>&#160;<span class="comment">// limitations under the License</span></div><div class="line"><a name="l00012"></a><span class="line
 no">   12</span>&#160;</div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="preprocessor">#ifndef __PROCESS_PROTOBUF_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="preprocessor">#define __PROCESS_PROTOBUF_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;</div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="preprocessor">#include &lt;glog/logging.h&gt;</span></div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="preprocessor">#include &lt;google/protobuf/arena.h&gt;</span></div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;<span class="preprocessor">#include &lt;google/protobuf/message.h&gt;</span></div><div class="line"><a name="l00020"
 ></a><span class="lineno">   20</span>&#160;<span class="preprocessor">#include &lt;google/protobuf/repeated_field.h&gt;</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;</div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="preprocessor">#include &lt;iterator&gt;</span></div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="preprocessor">#include &lt;set&gt;</span></div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="preprocessor">#include &lt;vector&gt;</span></div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;</div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="defer_8hpp.html">process/defer.hpp</a>&gt;</span></div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<
 span class="preprocessor">#include &lt;<a class="code" href="dispatch_8hpp.html">process/dispatch.hpp</a>&gt;</span></div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="id_8hpp.html">process/id.hpp</a>&gt;</span></div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="libprocess_2include_2process_2process_8hpp.html">process/process.hpp</a>&gt;</span></div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;</div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="hashmap_8hpp.html">stout/hashmap.hpp</a>&gt;</span></div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="lambda_8hpp.html">stout/lambda.hpp</
 a>&gt;</span></div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;</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>&#160;<span class="comment">// Provides an implementation of process::post that for a protobuf.</span></div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceprocess.html">process</a> {</div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;</div><div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="namespaceprocess.html#ab52d25f9fe4b28df7268c688725894d9">   38</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespaceprocess.html#a2b0f5478fa6a52497167aa994ff600d9">post</a>(<span class="keyword">const</span> <a clas
 s="code" href="structprocess_1_1UPID.html">process::UPID</a>&amp; to,</div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;                 <span class="keyword">const</span> google::protobuf::Message&amp; message)</div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;{</div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;  std::string data;</div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;  message.SerializeToString(&amp;data);</div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;  <a class="code" href="namespaceprocess.html#a2b0f5478fa6a52497167aa994ff600d9">post</a>(to, message.GetTypeName(), data.data(), data.size());</div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;}</div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;</div><div class="line"><a name="l00046"></a><
 span class="lineno">   46</span>&#160;</div><div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="namespaceprocess.html#a45cacee57eaefdcc54028e6a5c5ba83d">   47</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespaceprocess.html#a2b0f5478fa6a52497167aa994ff600d9">post</a>(<span class="keyword">const</span> <a class="code" href="structprocess_1_1UPID.html">process::UPID</a>&amp; from,</div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;                 <span class="keyword">const</span> <a class="code" href="structprocess_1_1UPID.html">process::UPID</a>&amp; to,</div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;                 <span class="keyword">const</span> google::protobuf::Message&amp; message)</div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;{</div><div class="line"><a name="l00051"></a>
 <span class="lineno">   51</span>&#160;  std::string data;</div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;  message.SerializeToString(&amp;data);</div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;  <a class="code" href="namespaceprocess.html#a2b0f5478fa6a52497167aa994ff600d9">post</a>(from, to, message.GetTypeName(), data.data(), data.size());</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>&#160;</div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;} <span class="comment">// namespace process {</span></div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;</div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;</div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;<span class="comment">// 
 The rest of this file provides libprocess &quot;support&quot; for using</span></div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;<span class="comment">// protocol buffers. In particular, this file defines a subclass of</span></div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;<span class="comment">// Process (ProtobufProcess) that allows you to install protocol</span></div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;<span class="comment">// buffer handlers in addition to normal message and HTTP</span></div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;<span class="comment">// handlers. Install handlers can optionally take the sender&#39;s UPID</span></div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;<span class="comment">// as their first argument.</span></div><div class="line"><a name="l00065"></a><span class="lineno">  
  65</span>&#160;<span class="comment">// Note that this header file assumes you will be linking</span></div><div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;<span class="comment">// against BOTH libprotobuf and libglog.</span></div><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;</div><div class="line"><a name="l00068"></a><span class="lineno"><a class="line" href="namespacegoogle.html">   68</a></span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacegoogle.html">google</a> {</div><div class="line"><a name="l00069"></a><span class="lineno"><a class="line" href="namespacegoogle_1_1protobuf.html">   69</a></span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceprotobuf.html">protobuf</a> {</div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;</div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;<span class="comment
 ">// Type conversions helpful for changing between protocol buffer types</span></div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;<span class="comment">// and standard C++ types (for parameters).</span></div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l00074"></a><span class="lineno"><a class="line" href="namespacegoogle_1_1protobuf.html#aee8eca8614f1e8ce851c94890b57482b">   74</a></span>&#160;<span class="keyword">const</span> T&amp; <a class="code" href="convert_8hpp.html#aebbb6488a44f0e941d3aa6e7eb087e52">convert</a>(<span class="keyword">const</span> T&amp; t)</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>&#160;  <span class="keywordflow">return</span> t;</div><div class="line"><a na
 me="l00077"></a><span class="lineno">   77</span>&#160;}</div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;</div><div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;</div><div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l00081"></a><span class="lineno"><a class="line" href="namespacegoogle_1_1protobuf.html#aa37c14fc80bf93a711b3955ca6fc879b">   81</a></span>&#160;std::vector&lt;T&gt; <a class="code" href="convert_8hpp.html#aebbb6488a44f0e941d3aa6e7eb087e52">convert</a>(<span class="keyword">const</span> google::protobuf::RepeatedPtrField&lt;T&gt;&amp; items)</div><div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;{</div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;  <span class="keywordflow">return</span> std::vector&lt;T&
 gt;(items.begin(), items.end());</div><div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;}</div><div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;</div><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;</div><div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l00088"></a><span class="lineno"><a class="line" href="namespacegoogle_1_1protobuf.html#ab7dad5f52d7a173b8d69759e2d206c3a">   88</a></span>&#160;std::vector&lt;T&gt; <a class="code" href="convert_8hpp.html#aebbb6488a44f0e941d3aa6e7eb087e52">convert</a>(google::protobuf::RepeatedPtrField&lt;T&gt;&amp;&amp; items)</div><div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;{</div><div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;  <span class="keywordflow">
 return</span> std::vector&lt;T&gt;(</div><div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;      std::make_move_iterator(items.begin()),</div><div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;      std::make_move_iterator(items.end()));</div><div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;}</div><div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;</div><div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;} <span class="comment">// namespace protobuf {</span></div><div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;} <span class="comment">// namespace google {</span></div><div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;</div><div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;</div><div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;<span clas
 s="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l00100"></a><span class="lineno"><a class="line" href="classProtobufProcess.html">  100</a></span>&#160;<span class="keyword">class </span><a class="code" href="classProtobufProcess.html">ProtobufProcess</a> : <span class="keyword">public</span> <a class="code" href="classprocess_1_1Process.html">process::Process</a>&lt;T&gt;</div><div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;{</div><div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00103"></a><span class="lineno"><a class="line" href="classProtobufProcess.html#ade255e672ae628b3297c614e95b7917d">  103</a></span>&#160;  <span class="keyword">virtual</span> <a class="code" href="classProtobufProcess.html#ade255e672ae628b3297c614e95b7917d">~ProtobufProcess</a>() {}</div><div class="line"><a name="l00104
 "></a><span class="lineno">  104</span>&#160;</div><div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;<span class="keyword">protected</span>:</div><div class="line"><a name="l00106"></a><span class="lineno"><a class="line" href="classProtobufProcess.html#a5c6659fa98d4c54ae10ced56690f08ee">  106</a></span>&#160;  <span class="keywordtype">void</span> <a class="code" href="classProtobufProcess.html#a5c6659fa98d4c54ae10ced56690f08ee">consume</a>(<a class="code" href="structprocess_1_1MessageEvent.html">process::MessageEvent</a>&amp;&amp; event)<span class="keyword"> override</span></div><div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;<span class="keyword">  </span>{</div><div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;    <span class="keywordflow">if</span> (protobufHandlers.count(event.message.name) &gt; 0) {</div><div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;      fr
 om = <span class="keyword">event</span>.message.from; <span class="comment">// For &#39;reply&#39;.</span></div><div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;      protobufHandlers[<span class="keyword">event</span>.message.name](</div><div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;          <span class="keyword">event</span>.message.from, <span class="keyword">event</span>.message.body);</div><div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;      from = <a class="code" href="structprocess_1_1UPID.html">process::UPID</a>();</div><div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;    } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;      <a class="code" href="classprocess_1_1ProcessBase.html#aab442a83e7b73449ad9237af4ad02a80">process::Process&lt;T&gt;::consume</a>(std::move(event));</div><div
  class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;    }</div><div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;  }</div><div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;</div><div class="line"><a name="l00118"></a><span class="lineno"><a class="line" href="classProtobufProcess.html#a6c404fdc490a7199a0d2ad881d588e5c">  118</a></span>&#160;  <span class="keywordtype">void</span> <a class="code" href="classProtobufProcess.html#a6c404fdc490a7199a0d2ad881d588e5c">send</a>(<span class="keyword">const</span> <a class="code" href="structprocess_1_1UPID.html">process::UPID</a>&amp; to,</div><div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;            <span class="keyword">const</span> google::protobuf::Message&amp; message)</div><div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;  {</div><div class="line"><a name="l00121"></a><span class="lineno">  121</spa
 n>&#160;    std::string data;</div><div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;    message.SerializeToString(&amp;data);</div><div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;    <a class="code" href="classprocess_1_1ProcessBase.html#af90d581940120abfb787e46568e7a3af">process::Process&lt;T&gt;::send</a>(to, message.GetTypeName(), std::move(data));</div><div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;  }</div><div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;</div><div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;  <span class="keyword">using</span> <a class="code" href="classprocess_1_1Process.html">process::Process&lt;T&gt;::send</a>;</div><div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;</div><div class="line"><a name="l00128"></a><span class="lineno"><a class="line" href="classProtobufProcess.html#aac3a38
 ee730baa94fcc6c94482f8f756">  128</a></span>&#160;  <span class="keywordtype">void</span> <a class="code" href="classProtobufProcess.html#aac3a38ee730baa94fcc6c94482f8f756">reply</a>(<span class="keyword">const</span> google::protobuf::Message&amp; message)</div><div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;  {</div><div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;    CHECK(from) &lt;&lt; <span class="stringliteral">&quot;Attempting to reply without a sender&quot;</span>;</div><div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;    <a class="code" href="namespacenet.html#aa0a46766b4aca53ea50e1921567ddb40">send</a>(from, message);</div><div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;  }</div><div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;</div><div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;  <span class="com
 ment">// Installs that take the sender as the first argument.</span></div><div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;  <span class="keyword">template</span> &lt;<span class="keyword">typename</span> M&gt;</div><div class="line"><a name="l00136"></a><span class="lineno"><a class="line" href="classProtobufProcess.html#a9e844001b1b4af4b57923a719f1e128a">  136</a></span>&#160;  <span class="keywordtype">void</span> <a class="code" href="classProtobufProcess.html#a9e844001b1b4af4b57923a719f1e128a">install</a>(<span class="keywordtype">void</span> (T::*method)(<span class="keyword">const</span> <a class="code" href="structprocess_1_1UPID.html">process::UPID</a>&amp;, <span class="keyword">const</span> M&amp;))</div><div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;  {</div><div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;    google::protobuf::Message* m = <span class="keyword">new</span> M();</div>
 <div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;    T* t = <span class="keyword">static_cast&lt;</span>T*<span class="keyword">&gt;</span>(<span class="keyword">this</span>);</div><div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;    protobufHandlers[m-&gt;GetTypeName()] =</div><div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;      <a class="code" href="namespaceprocess_1_1network.html#ad067110a4b38cc83785a43f49bf6c8e2">lambda::bind</a>(&amp;handlerM&lt;M&gt;,</div><div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;                   t, method,</div><div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;                   lambda::_1, lambda::_2);</div><div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;    <span class="keyword">delete</span> m;</div><div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#
 160;  }</div><div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;</div><div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;  <span class="keyword">template</span> &lt;<span class="keyword">typename</span> M&gt;</div><div class="line"><a name="l00148"></a><span class="lineno"><a class="line" href="classProtobufProcess.html#a8da6cd512073b5db2aa06a95c250efc1">  148</a></span>&#160;  <span class="keywordtype">void</span> <a class="code" href="classProtobufProcess.html#a8da6cd512073b5db2aa06a95c250efc1">install</a>(<span class="keywordtype">void</span> (T::*method)(<span class="keyword">const</span> <a class="code" href="structprocess_1_1UPID.html">process::UPID</a>&amp;, M&amp;&amp;))</div><div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;  {</div><div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;    google::protobuf::Message* m = <span class="keyword">new</span> M();</div><div cl
 ass="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;    T* t = <span class="keyword">static_cast&lt;</span>T*<span class="keyword">&gt;</span>(<span class="keyword">this</span>);</div><div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;    protobufHandlers[m-&gt;GetTypeName()] =</div><div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;      <a class="code" href="namespaceprocess_1_1network.html#ad067110a4b38cc83785a43f49bf6c8e2">lambda::bind</a>(&amp;handlerMutM&lt;M&gt;,</div><div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;                   t, method,</div><div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;                   lambda::_1, lambda::_2);</div><div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;    <span class="keyword">delete</span> m;</div><div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;
   }</div><div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;</div><div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;  <span class="keyword">template</span> &lt;<span class="keyword">typename</span> M, <span class="keyword">typename</span> P&gt;</div><div class="line"><a name="l00160"></a><span class="lineno"><a class="line" href="classProtobufProcess.html#a0657fb99bfae4fb1d83cb9fd13f8935a">  160</a></span>&#160;  <span class="keyword">using</span> <a class="code" href="classProtobufProcess.html#a0657fb99bfae4fb1d83cb9fd13f8935a">MessageProperty</a> = P(M::*)() <span class="keyword">const</span>;</div><div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;</div><div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;  <span class="keyword">template</span> &lt;<span class="keyword">typename</span> M&gt;</div><div class="line"><a name="l00163"></a><span class="lineno"><a class="line" hre
 f="classProtobufProcess.html#a1e6490de580b7d7ac897c24d81554536">  163</a></span>&#160;  <span class="keywordtype">void</span> <a class="code" href="classProtobufProcess.html#a1e6490de580b7d7ac897c24d81554536">install</a>(<span class="keywordtype">void</span> (T::*method)(<span class="keyword">const</span> <a class="code" href="structprocess_1_1UPID.html">process::UPID</a>&amp;))</div><div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;  {</div><div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;    google::protobuf::Message* m = <span class="keyword">new</span> M();</div><div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;    T* t = <span class="keyword">static_cast&lt;</span>T*<span class="keyword">&gt;</span>(<span class="keyword">this</span>);</div><div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;    protobufHandlers[m-&gt;GetTypeName()] =</div><div class="line"><a name="l00
 168"></a><span class="lineno">  168</span>&#160;      <a class="code" href="namespaceprocess_1_1network.html#ad067110a4b38cc83785a43f49bf6c8e2">lambda::bind</a>(&amp;handler0,</div><div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;                   t, method,</div><div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;                   lambda::_1, lambda::_2);</div><div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;    <span class="keyword">delete</span> m;</div><div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;  }</div><div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;</div><div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;  <span class="keyword">template</span> &lt;<span class="keyword">typename</span> M,</div><div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;            <span class="keyword"
 >typename</span> ...P, <span class="keyword">typename</span> ...PC&gt;</div><div class="line"><a name="l00176"></a><span class="lineno"><a class="line" href="classProtobufProcess.html#a26c145390616b42ec6b6e913adb60449">  176</a></span>&#160;  <span class="keywordtype">void</span> <a class="code" href="classProtobufProcess.html#a26c145390616b42ec6b6e913adb60449">install</a>(</div><div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;      <span class="keywordtype">void</span> (T::*method)(<span class="keyword">const</span> <a class="code" href="structprocess_1_1UPID.html">process::UPID</a>&amp;, PC...),</div><div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;      <a class="code" href="classProtobufProcess.html#a0657fb99bfae4fb1d83cb9fd13f8935a">MessageProperty&lt;M, P&gt;</a>... param)</div><div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;  {</div><div class="line"><a name="l00180"></a><span class="linen
 o">  180</span>&#160;    google::protobuf::Message* m = <span class="keyword">new</span> M();</div><div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;    T* t = <span class="keyword">static_cast&lt;</span>T*<span class="keyword">&gt;</span>(<span class="keyword">this</span>);</div><div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160;    protobufHandlers[m-&gt;GetTypeName()] =</div><div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;      <a class="code" href="namespaceprocess_1_1network.html#ad067110a4b38cc83785a43f49bf6c8e2">lambda::bind</a>(<span class="keyword">static_cast&lt;</span><span class="keywordtype">void</span>(&amp;)(</div><div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;                       T*,</div><div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;                       <span class="keywordtype">void</span> (T::*)(<span class="keywor
 d">const </span><a class="code" href="structprocess_1_1UPID.html">process::UPID</a>&amp;, PC...),</div><div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;                       <span class="keyword">const </span><a class="code" href="structprocess_1_1UPID.html">process::UPID</a>&amp;,</div><div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;                       <span class="keyword">const </span>std::string&amp;,</div><div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;                       <a class="code" href="classProtobufProcess.html#a0657fb99bfae4fb1d83cb9fd13f8935a">MessageProperty&lt;M, P&gt;</a>...)<span class="keyword">&gt;</span>(handlerN),</div><div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160;                   t, method,</div><div class="line"><a name="l00190"></a><span class="lineno">  190</span>&#160;                   lambda::_1, lambda::_2, param...);</div><
 div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160;    <span class="keyword">delete</span> m;</div><div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;  }</div><div class="line"><a name="l00193"></a><span class="lineno">  193</span>&#160;</div><div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#160;  <span class="comment">// Installs that do not take the sender.</span></div><div class="line"><a name="l00195"></a><span class="lineno">  195</span>&#160;  <span class="keyword">template</span> &lt;<span class="keyword">typename</span> M&gt;</div><div class="line"><a name="l00196"></a><span class="lineno"><a class="line" href="classProtobufProcess.html#ab3b1e7dbf45da39a0292fb8f0852e4a5">  196</a></span>&#160;  <span class="keywordtype">void</span> <a class="code" href="classProtobufProcess.html#ab3b1e7dbf45da39a0292fb8f0852e4a5">install</a>(<span class="keywordtype">void</span> (T::*method)(<span class="keyword">co
 nst</span> M&amp;))</div><div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;  {</div><div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160;    google::protobuf::Message* m = <span class="keyword">new</span> M();</div><div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160;    T* t = <span class="keyword">static_cast&lt;</span>T*<span class="keyword">&gt;</span>(<span class="keyword">this</span>);</div><div class="line"><a name="l00200"></a><span class="lineno">  200</span>&#160;    protobufHandlers[m-&gt;GetTypeName()] =</div><div class="line"><a name="l00201"></a><span class="lineno">  201</span>&#160;      <a class="code" href="namespaceprocess_1_1network.html#ad067110a4b38cc83785a43f49bf6c8e2">lambda::bind</a>(&amp;_handlerM&lt;M&gt;,</div><div class="line"><a name="l00202"></a><span class="lineno">  202</span>&#160;                   t, method,</div><div class="line"><a name="l00203"></a><span class="lineno
 ">  203</span>&#160;                   lambda::_1, lambda::_2);</div><div class="line"><a name="l00204"></a><span class="lineno">  204</span>&#160;    <span class="keyword">delete</span> m;</div><div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160;  }</div><div class="line"><a name="l00206"></a><span class="lineno">  206</span>&#160;</div><div class="line"><a name="l00207"></a><span class="lineno">  207</span>&#160;  <span class="keyword">template</span> &lt;<span class="keyword">typename</span> M&gt;</div><div class="line"><a name="l00208"></a><span class="lineno"><a class="line" href="classProtobufProcess.html#a4faf2af38ed759b4c9ea9112b991921d">  208</a></span>&#160;  <span class="keywordtype">void</span> <a class="code" href="classProtobufProcess.html#a4faf2af38ed759b4c9ea9112b991921d">install</a>(<span class="keywordtype">void</span> (T::*method)(M&amp;&amp;))</div><div class="line"><a name="l00209"></a><span class="lineno">  209</span>&#160;  {</div><di
 v class="line"><a name="l00210"></a><span class="lineno">  210</span>&#160;    google::protobuf::Message* m = <span class="keyword">new</span> M();</div><div class="line"><a name="l00211"></a><span class="lineno">  211</span>&#160;    T* t = <span class="keyword">static_cast&lt;</span>T*<span class="keyword">&gt;</span>(<span class="keyword">this</span>);</div><div class="line"><a name="l00212"></a><span class="lineno">  212</span>&#160;    protobufHandlers[m-&gt;GetTypeName()] =</div><div class="line"><a name="l00213"></a><span class="lineno">  213</span>&#160;      <a class="code" href="namespaceprocess_1_1network.html#ad067110a4b38cc83785a43f49bf6c8e2">lambda::bind</a>(&amp;_handlerMutM&lt;M&gt;,</div><div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160;                   t, method,</div><div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160;                   lambda::_1, lambda::_2);</div><div class="line"><a name="l00216"></a><spa
 n class="lineno">  216</span>&#160;    <span class="keyword">delete</span> m;</div><div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160;  }</div><div class="line"><a name="l00218"></a><span class="lineno">  218</span>&#160;</div><div class="line"><a name="l00219"></a><span class="lineno">  219</span>&#160;  <span class="keyword">template</span> &lt;<span class="keyword">typename</span> M&gt;</div><div class="line"><a name="l00220"></a><span class="lineno"><a class="line" href="classProtobufProcess.html#a78e5925cac3e2cfed66f5a1d0c1aee3e">  220</a></span>&#160;  <span class="keywordtype">void</span> <a class="code" href="classProtobufProcess.html#a78e5925cac3e2cfed66f5a1d0c1aee3e">install</a>(<span class="keywordtype">void</span> (T::*method)())</div><div class="line"><a name="l00221"></a><span class="lineno">  221</span>&#160;  {</div><div class="line"><a name="l00222"></a><span class="lineno">  222</span>&#160;    google::protobuf::Message* m = <span class="
 keyword">new</span> M();</div><div class="line"><a name="l00223"></a><span class="lineno">  223</span>&#160;    T* t = <span class="keyword">static_cast&lt;</span>T*<span class="keyword">&gt;</span>(<span class="keyword">this</span>);</div><div class="line"><a name="l00224"></a><span class="lineno">  224</span>&#160;    protobufHandlers[m-&gt;GetTypeName()] =</div><div class="line"><a name="l00225"></a><span class="lineno">  225</span>&#160;      <a class="code" href="namespaceprocess_1_1network.html#ad067110a4b38cc83785a43f49bf6c8e2">lambda::bind</a>(&amp;_handler0,</div><div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;                   t, method,</div><div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160;                   lambda::_1, lambda::_2);</div><div class="line"><a name="l00228"></a><span class="lineno">  228</span>&#160;    <span class="keyword">delete</span> m;</div><div class="line"><a name="l00229"></a><span class="
 lineno">  229</span>&#160;  }</div><div class="line"><a name="l00230"></a><span class="lineno">  230</span>&#160;</div><div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160;  <span class="keyword">template</span> &lt;<span class="keyword">typename</span> M,</div><div class="line"><a name="l00232"></a><span class="lineno">  232</span>&#160;            <span class="keyword">typename</span> ...P, <span class="keyword">typename</span> ...PC&gt;</div><div class="line"><a name="l00233"></a><span class="lineno"><a class="line" href="classProtobufProcess.html#a2a43dbf78901ee50fb93fa330f9632d7">  233</a></span>&#160;  <span class="keywordtype">void</span> <a class="code" href="classProtobufProcess.html#a2a43dbf78901ee50fb93fa330f9632d7">install</a>(</div><div class="line"><a name="l00234"></a><span class="lineno">  234</span>&#160;      <span class="keywordtype">void</span> (T::*method)(PC...),</div><div class="line"><a name="l00235"></a><span class="lineno">  235</sp
 an>&#160;      <a class="code" href="classProtobufProcess.html#a0657fb99bfae4fb1d83cb9fd13f8935a">MessageProperty&lt;M, P&gt;</a>... param)</div><div class="line"><a name="l00236"></a><span class="lineno">  236</span>&#160;  {</div><div class="line"><a name="l00237"></a><span class="lineno">  237</span>&#160;    google::protobuf::Message* m = <span class="keyword">new</span> M();</div><div class="line"><a name="l00238"></a><span class="lineno">  238</span>&#160;    T* t = <span class="keyword">static_cast&lt;</span>T*<span class="keyword">&gt;</span>(<span class="keyword">this</span>);</div><div class="line"><a name="l00239"></a><span class="lineno">  239</span>&#160;    protobufHandlers[m-&gt;GetTypeName()] =</div><div class="line"><a name="l00240"></a><span class="lineno">  240</span>&#160;      <a class="code" href="namespaceprocess_1_1network.html#ad067110a4b38cc83785a43f49bf6c8e2">lambda::bind</a>(<span class="keyword">static_cast&lt;</span><span class="keywordtype">void</span>
 (&amp;)(</div><div class="line"><a name="l00241"></a><span class="lineno">  241</span>&#160;                       T*,</div><div class="line"><a name="l00242"></a><span class="lineno">  242</span>&#160;                       <span class="keywordtype">void</span> (T::*)(PC...),</div><div class="line"><a name="l00243"></a><span class="lineno">  243</span>&#160;                       <span class="keyword">const </span><a class="code" href="structprocess_1_1UPID.html">process::UPID</a>&amp;,</div><div class="line"><a name="l00244"></a><span class="lineno">  244</span>&#160;                       <span class="keyword">const </span>std::string&amp;,</div><div class="line"><a name="l00245"></a><span class="lineno">  245</span>&#160;                       <a class="code" href="classProtobufProcess.html#a0657fb99bfae4fb1d83cb9fd13f8935a">MessageProperty&lt;M, P&gt;</a>...)<span class="keyword">&gt;</span>(_handlerN),</div><div class="line"><a name="l00246"></a><span class="lineno">  246</spa
 n>&#160;                   t, method,</div><div class="line"><a name="l00247"></a><span class="lineno">  247</span>&#160;                   lambda::_1, lambda::_2, param...);</div><div class="line"><a name="l00248"></a><span class="lineno">  248</span>&#160;    <span class="keyword">delete</span> m;</div><div class="line"><a name="l00249"></a><span class="lineno">  249</span>&#160;  }</div><div class="line"><a name="l00250"></a><span class="lineno">  250</span>&#160;</div><div class="line"><a name="l00251"></a><span class="lineno">  251</span>&#160;  <span class="keyword">using</span> <a class="code" href="classprocess_1_1Process.html">process::Process&lt;T&gt;::install</a>;</div><div class="line"><a name="l00252"></a><span class="lineno">  252</span>&#160;</div><div class="line"><a name="l00253"></a><span class="lineno">  253</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00254"></a><span class="lineno">  254</span>&#160;  <span class="comment">/
 / Handlers that take the sender as the first argument.</span></div><div class="line"><a name="l00255"></a><span class="lineno">  255</span>&#160;  <span class="keyword">template</span> &lt;<span class="keyword">typename</span> M&gt;</div><div class="line"><a name="l00256"></a><span class="lineno">  256</span>&#160;  <span class="keyword">static</span> <span class="keywordtype">void</span> handlerM(</div><div class="line"><a name="l00257"></a><span class="lineno">  257</span>&#160;      T* t,</div><div class="line"><a name="l00258"></a><span class="lineno">  258</span>&#160;      <span class="keywordtype">void</span> (T::*method)(<span class="keyword">const</span> <a class="code" href="structprocess_1_1UPID.html">process::UPID</a>&amp;, <span class="keyword">const</span> M&amp;),</div><div class="line"><a name="l00259"></a><span class="lineno">  259</span>&#160;      <span class="keyword">const</span> <a class="code" href="structprocess_1_1UPID.html">process::UPID</a>&amp; sender,</d
 iv><div class="line"><a name="l00260"></a><span class="lineno">  260</span>&#160;      <span class="keyword">const</span> std::string&amp; data)</div><div class="line"><a name="l00261"></a><span class="lineno">  261</span>&#160;  {</div><div class="line"><a name="l00262"></a><span class="lineno">  262</span>&#160;    google::protobuf::Arena arena;</div><div class="line"><a name="l00263"></a><span class="lineno">  263</span>&#160;    M* m = CHECK_NOTNULL(google::protobuf::Arena::CreateMessage&lt;M&gt;(&amp;arena));</div><div class="line"><a name="l00264"></a><span class="lineno">  264</span>&#160;    m-&gt;ParseFromString(data);</div><div class="line"><a name="l00265"></a><span class="lineno">  265</span>&#160;</div><div class="line"><a name="l00266"></a><span class="lineno">  266</span>&#160;    <span class="keywordflow">if</span> (m-&gt;IsInitialized()) {</div><div class="line"><a name="l00267"></a><span class="lineno">  267</span>&#160;      (t-&gt;*method)(sender, *m);</div><div 
 class="line"><a name="l00268"></a><span class="lineno">  268</span>&#160;    } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00269"></a><span class="lineno">  269</span>&#160;      LOG(WARNING) &lt;&lt; <span class="stringliteral">&quot;Initialization errors: &quot;</span></div><div class="line"><a name="l00270"></a><span class="lineno">  270</span>&#160;                   &lt;&lt; m-&gt;InitializationErrorString();</div><div class="line"><a name="l00271"></a><span class="lineno">  271</span>&#160;    }</div><div class="line"><a name="l00272"></a><span class="lineno">  272</span>&#160;  }</div><div class="line"><a name="l00273"></a><span class="lineno">  273</span>&#160;</div><div class="line"><a name="l00274"></a><span class="lineno">  274</span>&#160;  <span class="keyword">template</span> &lt;<span class="keyword">typename</span> M&gt;</div><div class="line"><a name="l00275"></a><span class="lineno">  275</span>&#160;  <span class="keyword">static</span
 > <span class="keywordtype">void</span> handlerMutM(</div><div class="line"><a name="l00276"></a><span class="lineno">  276</span>&#160;      T* t,</div><div class="line"><a name="l00277"></a><span class="lineno">  277</span>&#160;      <span class="keywordtype">void</span> (T::*method)(<span class="keyword">const</span> <a class="code" href="structprocess_1_1UPID.html">process::UPID</a>&amp;, M&amp;&amp;),</div><div class="line"><a name="l00278"></a><span class="lineno">  278</span>&#160;      <span class="keyword">const</span> <a class="code" href="structprocess_1_1UPID.html">process::UPID</a>&amp; sender,</div><div class="line"><a name="l00279"></a><span class="lineno">  279</span>&#160;      <span class="keyword">const</span> std::string&amp; data)</div><div class="line"><a name="l00280"></a><span class="lineno">  280</span>&#160;  {</div><div class="line"><a name="l00281"></a><span class="lineno">  281</span>&#160;    M m;</div><div class="line"><a name="l00282"></a><span class
 ="lineno">  282</span>&#160;    m.ParseFromString(data);</div><div class="line"><a name="l00283"></a><span class="lineno">  283</span>&#160;</div><div class="line"><a name="l00284"></a><span class="lineno">  284</span>&#160;    <span class="keywordflow">if</span> (m.IsInitialized()) {</div><div class="line"><a name="l00285"></a><span class="lineno">  285</span>&#160;      (t-&gt;*method)(sender, std::move(m));</div><div class="line"><a name="l00286"></a><span class="lineno">  286</span>&#160;    } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00287"></a><span class="lineno">  287</span>&#160;      LOG(WARNING) &lt;&lt; <span class="stringliteral">&quot;Initialization errors: &quot;</span></div><div class="line"><a name="l00288"></a><span class="lineno">  288</span>&#160;                   &lt;&lt; m.InitializationErrorString();</div><div class="line"><a name="l00289"></a><span class="lineno">  289</span>&#160;    }</div><div class="line"><a name="l00290"><
 /a><span class="lineno">  290</span>&#160;  }</div><div class="line"><a name="l00291"></a><span class="lineno">  291</span>&#160;</div><div class="line"><a name="l00292"></a><span class="lineno">  292</span>&#160;  <span class="keyword">static</span> <span class="keywordtype">void</span> handler0(</div><div class="line"><a name="l00293"></a><span class="lineno">  293</span>&#160;      T* t,</div><div class="line"><a name="l00294"></a><span class="lineno">  294</span>&#160;      <span class="keywordtype">void</span> (T::*method)(<span class="keyword">const</span> <a class="code" href="structprocess_1_1UPID.html">process::UPID</a>&amp;),</div><div class="line"><a name="l00295"></a><span class="lineno">  295</span>&#160;      <span class="keyword">const</span> <a class="code" href="structprocess_1_1UPID.html">process::UPID</a>&amp; sender,</div><div class="line"><a name="l00296"></a><span class="lineno">  296</span>&#160;      <span class="keyword">const</span> std::string&amp; data)</
 div><div class="line"><a name="l00297"></a><span class="lineno">  297</span>&#160;  {</div><div class="line"><a name="l00298"></a><span class="lineno">  298</span>&#160;    (t-&gt;*method)(sender);</div><div class="line"><a name="l00299"></a><span class="lineno">  299</span>&#160;  }</div><div class="line"><a name="l00300"></a><span class="lineno">  300</span>&#160;</div><div class="line"><a name="l00301"></a><span class="lineno">  301</span>&#160;  <span class="keyword">template</span> &lt;<span class="keyword">typename</span> M,</div><div class="line"><a name="l00302"></a><span class="lineno">  302</span>&#160;            <span class="keyword">typename</span> ...P, <span class="keyword">typename</span> ...PC&gt;</div><div class="line"><a name="l00303"></a><span class="lineno">  303</span>&#160;  <span class="keyword">static</span> <span class="keywordtype">void</span> handlerN(</div><div class="line"><a name="l00304"></a><span class="lineno">  304</span>&#160;      T* t,</div><div
  class="line"><a name="l00305"></a><span class="lineno">  305</span>&#160;      <span class="keywordtype">void</span> (T::*method)(<span class="keyword">const</span> <a class="code" href="structprocess_1_1UPID.html">process::UPID</a>&amp;, PC...),</div><div class="line"><a name="l00306"></a><span class="lineno">  306</span>&#160;      <span class="keyword">const</span> <a class="code" href="structprocess_1_1UPID.html">process::UPID</a>&amp; sender,</div><div class="line"><a name="l00307"></a><span class="lineno">  307</span>&#160;      <span class="keyword">const</span> std::string&amp; data,</div><div class="line"><a name="l00308"></a><span class="lineno">  308</span>&#160;      <a class="code" href="classProtobufProcess.html#a0657fb99bfae4fb1d83cb9fd13f8935a">MessageProperty&lt;M, P&gt;</a>... p)</div><div class="line"><a name="l00309"></a><span class="lineno">  309</span>&#160;  {</div><div class="line"><a name="l00310"></a><span class="lineno">  310</span>&#160;    google::proto
 buf::Arena arena;</div><div class="line"><a name="l00311"></a><span class="lineno">  311</span>&#160;    M* m = CHECK_NOTNULL(google::protobuf::Arena::CreateMessage&lt;M&gt;(&amp;arena));</div><div class="line"><a name="l00312"></a><span class="lineno">  312</span>&#160;    m-&gt;ParseFromString(data);</div><div class="line"><a name="l00313"></a><span class="lineno">  313</span>&#160;</div><div class="line"><a name="l00314"></a><span class="lineno">  314</span>&#160;    <span class="keywordflow">if</span> (m-&gt;IsInitialized()) {</div><div class="line"><a name="l00315"></a><span class="lineno">  315</span>&#160;      (t-&gt;*method)(sender, <a class="code" href="namespacegoogle_1_1protobuf.html#aee8eca8614f1e8ce851c94890b57482b">google::protobuf::convert</a>((m-&gt;*p)())...);</div><div class="line"><a name="l00316"></a><span class="lineno">  316</span>&#160;    } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00317"></a><span class="lineno">  317</span>&#
 160;      LOG(WARNING) &lt;&lt; <span class="stringliteral">&quot;Initialization errors: &quot;</span></div><div class="line"><a name="l00318"></a><span class="lineno">  318</span>&#160;                   &lt;&lt; m-&gt;InitializationErrorString();</div><div class="line"><a name="l00319"></a><span class="lineno">  319</span>&#160;    }</div><div class="line"><a name="l00320"></a><span class="lineno">  320</span>&#160;  }</div><div class="line"><a name="l00321"></a><span class="lineno">  321</span>&#160;</div><div class="line"><a name="l00322"></a><span class="lineno">  322</span>&#160;  <span class="comment">// Handlers that ignore the sender.</span></div><div class="line"><a name="l00323"></a><span class="lineno">  323</span>&#160;  <span class="keyword">template</span> &lt;<span class="keyword">typename</span> M&gt;</div><div class="line"><a name="l00324"></a><span class="lineno">  324</span>&#160;  <span class="keyword">static</span> <span class="keywordtype">void</span> _handler
 M(</div><div class="line"><a name="l00325"></a><span class="lineno">  325</span>&#160;      T* t,</div><div class="line"><a name="l00326"></a><span class="lineno">  326</span>&#160;      <span class="keywordtype">void</span> (T::*method)(<span class="keyword">const</span> M&amp;),</div><div class="line"><a name="l00327"></a><span class="lineno">  327</span>&#160;      <span class="keyword">const</span> <a class="code" href="structprocess_1_1UPID.html">process::UPID</a>&amp;,</div><div class="line"><a name="l00328"></a><span class="lineno">  328</span>&#160;      <span class="keyword">const</span> std::string&amp; data)</div><div class="line"><a name="l00329"></a><span class="lineno">  329</span>&#160;  {</div><div class="line"><a name="l00330"></a><span class="lineno">  330</span>&#160;    google::protobuf::Arena arena;</div><div class="line"><a name="l00331"></a><span class="lineno">  331</span>&#160;    M* m = CHECK_NOTNULL(google::protobuf::Arena::CreateMessage&lt;M&gt;(&amp;aren
 a));</div><div class="line"><a name="l00332"></a><span class="lineno">  332</span>&#160;    m-&gt;ParseFromString(data);</div><div class="line"><a name="l00333"></a><span class="lineno">  333</span>&#160;</div><div class="line"><a name="l00334"></a><span class="lineno">  334</span>&#160;    <span class="keywordflow">if</span> (m-&gt;IsInitialized()) {</div><div class="line"><a name="l00335"></a><span class="lineno">  335</span>&#160;      (t-&gt;*method)(*m);</div><div class="line"><a name="l00336"></a><span class="lineno">  336</span>&#160;    } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00337"></a><span class="lineno">  337</span>&#160;      LOG(WARNING) &lt;&lt; <span class="stringliteral">&quot;Initialization errors: &quot;</span></div><div class="line"><a name="l00338"></a><span class="lineno">  338</span>&#160;                   &lt;&lt; m-&gt;InitializationErrorString();</div><div class="line"><a name="l00339"></a><span class="lineno">  339</span
 >&#160;    }</div><div class="line"><a name="l00340"></a><span class="lineno">  340</span>&#160;  }</div><div class="line"><a name="l00341"></a><span class="lineno">  341</span>&#160;</div><div class="line"><a name="l00342"></a><span class="lineno">  342</span>&#160;  <span class="keyword">template</span> &lt;<span class="keyword">typename</span> M&gt;</div><div class="line"><a name="l00343"></a><span class="lineno">  343</span>&#160;  <span class="keyword">static</span> <span class="keywordtype">void</span> _handlerMutM(</div><div class="line"><a name="l00344"></a><span class="lineno">  344</span>&#160;      T* t,</div><div class="line"><a name="l00345"></a><span class="lineno">  345</span>&#160;      <span class="keywordtype">void</span> (T::*method)(M&amp;&amp;),</div><div class="line"><a name="l00346"></a><span class="lineno">  346</span>&#160;      <span class="keyword">const</span> <a class="code" href="structprocess_1_1UPID.html">process::UPID</a>&amp;,</div><div class="line"
 ><a name="l00347"></a><span class="lineno">  347</span>&#160;      <span class="keyword">const</span> std::string&amp; data)</div><div class="line"><a name="l00348"></a><span class="lineno">  348</span>&#160;  {</div><div class="line"><a name="l00349"></a><span class="lineno">  349</span>&#160;    M m;</div><div class="line"><a name="l00350"></a><span class="lineno">  350</span>&#160;    m.ParseFromString(data);</div><div class="line"><a name="l00351"></a><span class="lineno">  351</span>&#160;</div><div class="line"><a name="l00352"></a><span class="lineno">  352</span>&#160;    <span class="keywordflow">if</span> (m.IsInitialized()) {</div><div class="line"><a name="l00353"></a><span class="lineno">  353</span>&#160;      (t-&gt;*method)(std::move(m));</div><div class="line"><a name="l00354"></a><span class="lineno">  354</span>&#160;    } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00355"></a><span class="lineno">  355</span>&#160;      LOG(WARNING) &
 lt;&lt; <span class="stringliteral">&quot;Initialization errors: &quot;</span></div><div class="line"><a name="l00356"></a><span class="lineno">  356</span>&#160;                   &lt;&lt; m.InitializationErrorString();</div><div class="line"><a name="l00357"></a><span class="lineno">  357</span>&#160;    }</div><div class="line"><a name="l00358"></a><span class="lineno">  358</span>&#160;  }</div><div class="line"><a name="l00359"></a><span class="lineno">  359</span>&#160;</div><div class="line"><a name="l00360"></a><span class="lineno">  360</span>&#160;  <span class="keyword">static</span> <span class="keywordtype">void</span> _handler0(</div><div class="line"><a name="l00361"></a><span class="lineno">  361</span>&#160;      T* t,</div><div class="line"><a name="l00362"></a><span class="lineno">  362</span>&#160;      <span class="keywordtype">void</span> (T::*method)(),</div><div class="line"><a name="l00363"></a><span class="lineno">  363</span>&#160;      <span class="keywor
 d">const</span> <a class="code" href="structprocess_1_1UPID.html">process::UPID</a>&amp;,</div><div class="line"><a name="l00364"></a><span class="lineno">  364</span>&#160;      <span class="keyword">const</span> std::string&amp; data)</div><div class="line"><a name="l00365"></a><span class="lineno">  365</span>&#160;  {</div><div class="line"><a name="l00366"></a><span class="lineno">  366</span>&#160;    (t-&gt;*method)();</div><div class="line"><a name="l00367"></a><span class="lineno">  367</span>&#160;  }</div><div class="line"><a name="l00368"></a><span class="lineno">  368</span>&#160;</div><div class="line"><a name="l00369"></a><span class="lineno">  369</span>&#160;  <span class="keyword">template</span> &lt;<span class="keyword">typename</span> M,</div><div class="line"><a name="l00370"></a><span class="lineno">  370</span>&#160;            <span class="keyword">typename</span> ...P, <span class="keyword">typename</span> ...PC&gt;</div><div class="line"><a name="l00371"><
 /a><span class="lineno">  371</span>&#160;  <span class="keyword">static</span> <span class="keywordtype">void</span> _handlerN(</div><div class="line"><a name="l00372"></a><span class="lineno">  372</span>&#160;      T* t,</div><div class="line"><a name="l00373"></a><span class="lineno">  373</span>&#160;      <span class="keywordtype">void</span> (T::*method)(PC...),</div><div class="line"><a name="l00374"></a><span class="lineno">  374</span>&#160;      <span class="keyword">const</span> <a class="code" href="structprocess_1_1UPID.html">process::UPID</a>&amp;,</div><div class="line"><a name="l00375"></a><span class="lineno">  375</span>&#160;      <span class="keyword">const</span> std::string&amp; data,</div><div class="line"><a name="l00376"></a><span class="lineno">  376</span>&#160;      <a class="code" href="classProtobufProcess.html#a0657fb99bfae4fb1d83cb9fd13f8935a">MessageProperty&lt;M, P&gt;</a>... p)</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>&#160;    google::protobuf::Arena arena;</div><div class="line"><a name="l00379"></a><span class="lineno">  379</span>&#160;    M* m = CHECK_NOTNULL(google::protobuf::Arena::CreateMessage&lt;M&gt;(&amp;arena));</div><div class="line"><a name="l00380"></a><span class="lineno">  380</span>&#160;    m-&gt;ParseFromString(data);</div><div class="line"><a name="l00381"></a><span class="lineno">  381</span>&#160;</div><div class="line"><a name="l00382"></a><span class="lineno">  382</span>&#160;    <span class="keywordflow">if</span> (m-&gt;IsInitialized()) {</div><div class="line"><a name="l00383"></a><span class="lineno">  383</span>&#160;      (t-&gt;*method)(<a class="code" href="namespacegoogle_1_1protobuf.html#aee8eca8614f1e8ce851c94890b57482b">google::protobuf::convert</a>((m-&gt;*p)())...);</div><div class="line"><a name="l00384"></a><span class="lineno">  384</span>&#160;    } <span clas
 s="keywordflow">else</span> {</div><div class="line"><a name="l00385"></a><span class="lineno">  385</span>&#160;      LOG(WARNING) &lt;&lt; <span class="stringliteral">&quot;Initialization errors: &quot;</span></div><div class="line"><a name="l00386"></a><span class="lineno">  386</span>&#160;                   &lt;&lt; m-&gt;InitializationErrorString();</div><div class="line"><a name="l00387"></a><span class="lineno">  387</span>&#160;    }</div><div class="line"><a name="l00388"></a><span class="lineno">  388</span>&#160;  }</div><div class="line"><a name="l00389"></a><span class="lineno">  389</span>&#160;</div><div class="line"><a name="l00390"></a><span class="lineno">  390</span>&#160;  <span class="keyword">typedef</span> lambda::function&lt;</div><div class="line"><a name="l00391"></a><span class="lineno">  391</span>&#160;      void(<span class="keyword">const</span> <a class="code" href="structprocess_1_1UPID.html">process::UPID</a>&amp;, <span class="keyword">const</span
 > std::string&amp;)&gt; handler;</div><div class="line"><a name="l00392"></a><span class="lineno">  392</span>&#160;  <a class="code" href="classhashmap.html">hashmap&lt;std::string, handler&gt;</a> protobufHandlers;</div><div class="line"><a name="l00393"></a><span class="lineno">  393</span>&#160;</div><div class="line"><a name="l00394"></a><span class="lineno">  394</span>&#160;  <span class="comment">// Sender of &quot;current&quot; message, inaccessible by subclasses.</span></div><div class="line"><a name="l00395"></a><span class="lineno">  395</span>&#160;  <span class="comment">// This is only used for reply().</span></div><div class="line"><a name="l00396"></a><span class="lineno">  396</span>&#160;  <a class="code" href="structprocess_1_1UPID.html">process::UPID</a> from;</div><div class="line"><a name="l00397"></a><span class="lineno">  397</span>&#160;};</div><div class="line"><a name="l00398"></a><span class="lineno">  398</span>&#160;</div><div class="line"><a name="l00
 399"></a><span class="lineno">  399</span>&#160;</div><div class="line"><a name="l00400"></a><span class="lineno">  400</span>&#160;<span class="comment">// Implements a process for sending protobuf &quot;requests&quot; to a process</span></div><div class="line"><a name="l00401"></a><span class="lineno">  401</span>&#160;<span class="comment">// and waiting for a protobuf &quot;response&quot;, but uses futures so that</span></div><div class="line"><a name="l00402"></a><span class="lineno">  402</span>&#160;<span class="comment">// this can be done without needing to implement a process.</span></div><div class="line"><a name="l00403"></a><span class="lineno">  403</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Req, <span class="keyword">typename</span> Res&gt;</div><div class="line"><a name="l00404"></a><span class="lineno"><a class="line" href="classReqResProcess.html">  404</a></span>&#160;<span class="keyword">class </span><a class="cod
 e" href="classReqResProcess.html">ReqResProcess</a> : <span class="keyword">public</span> <a class="code" href="classProtobufProcess.html">ProtobufProcess</a>&lt;ReqResProcess&lt;Req, Res&gt;&gt;</div><div class="line"><a name="l00405"></a><span class="lineno">  405</span>&#160;{</div><div class="line"><a name="l00406"></a><span class="lineno">  406</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00407"></a><span class="lineno"><a class="line" href="classReqResProcess.html#a47e2ce59480781d2fa17021dd4044148">  407</a></span>&#160;  <a class="code" href="classReqResProcess.html#a47e2ce59480781d2fa17021dd4044148">ReqResProcess</a>(<span class="keyword">const</span> <a class="code" href="structprocess_1_1UPID.html">process::UPID</a>&amp; _pid, <span class="keyword">const</span> Req&amp; _req)</div><div class="line"><a name="l00408"></a><span class="lineno">  408</span>&#160;    : <a class="code" href="namespaceprocess.html">process</a>::ProcessBase(<a c
 lass="code" href="namespaceprocess.html">process</a>::ID::<a class="code" href="namespaceprocess_1_1ID.html#aeb11a48c9def1da169d8455a30d0ee39">generate</a>(<span class="stringliteral">&quot;__req_res__&quot;</span>)),</div><div class="line"><a name="l00409"></a><span class="lineno">  409</span>&#160;      pid(_pid),</div><div class="line"><a name="l00410"></a><span class="lineno">  410</span>&#160;      req(_req)</div><div class="line"><a name="l00411"></a><span class="lineno">  411</span>&#160;  {</div><div class="line"><a name="l00412"></a><span class="lineno">  412</span>&#160;    <a class="code" href="classProtobufProcess.html">ProtobufProcess&lt;ReqResProcess&lt;Req, Res&gt;</a>&gt;::template</div><div class="line"><a name="l00413"></a><span class="lineno">  413</span>&#160;      install&lt;Res&gt;(&amp;<a class="code" href="classReqResProcess.html">ReqResProcess&lt;Req, Res&gt;::response</a>);</div><div class="line"><a name="l00414"></a><span class="lineno">  414</span>&#160; 
  }</div><div class="line"><a name="l00415"></a><span class="lineno">  415</span>&#160;</div><div class="line"><a name="l00416"></a><span class="lineno"><a class="line" href="classReqResProcess.html#a169374a0aedeade8a80229cb2b32ad5f">  416</a></span>&#160;  <span class="keyword">virtual</span> <a class="code" href="classReqResProcess.html#a169374a0aedeade8a80229cb2b32ad5f">~ReqResProcess</a>()</div><div class="line"><a name="l00417"></a><span class="lineno">  417</span>&#160;  {</div><div class="line"><a name="l00418"></a><span class="lineno">  418</span>&#160;    <span class="comment">// Discard the promise.</span></div><div class="line"><a name="l00419"></a><span class="lineno">  419</span>&#160;    <a class="code" href="namespacemesos_1_1internal_1_1log_1_1protocol.html#a3b1f8bd7b18c51af9d1f58842950b545">promise</a>.discard();</div><div class="line"><a name="l00420"></a><span class="lineno">  420</span>&#160;  }</div><div class="line"><a name="l00421"></a><span class="lineno">  42
 1</span>&#160;</div><div class="line"><a name="l00422"></a><span class="lineno"><a class="line" href="classReqResProcess.html#aa88a64351fac32c4d142a4119b8fe45e">  422</a></span>&#160;  <a class="code" href="classprocess_1_1Future.html">process::Future&lt;Res&gt;</a> <a class="code" href="classReqResProcess.html#aa88a64351fac32c4d142a4119b8fe45e">run</a>()</div><div class="line"><a name="l00423"></a><span class="lineno">  423</span>&#160;  {</div><div class="line"><a name="l00424"></a><span class="lineno">  424</span>&#160;    <a class="code" href="namespacemesos_1_1internal_1_1log_1_1protocol.html#a3b1f8bd7b18c51af9d1f58842950b545">promise</a>.future().onDiscard(<a class="code" href="namespaceprocess.html#a8b27a2ef76eb133bf0ce7a5eea4fb77c">defer</a>(<span class="keyword">this</span>, &amp;ReqResProcess::discarded));</div><div class="line"><a name="l00425"></a><span class="lineno">  425</span>&#160;</div><div class="line"><a name="l00426"></a><span class="lineno">  426</span>&#160;  
   <a class="code" href="classProtobufProcess.html">ProtobufProcess&lt;ReqResProcess&lt;Req, Res&gt;</a>&gt;<a class="code" href="namespacenet.html#aa0a46766b4aca53ea50e1921567ddb40">::send</a>(pid, req);</div><div class="line"><a name="l00427"></a><span class="lineno">  427</span>&#160;</div><div class="line"><a name="l00428"></a><span class="lineno">  428</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="namespacemesos_1_1internal_1_1log_1_1protocol.html#a3b1f8bd7b18c51af9d1f58842950b545">promise</a>.future();</div><div class="line"><a name="l00429"></a><span class="lineno">  429</span>&#160;  }</div><div class="line"><a name="l00430"></a><span class="lineno">  430</span>&#160;</div><div class="line"><a name="l00431"></a><span class="lineno">  431</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00432"></a><span class="lineno">  432</span>&#160;  <span class="keywordtype">void</span> <a class="code" href="namespaceproces
 s_1_1internal.html#aa03406abec646ff3df058f9e55749c11">discarded</a>()</div><div class="line"><a name="l00433"></a><span class="lineno">  433</span>&#160;  {</div><div class="line"><a name="l00434"></a><span class="lineno">  434</span>&#160;    <a class="code" href="namespacemesos_1_1internal_1_1log_1_1protocol.html#a3b1f8bd7b18c51af9d1f58842950b545">promise</a>.discard();</div><div class="line"><a name="l00435"></a><span class="lineno">  435</span>&#160;    <a class="code" href="namespaceprocess.html#a20443908afa3212215166e26065349e5">process::terminate</a>(<span class="keyword">this</span>);</div><div class="line"><a name="l00436"></a><span class="lineno">  436</span>&#160;  }</div><div class="line"><a name="l00437"></a><span class="lineno">  437</span>&#160;</div><div class="line"><a name="l00438"></a><span class="lineno">  438</span>&#160;  <span class="keywordtype">void</span> response(<span class="keyword">const</span> Res&amp; res)</div><div class="line"><a name="l00439"></a><
 span class="lineno">  439</span>&#160;  {</div><div class="line"><a name="l00440"></a><span class="lineno">  440</span>&#160;    <a class="code" href="namespacemesos_1_1internal_1_1log_1_1protocol.html#a3b1f8bd7b18c51af9d1f58842950b545">promise</a>.set(res);</div><div class="line"><a name="l00441"></a><span class="lineno">  441</span>&#160;    <a class="code" href="namespaceprocess.html#a20443908afa3212215166e26065349e5">process::terminate</a>(<span class="keyword">this</span>);</div><div class="line"><a name="l00442"></a><span class="lineno">  442</span>&#160;  }</div><div class="line"><a name="l00443"></a><span class="lineno">  443</span>&#160;</div><div class="line"><a name="l00444"></a><span class="lineno">  444</span>&#160;  <span class="keyword">const</span> <a class="code" href="structprocess_1_1UPID.html">process::UPID</a> pid;</div><div class="line"><a name="l00445"></a><span class="lineno">  445</span>&#160;  <span class="keyword">const</span> Req req;</div><div class="lin
 e"><a name="l00446"></a><span class="lineno">  446</span>&#160;  <a class="code" href="classprocess_1_1Promise.html">process::Promise&lt;Res&gt;</a> <a class="code" href="namespacemesos_1_1internal_1_1log_1_1protocol.html#a3b1f8bd7b18c51af9d1f58842950b545">promise</a>;</div><div class="line"><a name="l00447"></a><span class="lineno">  447</span>&#160;};</div><div class="line"><a name="l00448"></a><span class="lineno">  448</span>&#160;</div><div class="line"><a name="l00449"></a><span class="lineno">  449</span>&#160;</div><div class="line"><a name="l00450"></a><span class="lineno">  450</span>&#160;<span class="comment">// Allows you to describe request/response protocols and then use</span></div><div class="line"><a name="l00451"></a><span class="lineno">  451</span>&#160;<span class="comment">// those for sending requests and getting back responses.</span></div><div class="line"><a name="l00452"></a><span class="lineno">  452</span>&#160;<span class="keyword">template</span> &lt;
 <span class="keyword">typename</span> Req, <span class="keyword">typename</span> Res&gt;</div><div class="line"><a name="l00453"></a><span class="lineno"><a class="line" href="structProtocol.html">  453</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structProtocol.html">Protocol</a></div><div class="line"><a name="l00454"></a><span class="lineno">  454</span>&#160;{</div><div class="line"><a name="l00455"></a><span class="lineno"><a class="line" href="structProtocol.html#a19a92c2a83f9584a1880032e9c5c63da">  455</a></span>&#160;  <a class="code" href="classprocess_1_1Future.html">process::Future&lt;Res&gt;</a> <a class="code" href="structProtocol.html#a19a92c2a83f9584a1880032e9c5c63da">operator()</a>(</div><div class="line"><a name="l00456"></a><span class="lineno">  456</span>&#160;      <span class="keyword">const</span> <a class="code" href="structprocess_1_1UPID.html">process::UPID</a>&amp; pid,</div><div class="line"><a name="l00457"></a><span class="l
 ineno">  457</span>&#160;      <span class="keyword">const</span> Req&amp; req)<span class="keyword"> const</span></div><div class="line"><a name="l00458"></a><span class="lineno">  458</span>&#160;<span class="keyword">  </span>{</div><div class="line"><a name="l00459"></a><span class="lineno">  459</span>&#160;    <span class="comment">// Help debugging by adding some &quot;type constraints&quot;.</span></div><div class="line"><a name="l00460"></a><span class="lineno">  460</span>&#160;    { Req* req = <span class="keyword">nullptr</span>; google::protobuf::Message* m = req; (void)m; }</div><div class="line"><a name="l00461"></a><span class="lineno">  461</span>&#160;    { Res* res = <span class="keyword">nullptr</span>; google::protobuf::Message* m = res; (void)m; }</div><div class="line"><a name="l00462"></a><span class="lineno">  462</span>&#160;</div><div class="line"><a name="l00463"></a><span class="lineno">  463</span>&#160;    <a class="code" href="classReqResProcess.html"
 >ReqResProcess&lt;Req, Res&gt;</a>* <a class="code" href="namespaceprocess.html">process</a> = <span class="keyword">new</span> <a class="code" href="classReqResProcess.html">ReqResProcess&lt;Req, Res&gt;</a>(pid, req);</div><div class="line"><a name="l00464"></a><span class="lineno">  464</span>&#160;    <a class="code" href="namespaceprocess.html#aff22904a83567125d3b4d0d88e5a2270">process::spawn</a>(process, <span class="keyword">true</span>);</div><div class="line"><a name="l00465"></a><span class="lineno">  465</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="namespaceprocess.html#acfbc29404bc653268289691b0dd59e22">process::dispatch</a>(process, &amp;<a class="code" href="classReqResProcess.html">ReqResProcess&lt;Req, Res&gt;::run</a>);</div><div class="line"><a name="l00466"></a><span class="lineno">  466</span>&#160;  }</div><div class="line"><a name="l00467"></a><span class="lineno">  467</span>&#160;};</div><div class="line"><a name="l00468"></a>
 <span class="lineno">  468</span>&#160;</div><div class="line"><a name="l00469"></a><span class="lineno">  469</span>&#160;<span class="preprocessor">#endif // __PROCESS_PROTOBUF_HPP__</span></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 &amp;prefix=&quot;&quot;)</div><div class="ttdoc">Returns &amp;#39;prefix(N)&amp;#39; where N represents the number of instances where the same prefix (wrt...</div></div>
+<a href="3rdparty_2libprocess_2include_2process_2protobuf_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>&#160;<span class="comment">// Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<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>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<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>&#160;<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>&#160;<span class="comment">// distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<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>&#160;<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>&#160;<span class="comment">// limitations under the License</span></div><div class="line"><a name="l00012"></a><span class="line
 no">   12</span>&#160;</div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="preprocessor">#ifndef __PROCESS_PROTOBUF_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="preprocessor">#define __PROCESS_PROTOBUF_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;</div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="preprocessor">#include &lt;glog/logging.h&gt;</span></div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="preprocessor">#include &lt;google/protobuf/arena.h&gt;</span></div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;<span class="preprocessor">#include &lt;google/protobuf/message.h&gt;</span></div><div class="line"><a name="l00020"
 ></a><span class="lineno">   20</span>&#160;<span class="preprocessor">#include &lt;google/protobuf/repeated_field.h&gt;</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;</div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="preprocessor">#include &lt;iterator&gt;</span></div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="preprocessor">#include &lt;set&gt;</span></div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="preprocessor">#include &lt;vector&gt;</span></div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;</div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="defer_8hpp.html">process/defer.hpp</a>&gt;</span></div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<
 span class="preprocessor">#include &lt;<a class="code" href="dispatch_8hpp.html">process/dispatch.hpp</a>&gt;</span></div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="id_8hpp.html">process/id.hpp</a>&gt;</span></div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="libprocess_2include_2process_2process_8hpp.html">process/process.hpp</a>&gt;</span></div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;</div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="hashmap_8hpp.html">stout/hashmap.hpp</a>&gt;</span></div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="lambda_8hpp.html">stout/lambda.hpp</
 a>&gt;</span></div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;</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>&#160;<span class="comment">// Provides an implementation of process::post that for a protobuf.</span></div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceprocess.html">process</a> {</div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;</div><div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="namespaceprocess.html#ab52d25f9fe4b28df7268c688725894d9">   38</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespaceprocess.html#a2b0f5478fa6a52497167aa994ff600d9">post</a>(<span class="keyword">const</span> <a clas
 s="code" href="structprocess_1_1UPID.html">process::UPID</a>&amp; to,</div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;                 <span class="keyword">const</span> google::protobuf::Message&amp; message)</div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;{</div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;  std::string data;</div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;  message.SerializeToString(&amp;data);</div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;  <a class="code" href="namespaceprocess.html#a2b0f5478fa6a52497167aa994ff600d9">post</a>(to, message.GetTypeName(), data.data(), data.size());</div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;}</div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;</div><div class="line"><a name="l00046"></a><
 span class="lineno">   46</span>&#160;</div><div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="namespaceprocess.html#a45cacee57eaefdcc54028e6a5c5ba83d">   47</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespaceprocess.html#a2b0f5478fa6a52497167aa994ff600d9">post</a>(<span class="keyword">const</span> <a class="code" href="structprocess_1_1UPID.html">process::UPID</a>&amp; from,</div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;                 <span class="keyword">const</span> <a class="code" href="structprocess_1_1UPID.html">process::UPID</a>&amp; to,</div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;                 <span class="keyword">const</span> google::protobuf::Message&amp; message)</div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;{</div><div class="line"><a name="l00051"></a>
 <span class="lineno">   51</span>&#160;  std::string data;</div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;  message.SerializeToString(&amp;data);</div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;  <a class="code" href="namespaceprocess.html#a2b0f5478fa6a52497167aa994ff600d9">post</a>(from, to, message.GetTypeName(), data.data(), data.size());</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>&#160;</div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;} <span class="comment">// namespace process {</span></div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;</div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;</div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;<span class="comment">// 
 The rest of this file provides libprocess &quot;support&quot; for using</span></div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;<span class="comment">// protocol buffers. In particular, this file defines a subclass of</span></div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;<span class="comment">// Process (ProtobufProcess) that allows you to install protocol</span></div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;<span class="comment">// buffer handlers in addition to normal message and HTTP</span></div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;<span class="comment">// handlers. Install handlers can optionally take the sender&#39;s UPID</span></div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;<span class="comment">// as their first argument.</span></div><div class="line"><a name="l00065"></a><span class="lineno">  
  65</span>&#160;<span class="comment">// Note that this header file assumes you will be linking</span></div><div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;<span class="comment">// against BOTH libprotobuf and libglog.</span></div><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;</div><div class="line"><a name="l00068"></a><span class="lineno"><a class="line" href="namespacegoogle.html">   68</a></span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacegoogle.html">google</a> {</div><div class="line"><a name="l00069"></a><span class="lineno"><a class="line" href="namespacegoogle_1_1protobuf.html">   69</a></span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceprotobuf.html">protobuf</a> {</div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;</div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;<span class="comment
 ">// Type conversions helpful for changing between protocol buffer types</span></div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;<span class="comment">// and standard C++ types (for parameters).</span></div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l00074"></a><span class="lineno"><a class="line" href="namespacegoogle_1_1protobuf.html#aee8eca8614f1e8ce851c94890b57482b">   74</a></span>&#160;<span class="keyword">const</span> T&amp; <a class="code" href="convert_8hpp.html#aebbb6488a44f0e941d3aa6e7eb087e52">convert</a>(<span class="keyword">const</span> T&amp; t)</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>&#160;  <span class="keywordflow">return</span> t;</div><div class="line"><a na
 me="l00077"></a><span class="lineno">   77</span>&#160;}</div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;</div><div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;</div><div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l00081"></a><span class="lineno"><a class="line" href="namespacegoogle_1_1protobuf.html#aa37c14fc80bf93a711b3955ca6fc879b">   81</a></span>&#160;std::vector&lt;T&gt; <a class="code" href="convert_8hpp.html#aebbb6488a44f0e941d3aa6e7eb087e52">convert</a>(<span class="keyword">const</span> google::protobuf::RepeatedPtrField&lt;T&gt;&amp; items)</div><div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;{</div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;  <span class="keywordflow">return</span> std::vector&lt;T&
 gt;(items.begin(), items.end());</div><div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;}</div><div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;</div><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;</div><div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l00088"></a><span class="lineno"><a class="line" href="namespacegoogle_1_1protobuf.html#ab7dad5f52d7a173b8d69759e2d206c3a">   88</a></span>&#160;std::vector&lt;T&gt; <a class="code" href="convert_8hpp.html#aebbb6488a44f0e941d3aa6e7eb087e52">convert</a>(google::protobuf::RepeatedPtrField&lt;T&gt;&amp;&amp; items)</div><div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;{</div><div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;  <span class="keywordflow">
 return</span> std::vector&lt;T&gt;(</div><div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;      std::make_move_iterator(items.begin()),</div><div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;      std::make_move_iterator(items.end()));</div><div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;}</div><div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;</div><div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;} <span class="comment">// namespace protobuf {</span></div><div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;} <span class="comment">// namespace google {</span></div><div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;</div><div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;</div><div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;<span clas
 s="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l00100"></a><span class="lineno"><a class="line" href="classProtobufProcess.html">  100</a></span>&#160;<span class="keyword">class </span><a class="code" href="classProtobufProcess.html">ProtobufProcess</a> : <span class="keyword">public</span> <a class="code"

<TRUNCATED>

[16/50] mesos-site git commit: Updated the website built from mesos SHA: 7c9c72d.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/09fd0301/content/api/latest/c++/src_2master_2allocator_2sorter_2random_2utils_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/src_2master_2allocator_2sorter_2random_2utils_8hpp_source.html b/content/api/latest/c++/src_2master_2allocator_2sorter_2random_2utils_8hpp_source.html
index c0e19d5..74a3615 100644
--- a/content/api/latest/c++/src_2master_2allocator_2sorter_2random_2utils_8hpp_source.html
+++ b/content/api/latest/c++/src_2master_2allocator_2sorter_2random_2utils_8hpp_source.html
@@ -55,7 +55,7 @@
 <a href="src_2master_2allocator_2sorter_2random_2utils_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>&#160;<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>&#160;<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>&#160;<span class="comment">// distributed with this work for additional information</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<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>&#160;<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>&#160;<span class="comment">// &quot;License&quot;); you may not use this file except in compliance</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<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>&#160;<span class="comment">//</span></div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<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>&#
 160;<span class="comment">// distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<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>&#160;<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>&#160;<span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;</div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="preprocessor">#ifndef __MASTER_ALLOCATOR_SORTER_RANDOM_UTILS_HPP__</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="preprocessor">#def
 ine __MASTER_ALLOCATOR_SORTER_RANDOM_UTILS_HPP__</span></div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="preprocessor">#include &lt;algorithm&gt;</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="preprocessor">#include &lt;cmath&gt;</span></div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="preprocessor">#include &lt;numeric&gt;</span></div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="preprocessor">#include &lt;random&gt;</span></div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="preprocessor">#include &lt;vector&gt;</span></div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;</div><div class="line"><a name="l00026"></a><span class="lineno">
    26</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="stout_2include_2stout_2check_8hpp.html">stout/check.hpp</a>&gt;</span></div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;</div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacemesos.html">mesos</a> {</div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceinternal.html">internal</a> {</div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacemesos_1_1v1_1_1master.html">master</a> {</div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="keyword">namespace </span>allocator {</div><div class="line"><a name="l00032"></a><span class="lineno">   32</sp
 an>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;<span class="comment">// A weighted variant of std::shuffle. Items with higher weight</span></div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;<span class="comment">// have a higher chance of being towards the front of the list,</span></div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;<span class="comment">// equivalent to weighted random sampling without replacement.</span></div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;<span class="comment">// Code adapted from the following paper:</span></div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;<span class="comment">// http://utopia.duth.gr/~pefraimi/research/data/2007EncOfAlg.pdf</span></div><div cla
 ss="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;<span class="comment">// Found from: https://softwareengineering.stackexchange.com/a/344274</span></div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;<span class="comment">// This has O(n log n) runtime complexity.</span></div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">class</span> RandomAccessIterator, <span class="keyword">class</span> URBG&gt;</div><div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="namespacemesos_1_1internal_1_1master_1_1allocator.html#affc489370541ae3ab4bdd809b990eba4">   43</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespacemesos_1_1internal_1_1master_1_1allocator.html#affc489370541ae3ab
 4bdd809b990eba4">weightedShuffle</a>(</div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;    RandomAccessIterator begin,</div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;    RandomAccessIterator end,</div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;    <span class="keyword">const</span> std::vector&lt;double&gt;&amp; weights,</div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;    URBG&amp;&amp; urbg)</div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;{</div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;  CHECK_EQ(end - begin, (<span class="keywordtype">int</span>) weights.size());</div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;</div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;  std::vector&lt;double&gt; keys(weights.size(
 ));</div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;</div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; weights.size(); ++i) {</div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;    CHECK_GT(weights[i], 0.0);</div><div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;</div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;    <span class="comment">// Make the key negative so that we don&#39;t have to reverse sort.</span></div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;    <span class="keywordtype">double</span> <a class="code" href="namespaceos.html#aede9f61dcb4b7d1f276302a7bce37446">random</a> = std::uniform_real_distribution&lt;&gt;(0.0, 1.0)(urbg);</div><div class="line"><a name="l00058"></a><span class="
 lineno">   58</span>&#160;    keys[i] = 0.0 - std::pow(random, (1.0 / weights[i]));</div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;  }</div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;</div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;  <span class="comment">// Sort from smallest to largest keys. We store the sort permutation</span></div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;  <span class="comment">// so that we can apply it to `items`.</span></div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;  std::vector&lt;size_t&gt; permutation(keys.size());</div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;  std::iota(permutation.begin(), permutation.end(), 0);</div><div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;</div><div class="line"><a name="l00066"></a><s
 pan class="lineno">   66</span>&#160;  std::sort(permutation.begin(), permutation.end(),</div><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;      [&amp;](<span class="keywordtype">size_t</span> i, <span class="keywordtype">size_t</span> j){ <span class="keywordflow">return</span> keys[i] &lt; keys[j]; });</div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;</div><div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;  <span class="comment">// Now apply the permutation to `items`.</span></div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;  <span class="comment">//</span></div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;  <span class="comment">// TODO(bmahler): Consider avoiding the copy of entries in `items`</span></div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;  <span class="comment">// via an in-p
 lace application of the permutation:</span></div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;  <span class="comment">//   https://blog.merovius.de/2014/08/12/applying-permutation-in-constant.html</span></div><div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;  std::vector&lt;typename std::iterator_traits&lt;RandomAccessIterator&gt;::value_type&gt;</div><div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;    shuffled(end - begin);</div><div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;</div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;  <a class="code" href="namespacemesos_1_1internal_1_1recordio.html#a5fcab68176c462aaeed909f304c91bdf">std::transform</a>(</div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;      permutation.begin(),</div><div class="line"><a name="l00079"></a><span class="lineno">   79</span
 >&#160;      permutation.end(),</div><div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;      shuffled.begin(),</div><div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;      [&amp;](<span class="keywordtype">size_t</span> i){ <span class="keywordflow">return</span> begin[i]; });</div><div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;</div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;  <span class="comment">// Move the shuffled copy back into the `items`.</span></div><div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;  std::move(shuffled.begin(), shuffled.end(), begin);</div><div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;}</div><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;</div><div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;} <span class="comment">// 
 namespace allocator {</span></div><div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;} <span class="comment">// namespace master {</span></div><div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;} <span class="comment">// namespace internal {</span></div><div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;} <span class="comment">// namespace mesos {</span></div><div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;</div><div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;<span class="preprocessor">#endif // __MASTER_ALLOCATOR_SORTER_RANDOM_UTILS_HPP__</span></div><div class="ttc" id="namespacemesos_1_1v1_1_1master_html"><div class="ttname"><a href="namespacemesos_1_1v1_1_1master.html">mesos::v1::master</a></div><div class="ttdef"><b>Definition:</b> master.hpp:27</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="namespacemesos_html"><div class="ttname"><a href="namespacemesos.html">mesos</a></div><div class="ttdef"><b>Definition:</b> spec.hpp:30</div></div>
-<div class="ttc" id="namespaceos_html_aede9f61dcb4b7d1f276302a7bce37446"><div class="ttname"><a href="namespaceos.html#aede9f61dcb4b7d1f276302a7bce37446">os::random</a></div><div class="ttdeci">int random()</div><div class="ttdef"><b>Definition:</b> os.hpp:550</div></div>
+<div class="ttc" id="namespaceos_html_aede9f61dcb4b7d1f276302a7bce37446"><div class="ttname"><a href="namespaceos.html#aede9f61dcb4b7d1f276302a7bce37446">os::random</a></div><div class="ttdeci">int random()</div><div class="ttdef"><b>Definition:</b> os.hpp:580</div></div>
 <div class="ttc" id="namespacemesos_1_1internal_1_1master_1_1allocator_html_affc489370541ae3ab4bdd809b990eba4"><div class="ttname"><a href="namespacemesos_1_1internal_1_1master_1_1allocator.html#affc489370541ae3ab4bdd809b990eba4">mesos::internal::master::allocator::weightedShuffle</a></div><div class="ttdeci">void weightedShuffle(RandomAccessIterator begin, RandomAccessIterator end, const std::vector&lt; double &gt; &amp;weights, URBG &amp;&amp;urbg)</div><div class="ttdef"><b>Definition:</b> utils.hpp:43</div></div>
 <div class="ttc" id="namespacemesos_1_1internal_1_1recordio_html_a5fcab68176c462aaeed909f304c91bdf"><div class="ttname"><a href="namespacemesos_1_1internal_1_1recordio.html#a5fcab68176c462aaeed909f304c91bdf">mesos::internal::recordio::transform</a></div><div class="ttdeci">process::Future&lt; Nothing &gt; transform(process::Owned&lt; Reader&lt; T &gt;&gt; &amp;&amp;reader, const std::function&lt; std::string(const T &amp;)&gt; &amp;func, process::http::Pipe::Writer writer)</div><div class="ttdoc">This is a helper function that reads records from a Reader, applies a transformation to the records a...</div><div class="ttdef"><b>Definition:</b> recordio.hpp:112</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>