• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

STEllAR-GROUP / hpx / #853

19 Dec 2022 01:01AM UTC coverage: 86.287% (+0.4%) from 85.912%
#853

push

StellarBot
Merge #6109

6109: Modernize serialization module r=hkaiser a=hkaiser

- flyby separate serialization of Boost types

working towards https://github.com/STEllAR-GROUP/hpx/issues/5497

Co-authored-by: Hartmut Kaiser <hartmut.kaiser@gmail.com>

53 of 53 new or added lines in 6 files covered. (100.0%)

173939 of 201582 relevant lines covered (86.29%)

1931657.12 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

75.89
/libs/full/agas/src/detail/interface.cpp
1
//  Copyright (c) 2011 Bryce Adelstein-Lelbach
2
//  Copyright (c) 2007-2021 Hartmut Kaiser
3
//
4
//  SPDX-License-Identifier: BSL-1.0
5
//  Distributed under the Boost Software License, Version 1.0. (See accompanying
6
//  file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
7

8
#include <hpx/agas/addressing_service.hpp>
9
#include <hpx/assert.hpp>
10
#include <hpx/components_base/agas_interface.hpp>
11
#include <hpx/components_base/detail/agas_interface_functions.hpp>
12
#include <hpx/components_base/generate_unique_ids.hpp>
13
#include <hpx/components_base/pinned_ptr.hpp>
14
#include <hpx/functional/function.hpp>
15
#include <hpx/functional/move_only_function.hpp>
16
#include <hpx/runtime_local/runtime_local.hpp>
17

18
#include <algorithm>
19
#include <cstddef>
20
#include <cstdint>
21
#include <string>
22
#include <system_error>
23
#include <utility>
24
#include <vector>
25

