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