1 //////////////////////////////////////////////////////////////////////////////// 2 // Copyright (c) 2011 Bryce Lelbach 3 // Copyright (c) 2012-2017 Hartmut Kaiser 4 // Copyright (c) 2016 Thomas Heller 5 // 6 // Distributed under the Boost Software License, Version 1.0. (See accompanying 7 // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 8 //////////////////////////////////////////////////////////////////////////////// 9 10 #include <hpx/config.hpp> 11 12 #include <hpx/runtime/agas/detail/bootstrap_locality_namespace.hpp> 13 #include <hpx/runtime/agas/server/locality_namespace.hpp> 14 #include <hpx/runtime/parcelset/locality.hpp> 15 #include <hpx/runtime/naming/name.hpp> 16 #include <hpx/util/assert.hpp> 17 18 #include <cstdint> 19 #include <string> 20 #include <utility> 21 #include <vector> 22 23 #include <string> 24 #include <utility> 25 #include <vector> 26 27 namespace hpx { namespace agas { namespace detail 28 { bootstrap_locality_namespace(server::primary_namespace * primary)29 bootstrap_locality_namespace::bootstrap_locality_namespace( 30 server::primary_namespace *primary) 31 : server_(primary) 32 {} 33 addr() const34 naming::address bootstrap_locality_namespace::addr() const 35 { 36 return naming::address( 37 hpx::get_locality(), 38 components::component_agas_locality_namespace, 39 this->ptr() 40 ); 41 } 42 gid() const43 naming::id_type bootstrap_locality_namespace::gid() const 44 { 45 return naming::id_type( 46 naming::gid_type(HPX_AGAS_LOCALITY_NS_MSB, HPX_AGAS_LOCALITY_NS_LSB), 47 naming::id_type::unmanaged); 48 } 49 allocate(parcelset::endpoints_type const & endpoints,std::uint64_t count,std::uint32_t num_threads,naming::gid_type suggested_prefix)50 std::uint32_t bootstrap_locality_namespace::allocate( 51 parcelset::endpoints_type const& endpoints 52 , std::uint64_t count 53 , std::uint32_t num_threads 54 , naming::gid_type suggested_prefix 55 ) 56 { 57 return server_.allocate(endpoints, count, num_threads, suggested_prefix); 58 } 59 free(naming::gid_type locality)60 void bootstrap_locality_namespace::free(naming::gid_type locality) 61 { 62 server_.free(locality); 63 } 64 localities()65 std::vector<std::uint32_t> bootstrap_locality_namespace::localities() 66 { 67 return server_.localities(); 68 } 69 70 parcelset::endpoints_type resolve_locality(naming::gid_type locality)71 bootstrap_locality_namespace::resolve_locality(naming::gid_type locality) 72 { 73 return server_.resolve_locality(locality); 74 } 75 get_num_localities()76 std::uint32_t bootstrap_locality_namespace::get_num_localities() 77 { 78 return server_.get_num_localities(); 79 } 80 get_num_localities_async()81 hpx::future<std::uint32_t> bootstrap_locality_namespace::get_num_localities_async() 82 { 83 return hpx::make_ready_future(server_.get_num_localities()); 84 } 85 get_num_threads()86 std::vector<std::uint32_t> bootstrap_locality_namespace::get_num_threads() 87 { 88 return server_.get_num_threads(); 89 } 90 91 hpx::future<std::vector<std::uint32_t> > get_num_threads_async()92 bootstrap_locality_namespace::get_num_threads_async() 93 { 94 return hpx::make_ready_future(server_.get_num_threads()); 95 } 96 get_num_overall_threads()97 std::uint32_t bootstrap_locality_namespace::get_num_overall_threads() 98 { 99 return server_.get_num_overall_threads(); 100 } 101 102 hpx::future<std::uint32_t> get_num_overall_threads_async()103 bootstrap_locality_namespace::get_num_overall_threads_async() 104 { 105 return hpx::make_ready_future(server_.get_num_overall_threads()); 106 } 107 statistics_counter(std::string name)108 naming::gid_type bootstrap_locality_namespace::statistics_counter(std::string name) 109 { 110 return server_.statistics_counter(std::move(name)); 111 } 112 register_counter_types()113 void bootstrap_locality_namespace::register_counter_types() 114 { 115 server::locality_namespace::register_counter_types(); 116 server::locality_namespace::register_global_counter_types(); 117 } 118 register_server_instance(std::uint32_t locality_id)119 void bootstrap_locality_namespace::register_server_instance( 120 std::uint32_t locality_id) 121 { 122 HPX_ASSERT(locality_id == 0); 123 const char* servicename("locality#0/"); 124 server_.register_server_instance(servicename); 125 } 126 unregister_server_instance(error_code & ec)127 void bootstrap_locality_namespace::unregister_server_instance(error_code& ec) 128 { 129 server_.unregister_server_instance(ec); 130 } 131 }}} 132