26
namespace hpx { namespace agas { namespace detail { namespace impl {
27

28
    ///////////////////////////////////////////////////////////////////////////
29
    bool is_console()
538✔
30
    {
31
        return naming::get_agas_client().is_console();
538✔
32
    }
33

34
    ///////////////////////////////////////////////////////////////////////////
35
    bool register_name(
2,092✔
36
        std::string const& name, naming::gid_type const& gid, error_code&)
37
    {
38
        return naming::get_agas_client().register_name(name, gid);
2,092✔
39
    }
40

41
    future<bool> register_name_async(
3,139✔
42
        std::string const& name, hpx::id_type const& id)
43
    {
44
        return naming::get_agas_client().register_name_async(name, id);
3,139✔
45
    }
46

47
    bool register_name_id(
1,527✔
48
        std::string const& name, hpx::id_type const& id, error_code& ec)
49
    {
50
        if (&ec == &throws)
1,527✔
51
        {
52
            return naming::get_agas_client().register_name(name, id);
1,527✔
53
        }
54
        return register_name_async(name, id).get(ec);
×
55
    }
1,527✔
56

57
    ///////////////////////////////////////////////////////////////////////////
58
    hpx::id_type unregister_name(std::string const& name, error_code&)
2,741✔
59
    {
60
        if (!hpx::is_stopped())
2,741✔
61
        {
62
            return naming::get_agas_client().unregister_name(name);
2,741✔
63
        }
64
        return hpx::invalid_id;
×
65
    }
2,741✔
66

67
    future<hpx::id_type> unregister_name_async(std::string const& name)
679✔
68
    {
69
        return naming::get_agas_client().unregister_name_async(name);
679✔
70
    }
71

72
    ///////////////////////////////////////////////////////////////////////////
73
    future<hpx::id_type> resolve_name_async(std::string const& name)
×
74
    {
75
        return naming::get_agas_client().resolve_name_async(name);
×
76
    }
77

78
    hpx::id_type resolve_name(std::string const& name, error_code& ec)
90✔
79
    {
80
        return naming::get_agas_client().resolve_name(name, ec);
90✔
81
    }
82

83
    ///////////////////////////////////////////////////////////////////////////
84
    future<std::uint32_t> get_num_localities_async(components::component_type)
×
85
    {
86
        return naming::get_agas_client().get_num_localities_async();
×
87
    }
88

89
    std::uint32_t get_num_localities(
57✔
90
        components::component_type type, error_code& ec)
91
    {
92
        return naming::get_agas_client().get_num_localities(type, ec);
57✔
93
    }
94

95
    future<std::vector<std::uint32_t>> get_num_threads_async()
×
96
    {
97
        return naming::get_agas_client().get_num_threads_async();
×
98
    }
99

100
    std::vector<std::uint32_t> get_num_threads(error_code& ec)
×
101
    {
102
        return naming::get_agas_client().get_num_threads(ec);
×
103
    }
104

105
    future<std::uint32_t> get_num_overall_threads_async()
×
106
    {
107
        return naming::get_agas_client().get_num_overall_threads_async();
×
108
    }
109

110
    std::uint32_t get_num_overall_threads(error_code& ec)
×
111
    {
112
        return naming::get_agas_client().get_num_overall_threads(ec);
×
113
    }
114

115
    std::string get_component_type_name(
×
116
        components::component_type type, error_code& ec)
117
    {
118
        return naming::get_agas_client().get_component_type_name(type, ec);
×
119
    }
120

121
    ///////////////////////////////////////////////////////////////////////////
122
    bool is_local_address_cached(naming::gid_type const& gid, error_code& ec)
×
123
    {
124
        return naming::get_agas_client().is_local_address_cached(gid, ec);
×
125
    }
126

127
    bool is_local_address_cached_addr(
1,956,965✔
128
        naming::gid_type const& gid, naming::address& addr, error_code& ec)
129
    {
130
        return naming::get_agas_client().is_local_address_cached(gid, addr, ec);
1,956,965✔
131
    }
132

133
    void update_cache_entry(naming::gid_type const& gid,
962✔
134
        naming::address const& addr, std::uint64_t count, std::uint64_t offset,
135
        error_code& ec)
136
    {
137
        return naming::get_agas_client().update_cache_entry(
1,924✔
138
            gid, addr, count, offset, ec);
962✔
139
    }
140

141
    bool is_local_lva_encoded_address(naming::gid_type const& gid)
×
142
    {
143
        return naming::get_agas_client().is_local_lva_encoded_address(
×
144
            gid.get_msb());
×
145
    }
146

147
    ///////////////////////////////////////////////////////////////////////////
148
    hpx::future<naming::address> resolve_async(hpx::id_type const& id)
38,564✔
149
    {
150
        return naming::get_agas_client().resolve_async(id);
38,564✔
151
    }
152

153
    naming::address resolve(hpx::id_type const& id, error_code& ec)
×
154
    {
155
        return naming::get_agas_client().resolve_async(id).get(ec);
×
156
    }
×
157

158
    bool resolve_local(
6,550✔
159
        naming::gid_type const& gid, naming::address& addr, error_code& ec)
160
    {
161
        naming::resolver_client* agas_ = naming::get_agas_client_ptr();
6,550✔
162
        return (agas_ != nullptr) ? agas_->resolve_local(gid, addr, ec) : false;
6,550✔
163
    }
164

165
    bool resolve_cached(naming::gid_type const& gid, naming::address& addr)
67✔
166
    {
167
        naming::resolver_client* agas_ = naming::get_agas_client_ptr();
67✔
168
        return (agas_ != nullptr) ? agas_->resolve_cached(gid, addr) : false;
67✔
169
    }
170

171
    hpx::future<bool> bind_async(naming::gid_type const& gid,
×
172
        naming::address const& addr, std::uint32_t locality_id)
173
    {
174
        return naming::get_agas_client().bind_async(gid, addr, locality_id);
×
175
    }
176

177
    bool bind(naming::gid_type const& gid, naming::address const& addr,
1,539✔
178
        std::uint32_t locality_id, error_code& ec)
179
    {
180
        return naming::get_agas_client()
1,539✔
181
            .bind_async(gid, addr, locality_id)
1,539✔
182
            .get(ec);
1,539✔
183
    }
×
184

185
    hpx::future<bool> bind_async_locality(naming::gid_type const& gid,
×
186
        naming::address const& addr, naming::gid_type const& locality_)
187
    {
188
        return naming::get_agas_client().bind_async(gid, addr, locality_);
×
189
    }
190

191
    bool bind_locality(naming::gid_type const& gid, naming::address const& addr,
4✔
192
        naming::gid_type const& locality_, error_code& ec)
193
    {
194
        return naming::get_agas_client()
4✔
195
            .bind_async(gid, addr, locality_)
4✔
196
            .get(ec);
4✔
197
    }
×
198

199
    hpx::future<naming::address> unbind_async(
×
200
        naming::gid_type const& id, std::uint64_t)
201
    {
202
        return naming::get_agas_client().unbind_range_async(id);
×
203
    }
204

205
    naming::address unbind(
17,239✔
206
        naming::gid_type const& id, std::uint64_t, error_code& ec)
207
    {
208
        return naming::get_agas_client().unbind_range_async(id).get(ec);
17,239✔
209
    }
×
210

211
    ///////////////////////////////////////////////////////////////////////////
212
    // helper functions allowing to bind and unbind a GID to a given address
213
    // without having to directly refer to the resolver_client
214
    bool bind_gid_local(naming::gid_type const& gid_,
2,151✔
215
        naming::address const& addr, error_code& ec)
216
    {
217
        auto* client = naming::get_agas_client_ptr();
2,151✔
218
        if (nullptr == client)
2,151✔
219
        {
220
            HPX_THROWS_IF(ec, hpx::error::invalid_status,
×
221
                "agas::bind_gid_local", "addressing_service is not valid");
222
            return false;
×
223
        }
224
        return client->bind_local(gid_, addr, ec);
2,151✔
225
    }
2,151✔
226

227
    void unbind_gid_local(naming::gid_type const& gid, error_code& ec)
1,043✔
228
    {
229
        if (gid)
1,043✔
230
        {
231
            auto* client = naming::get_agas_client_ptr();
1,043✔
232
            if (nullptr == client)
1,043✔
233
            {
234
                HPX_THROWS_IF(ec, hpx::error::invalid_status,
×
235
                    "agas::unbind_gid_local",
236
                    "addressing_service is not valid");
237
            }
×
238
            else
239
            {
240
                client->unbind_local(gid, ec);
1,043✔
241
            }
242
        }
1,043✔
243
        else
244
        {
245
            HPX_THROWS_IF(ec, hpx::error::bad_parameter, "agas::unbind_gid",
×
246
                "cannot dereference invalid GID");
247
        }
248
    }
1,043✔
249

250
    bool bind_range_local(naming::gid_type const& gid, std::size_t count,
2,745✔
251
        naming::address const& addr, std::size_t offset, error_code& ec)
252
    {
253
        auto* client = naming::get_agas_client_ptr();
2,745✔
254
        if (nullptr == client)
2,745✔
255
        {
256
            HPX_THROWS_IF(ec, hpx::error::invalid_status,
×
257
                "agas::bind_range_local", "addressing_service is not valid");
258
            return false;
×
259
        }
260
        return client->bind_range_local(gid, count, addr, offset, ec);
2,745✔
261
    }
2,745✔
262

263
    void unbind_range_local(
177✔
264
        naming::gid_type const& gid, std::size_t count, error_code& ec)
265
    {
266
        auto* client = naming::get_agas_client_ptr();
177✔
267
        if (nullptr == client)
177✔
268
        {
269
            HPX_THROWS_IF(ec, hpx::error::invalid_status,
×
270
                "agas::unbind_range_local", "addressing_service is not valid");
271
        }
×
272
        else
273
        {
274
            client->unbind_range_local(gid, count, ec);
177✔
275
        }
276
    }
177✔
277

278
    ///////////////////////////////////////////////////////////////////////////
279
    void garbage_collect_non_blocking(error_code& ec)
22,102,063✔
280
    {
281
        naming::get_agas_client().garbage_collect_non_blocking(ec);
22,102,063✔
282
    }
22,102,063✔
283

284
    void garbage_collect(error_code& ec)
708✔
285
    {
286
        naming::get_agas_client().garbage_collect(ec);
708✔
287
    }
708✔
288

289
    /// \brief Return an id_type referring to the console locality.
290
    hpx::id_type get_console_locality(error_code& ec)
×
291
    {
292
        runtime* rt = get_runtime_ptr();
×
293
        if (rt == nullptr || rt->get_state() == state::invalid)
×
294
        {
295
            return hpx::invalid_id;
×
296
        }
297

298
        naming::gid_type console;
×
299
        naming::get_agas_client().get_console_locality(console, ec);
×
300
        if (ec)
×
301
        {
302
            return hpx::invalid_id;
×
303
        }
304

305
        return hpx::id_type(console, hpx::id_type::management_type::unmanaged);
×
306
    }
×
307

308
    std::uint32_t get_locality_id(error_code& ec)
34,669,844✔
309
    {
310
        runtime* rt = get_runtime_ptr();
34,663,851✔
311
        if (rt == nullptr || rt->get_state() == state::invalid)
34,669,844✔
312
        {
313
            return naming::invalid_locality_id;
×
314
        }
315

316
        naming::gid_type l = naming::get_agas_client().get_local_locality(ec);
34,633,676✔
317
        return l ? naming::get_locality_id_from_gid(l) :
34,658,336✔
318
                   naming::invalid_locality_id;
319
    }
34,630,310✔
320

321
    std::vector<std::uint32_t> get_all_locality_ids(
1,454✔
322
        naming::component_type type, error_code& ec)
323
    {
324
        std::vector<std::uint32_t> result;
1,454✔
325

326
        std::vector<naming::gid_type> localities;
1,454✔
327
        if (!naming::get_agas_client().get_localities(localities, type, ec))
1,454✔
328
        {
329
            return result;
×
330
        }
331

332
        result.reserve(localities.size());
1,454✔
333
        for (auto const& gid : localities)
3,391✔
334
        {
335
            result.push_back(naming::get_locality_id_from_gid(gid));
1,937✔
336
        }
337
        return result;
1,454✔
338
    }
1,454✔
339

340
    ///////////////////////////////////////////////////////////////////////////
341
#if defined(HPX_HAVE_NETWORKING)
342
    parcelset::endpoints_type const& resolve_locality(
455,171✔
343
        naming::gid_type const& gid, error_code& ec)
344
    {
345
        return naming::get_agas_client().resolve_locality(gid, ec);
455,171✔
346
    }
347

348
    void remove_resolved_locality(naming::gid_type const& gid)
1✔
349
    {
350
        naming::get_agas_client().remove_resolved_locality(gid);
1✔
351
    }
1✔
352
#endif
353

354
    ///////////////////////////////////////////////////////////////////////////
355
    naming::gid_type get_next_id(std::size_t count, error_code& ec)
2,567✔
356
    {
357
        runtime* rt = get_runtime_ptr();
2,567✔
358
        if (rt == nullptr)
2,567✔
359
        {
360
            HPX_THROWS_IF(ec, hpx::error::invalid_status, "get_next_id",
×
361
                "the runtime system has not been started yet.");
362
            return naming::invalid_gid;
×
363
        }
364

365
        // during bootstrap we use the id pool
366
        if (rt->get_state() == state::invalid)
2,567✔
367
        {
368
            return hpx::detail::get_next_id(count);
×
369
        }
370

371
        naming::gid_type lower_bound, upper_bound;
2,567✔
372
        naming::get_agas_client().get_id_range(
5,134✔
373
            count, lower_bound, upper_bound, ec);
2,567✔
374
        if (ec)
2,567✔
375
        {
376
            return naming::invalid_gid;
×
377
        }
378
        return lower_bound;
2,567✔
379
    }
2,567✔
380

381
    ///////////////////////////////////////////////////////////////////////////
382
    void decref(
88,570✔
383
        naming::gid_type const& gid, std::int64_t credits, error_code& ec)
384
    {
385
        naming::get_agas_client().decref(gid, credits, ec);
88,570✔
386
    }
88,570✔
387

388
    ///////////////////////////////////////////////////////////////////////////
389
    hpx::future<std::int64_t> incref_async(naming::gid_type const& gid,
2,050✔
390
        std::int64_t credits, hpx::id_type const& keep_alive_)
391
    {
392
        HPX_ASSERT(!naming::detail::is_locked(gid));
2,050✔
393

394
        naming::resolver_client& resolver = naming::get_agas_client();
2,050✔
395

396
        if (keep_alive_)
2,050✔
397
            return resolver.incref_async(gid, credits, keep_alive_);
×
398

399
        hpx::id_type keep_alive =
400
            hpx::id_type(gid, hpx::id_type::management_type::unmanaged);
2,050✔
401
        return resolver.incref_async(gid, credits, keep_alive);
2,050✔
402
    }
2,050✔
403

404
    std::int64_t incref(naming::gid_type const& gid, std::int64_t credits,
6,237✔
405
        hpx::id_type const& keep_alive_, error_code&)
406
    {
407
        HPX_ASSERT(!naming::detail::is_locked(gid));
6,237✔
408

409
        naming::resolver_client& resolver = naming::get_agas_client();
6,237✔
410

411
        if (keep_alive_)
6,237✔
412
        {
413
            return resolver.incref_async(gid, credits, keep_alive_).get();
×
414
        }
415
        hpx::id_type keep_alive =
416
            hpx::id_type(gid, hpx::id_type::management_type::unmanaged);
6,235✔
417
        return resolver.incref_async(gid, credits, keep_alive).get();
6,237✔
418
    }
6,236✔
419

420
    ///////////////////////////////////////////////////////////////////////////
421
    hpx::future<hpx::id_type> get_colocation_id_async(hpx::id_type const& id)
37✔
422
    {
423
        return naming::get_agas_client().get_colocation_id_async(id);
37✔
424
    }
425

426
    hpx::id_type get_colocation_id(hpx::id_type const& id, error_code& ec)
37✔
427
    {
428
        return get_colocation_id_async(id).get(ec);
37✔
429
    }
×
430

431
    ///////////////////////////////////////////////////////////////////////////
432
    hpx::future<hpx::id_type> on_symbol_namespace_event(
61,785✔
433
        std::string const& name, bool call_for_past_events)
434
    {
435
        return naming::get_agas_client().on_symbol_namespace_event(
123,570✔
436
            name, call_for_past_events);
61,785✔
437
    }
438

439
    ///////////////////////////////////////////////////////////////////////////
440
    hpx::future<std::pair<hpx::id_type, naming::address>> begin_migration(
2,755✔
441
        hpx::id_type const& id)
442
    {
443
        return naming::get_agas_client().begin_migration(id);
2,755✔
444
    }
445

446
    bool end_migration(hpx::id_type const& id)
2,736✔
447
    {
448
        return naming::get_agas_client().end_migration(id);
2,736✔
449
    }
450

451
    hpx::future<void> mark_as_migrated(naming::gid_type const& gid,
4,078✔
452
        hpx::move_only_function<std::pair<bool, hpx::future<void>>()>&& f,
453
        bool expect_to_be_marked_as_migrating)
454
    {
455
        return naming::get_agas_client().mark_as_migrated(
8,156✔
456
            gid, HPX_MOVE(f), expect_to_be_marked_as_migrating);
4,078✔
457
    }
458

459
    std::pair<bool, components::pinned_ptr> was_object_migrated(
5,432✔
460
        naming::gid_type const& gid,
461
        hpx::move_only_function<components::pinned_ptr()>&& f)
462
    {
463
        return naming::get_agas_client().was_object_migrated(gid, HPX_MOVE(f));
5,432✔
464
    }
465

466
    void unmark_as_migrated(naming::gid_type const& gid)
2,753✔
467
    {
468
        return naming::get_agas_client().unmark_as_migrated(gid);
2,753✔
469
    }
470

471
    hpx::future<symbol_namespace::iterate_names_return_type> find_symbols_async(
×
472
        std::string const& pattern)
473
    {
474
        return naming::get_agas_client().iterate_ids(pattern);
×
475
    }
476

477
    symbol_namespace::iterate_names_return_type find_symbols(
×
478
        std::string const& pattern)
479
    {
480
        return find_symbols_async(pattern).get();
×
481
    }
×
482

483
    ///////////////////////////////////////////////////////////////////////////
484
    naming::component_type register_factory(
13,465✔
485
        std::uint32_t prefix, std::string const& name, error_code& ec)
486
    {
487
        return naming::get_agas_client().register_factory(prefix, name, ec);
13,465✔
488
    }
489

490
    naming::component_type get_component_id(
11,222✔
491
        std::string const& name, error_code& ec)
492
    {
493
        return naming::get_agas_client().get_component_id(name, ec);
11,222✔
494
    }
495

496
#if defined(HPX_HAVE_NETWORKING)
497
    ///////////////////////////////////////////////////////////////////////////
498
    void route(parcelset::parcel&& p,
4,225✔
499
        hpx::function<void(std::error_code const&, parcelset::parcel const&)>&&
500
            f,
501
        threads::thread_priority local_priority)
502
    {
503
        return naming::get_agas_client().route(
8,450✔
504
            HPX_MOVE(p), HPX_MOVE(f), local_priority);
4,225✔
505
    }
×
506
#endif
507

508
    ///////////////////////////////////////////////////////////////////////////
509
    naming::address_type get_primary_ns_lva()
16,145✔
510
    {
511
        return naming::get_agas_client().get_primary_ns_lva();
16,145✔
512
    }
513

514
    naming::address_type get_symbol_ns_lva()
17,332✔
515
    {
516
        return naming::get_agas_client().get_symbol_ns_lva();
17,332✔
517
    }
518

519
    naming::address_type get_runtime_support_lva()
4,620✔
520
    {
521
        return naming::get_agas_client().get_runtime_support_lva();
4,620✔
522
    }
523
}}}}    // namespace hpx::agas::detail::impl
524

