> // from the registered object, get the actual pointer to the local > class > _solver_instance = > std::dynamic_pointer_cast<wrapped_solver_class<sa_solver>>( > hpx::get_ptr_sync<wrapped_solver_class<sa_solver>>(_agas_Wrapper_i > d) > ); > > The call to get_ptr_sync is what I think you are looking for - it converts > an AGAS id type into a local pointer that you can use like this- > >do_stuff() - assuming as you say that the component is on the local node
I don't think you need the dynamic_cast. hpx::get_ptr<sa_solver>(hpx::launch::sync, id) should give you a std::shared_ptr<sa_solver> just fine. Please note that get_ptr will throw if the object is not local to the caller, though. Regards Hartmut --------------- http://boost-spirit.com http://stellar.cct.lsu.edu > > JB > > From: [email protected] [mailto:hpx-users- > [email protected]] On Behalf Of Blair Archibald > Sent: 26 September 2017 17:12 > To: [email protected] > Subject: [hpx-users] Local Function call in Component > > Hi, > > I've got a component that I would really like to be able to call a local > function > on (when I know I'm on the same locality as the component) and was > wondering if this is possible? Essentially the component manages some > local state about a locality and I want distributed calls to be able to > query/add to it but I'd also like to leak some of the internals to a local > thread via shared_ptrs. > > As a example we may have a component that has the following: > > // Distributed access needed, works fine > int foo() { > return 42; > } > HPX_DEFINE_COMPONENT_ACTION(someComponent, foo) > > // Local access only, since we can't serialize the type > std::shared_ptr<NonSerializeableType> local() { > return make_shared<NonSerializableType>(); > } > // We can't do this because we can't serialize the NonSerializableType > // HPX_DEFINE_COMPONENT_ACTION(someComponent, local) > > Because we only every have the gid when we use hpx::new_ I couldn't find > any way > to get a reference to the actual component to call the function on it (or > a way > to call a local only, non seriaizable, function via a gid). > > Let me know if this isn't clear. > > Many thanks, > Blair _______________________________________________ hpx-users mailing list [email protected] https://mail.cct.lsu.edu/mailman/listinfo/hpx-users
