NPRPC docs

class Poa

C++

class Poa

Portable Object Adapter: holds servants and routes incoming calls to them. Create one with Rpc::create_poa(); see the POA guide for the threading options.

include/nprpc/nprpc.hpp:342

Constructors

Poa(poa_idx_t idx)

Created by the runtime; see PoaBuilder.

include/nprpc/nprpc.hpp:414

Methods

virtual ObjectId activate_object(ObjectServant *obj, ObjectActivationFlags activation_flags, SessionContext *ctx = nullptr) = 0

Activate an object servant in this POA. Throws: std::runtime_error if the object cannot be activated.

obj
The object servant to activate.
activation_flags
Flags that control how the object is activated.
ctx
Optional session context for session-specific activation.

Returns The object ID of the activated object.

include/nprpc/nprpc.hpp:390

virtual ObjectId activate_object_with_id(oid_t object_id, ObjectServant *obj, ObjectActivationFlags activation_flags, SessionContext *ctx = nullptr) = 0

Activate an object servant with a user-supplied object ID. Available only when POA is configured with ObjectIdPolicy::UserSupplied.

include/nprpc/nprpc.hpp:398

virtual void deactivate_object(oid_t object_id) = 0

Deactivate an object servant in this POA. Throws: std::runtime_error if the object cannot be deactivated.

object_id
The ID of the object to deactivate.

include/nprpc/nprpc.hpp:408

const DispatchExecutor &dispatch_executor() const noexcept

Optional executor used for servant dispatch (empty = transport thread).

include/nprpc/nprpc.hpp:351

poa_idx_t get_index() const noexcept

This POA's index within the process.

include/nprpc/nprpc.hpp:411

bool requires_off_transport_dispatch() const noexcept

True when transport layers should not run this POA's dispatch inline (custom executor and/or NeverBlockTransport).

include/nprpc/nprpc.hpp:376

void set_dispatch_executor(DispatchExecutor ex) noexcept

Replaces the executor set by PoaBuilder::with_dispatch_executor.

include/nprpc/nprpc.hpp:357

void set_transport_affinity(PoaPolicy::TransportAffinity a) noexcept

Replaces the affinity set by PoaBuilder::with_transport_affinity.

include/nprpc/nprpc.hpp:369

PoaPolicy::TransportAffinity transport_affinity() const noexcept

Whether dispatch may run on the transport thread.

include/nprpc/nprpc.hpp:363