525
namespace hpx { namespace agas {
526

527
    // initialize AGAS interface function pointers in components_base module
528
    struct HPX_EXPORT agas_interface_functions
529
    {
530
        agas_interface_functions()
488✔
531
        {
532
            detail::is_console = &detail::impl::is_console;
488✔
533

534
            detail::register_name = &detail::impl::register_name;
488✔
535
            detail::register_name_async = &detail::impl::register_name_async;
488✔
536
            detail::register_name_id = &detail::impl::register_name_id;
488✔
537

538
            detail::unregister_name_async =
488✔
539
                &detail::impl::unregister_name_async;
540
            detail::unregister_name = &detail::impl::unregister_name;
488✔
541

542
            detail::resolve_name_async = &detail::impl::resolve_name_async;
488✔
543
            detail::resolve_name = &detail::impl::resolve_name;
488✔
544

545
            detail::get_num_localities_async =
488✔
546
                &detail::impl::get_num_localities_async;
547
            detail::get_num_localities = &detail::impl::get_num_localities;
488✔
548

549
            detail::get_num_threads_async =
488✔
550
                &detail::impl::get_num_threads_async;
551
            detail::get_num_threads = &detail::impl::get_num_threads;
488✔
552

553
            detail::get_num_overall_threads_async =
488✔
554
                &detail::impl::get_num_overall_threads_async;
555
            detail::get_num_overall_threads =
488✔
556
                &detail::impl::get_num_overall_threads;
557

558
            detail::get_component_type_name =
488✔
559
                &detail::impl::get_component_type_name;
560

561
            detail::is_local_address_cached =
488✔
562
                &detail::impl::is_local_address_cached;
563
            detail::is_local_address_cached_addr =
488✔
564
                &detail::impl::is_local_address_cached_addr;
565
            detail::update_cache_entry = &detail::impl::update_cache_entry;
488✔
566

567
            detail::is_local_lva_encoded_address =
488✔
568
                &detail::impl::is_local_lva_encoded_address;
569

570
            detail::resolve_async = &detail::impl::resolve_async;
488✔
571
            detail::resolve = &detail::impl::resolve;
488✔
572
            detail::resolve_cached = &detail::impl::resolve_cached;
488✔
573
            detail::resolve_local = &detail::impl::resolve_local;
488✔
574

575
            detail::bind_async = &detail::impl::bind_async;
488✔
576
            detail::bind = &detail::impl::bind;
488✔
577
            detail::bind_async_locality = &detail::impl::bind_async_locality;
488✔
578
            detail::bind_locality = &detail::impl::bind_locality;
488✔
579

580
            detail::unbind_async = &detail::impl::unbind_async;
488✔
581
            detail::unbind = &detail::impl::unbind;
488✔
582

583
            detail::bind_gid_local = &detail::impl::bind_gid_local;
488✔
584
            detail::unbind_gid_local = &detail::impl::unbind_gid_local;
488✔
585
            detail::bind_range_local = &detail::impl::bind_range_local;
488✔
586
            detail::unbind_range_local = &detail::impl::unbind_range_local;
488✔
587

588
            detail::garbage_collect_non_blocking =
488✔
589
                &detail::impl::garbage_collect_non_blocking;
590
            detail::garbage_collect = &detail::impl::garbage_collect;
488✔
591

592
            detail::get_console_locality = &detail::impl::get_console_locality;
488✔
593
            detail::get_locality_id = &detail::impl::get_locality_id;
488✔
594
            detail::get_all_locality_ids = &detail::impl::get_all_locality_ids;
488✔
595

596
#if defined(HPX_HAVE_NETWORKING)
597
            detail::resolve_locality = &detail::impl::resolve_locality;
488✔
598
            detail::remove_resolved_locality =
488✔
599
                &detail::impl::remove_resolved_locality;
600
#endif
601

602
            detail::get_next_id = &detail::impl::get_next_id;
488✔
603

604
            detail::decref = &detail::impl::decref;
488✔
605
            detail::incref_async = &detail::impl::incref_async;
488✔
606
            detail::incref = &detail::impl::incref;
488✔
607

608
            detail::get_colocation_id_async =
488✔
609
                &detail::impl::get_colocation_id_async;
610
            detail::get_colocation_id = &detail::impl::get_colocation_id;
488✔
611

612
            detail::on_symbol_namespace_event =
488✔
613
                &detail::impl::on_symbol_namespace_event;
614

615
            detail::begin_migration = &detail::impl::begin_migration;
488✔
616
            detail::end_migration = &detail::impl::end_migration;
488✔
617
            detail::mark_as_migrated = &detail::impl::mark_as_migrated;
488✔
618
            detail::was_object_migrated = &detail::impl::was_object_migrated;
488✔
619
            detail::unmark_as_migrated = &detail::impl::unmark_as_migrated;
488✔
620

621
            detail::find_symbols_async = &detail::impl::find_symbols_async;
488✔
622
            detail::find_symbols = &detail::impl::find_symbols;
488✔
623

624
            detail::register_factory = &detail::impl::register_factory;
488✔
625
            detail::get_component_id = &detail::impl::get_component_id;
488✔
626

627
#if defined(HPX_HAVE_NETWORKING)
628
            detail::route = &detail::impl::route;
488✔
629
#endif
630

631
            detail::get_primary_ns_lva = &detail::impl::get_primary_ns_lva;
488✔
632
            detail::get_symbol_ns_lva = &detail::impl::get_symbol_ns_lva;
488✔
633
            detail::get_runtime_support_lva =
488✔
634
                &detail::impl::get_runtime_support_lva;
635
        }
488✔
636
    };
637

638
    agas_interface_functions& agas_init()
597✔
639
    {
640
        static agas_interface_functions agas_init_;
597✔
641
        return agas_init_;
597✔
642
    }
×
643
}}    // namespace hpx::agas
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc