diff --git a/src/docker.h b/src/docker.h index 13344d9c..46c9de5f 100644 --- a/src/docker.h +++ b/src/docker.h @@ -66,7 +66,7 @@ class DockerUpdater : public PollingMetadataUpdater { : reader_(server->config()), PollingMetadataUpdater( server, "DockerUpdater", server->config().DockerUpdaterIntervalSeconds(), - std::bind(&google::DockerReader::MetadataQuery, &reader_)) { } + [=]() { return reader_.MetadataQuery(); }) { } protected: bool ValidateConfiguration() const; diff --git a/src/instance.h b/src/instance.h index 7c3cfd30..846f2721 100644 --- a/src/instance.h +++ b/src/instance.h @@ -47,7 +47,7 @@ class InstanceUpdater : public PollingMetadataUpdater { : reader_(server->config()), PollingMetadataUpdater( server, "InstanceUpdater", server->config().InstanceUpdaterIntervalSeconds(), - std::bind(&google::InstanceReader::MetadataQuery, &reader_)) { } + [=]() { return reader_.MetadataQuery(); }) { } private: InstanceReader reader_; }; diff --git a/src/kubernetes.cc b/src/kubernetes.cc index 320b2e7e..08a0a7b0 100644 --- a/src/kubernetes.cc +++ b/src/kubernetes.cc @@ -833,7 +833,9 @@ void KubernetesReader::WatchMaster( std::mutex completion_mutex; std::unique_lock watch_completion(completion_mutex); Watcher watcher(endpoint, - std::bind(&EventCallback, callback, std::placeholders::_1), + [=](json::value raw_watch) { + EventCallback(callback, std::move(raw_watch)); + }, std::move(watch_completion), config_.VerboseLogging()); http::client::response response = client.get(request, boost::ref(watcher)); if (config_.VerboseLogging()) { @@ -1085,11 +1087,12 @@ void KubernetesReader::WatchPods( ? "" : "&" + config_.KubernetesPodLabelSelector()); try { - WatchMaster(std::string(kKubernetesEndpointPath) + "/pods" - + node_selector + pod_label_selector, - std::bind(&KubernetesReader::PodCallback, - this, callback, std::placeholders::_1, - std::placeholders::_2, std::placeholders::_3)); + WatchMaster( + std::string(kKubernetesEndpointPath) + "/pods" + node_selector + + pod_label_selector, + [=](const json::Object* pod, Timestamp collected_at, bool is_deleted) { + PodCallback(callback, pod, collected_at, is_deleted); + }); } catch (const json::Exception& e) { LOG(ERROR) << e.what(); LOG(ERROR) << "No more pod metadata will be collected"; @@ -1117,11 +1120,11 @@ void KubernetesReader::WatchNodes( try { // TODO: There seems to be a Kubernetes API bug with watch=true. - WatchMaster(std::string(kKubernetesEndpointPath) + "/watch/nodes/" - + node_name, - std::bind(&KubernetesReader::NodeCallback, - this, callback, std::placeholders::_1, - std::placeholders::_2, std::placeholders::_3)); + WatchMaster( + std::string(kKubernetesEndpointPath) + "/watch/nodes/" + node_name, + [=](const json::Object* node, Timestamp collected_at, bool is_deleted) { + NodeCallback(callback, node, collected_at, is_deleted); + }); } catch (const json::Exception& e) { LOG(ERROR) << e.what(); LOG(ERROR) << "No more node metadata will be collected"; @@ -1135,7 +1138,7 @@ KubernetesUpdater::KubernetesUpdater(MetadataAgent* server) : reader_(server->config()), PollingMetadataUpdater( server, "KubernetesUpdater", server->config().KubernetesUpdaterIntervalSeconds(), - std::bind(&google::KubernetesReader::MetadataQuery, &reader_)) { } + [=]() { return reader_.MetadataQuery(); }) { } bool KubernetesUpdater::ValidateConfiguration() const { if (!PollingMetadataUpdater::ValidateConfiguration()) { @@ -1156,13 +1159,15 @@ void KubernetesUpdater::StartUpdater() { const std::string watched_node( config().KubernetesClusterLevelMetadata() ? "" : current_node); - // Wrap the bind expression into a function to use as a bind argument. - UpdateCallback cb = std::bind(&KubernetesUpdater::MetadataCallback, this, - std::placeholders::_1); - node_watch_thread_ = - std::thread(&KubernetesReader::WatchNodes, &reader_, watched_node, cb); - pod_watch_thread_ = - std::thread(&KubernetesReader::WatchPods, &reader_, watched_node, cb); + auto cb = [=](std::vector&& results) { + MetadataCallback(std::move(results)); + }; + node_watch_thread_ = std::thread([=]() { + reader_.WatchNodes(watched_node, cb); + }); + pod_watch_thread_ = std::thread([=]() { + reader_.WatchPods(watched_node, cb); + }); } else { // Only try to poll if watch is disabled. PollingMetadataUpdater::StartUpdater(); diff --git a/src/metadatad.cc b/src/metadatad.cc index 57d78ac6..f97ef446 100644 --- a/src/metadatad.cc +++ b/src/metadatad.cc @@ -16,8 +16,6 @@ //#include "config.h" -#include - #include "api_server.h" #include "configuration.h" #include "docker.h" diff --git a/src/updater.cc b/src/updater.cc index e7593c5e..af612f90 100644 --- a/src/updater.cc +++ b/src/updater.cc @@ -65,8 +65,7 @@ void PollingMetadataUpdater::StartUpdater() { LOG(INFO) << "Timer locked"; } if (period_ > seconds::zero()) { - reporter_thread_ = - std::thread(&PollingMetadataUpdater::PollForMetadata, this); + reporter_thread_ = std::thread([=]() { PollForMetadata(); }); } }