rpc_data.hpp 1.04 KiB
Newer Older
Marc Vef's avatar
Marc Vef committed

#ifndef LFS_RPC_DATA_HPP
#define LFS_RPC_DATA_HPP

Marc Vef's avatar
Marc Vef committed

class RPCData {

private:
    RPCData() {}

    // Margo IDs. They can also be used to retrieve the Mercury classes and contexts that were created at init time
    margo_instance_id server_rpc_mid_;
    margo_instance_id server_ipc_mid_;
Marc Vef's avatar
Marc Vef committed

    // Argobots I/O pools and execution streams
    ABT_pool io_pool_;
    std::vector<ABT_xstream> io_streams_;
Marc Vef's avatar
Marc Vef committed

public:
Marc Vef's avatar
Marc Vef committed
    static RPCData* getInstance() {
        static RPCData instance;
        return &instance;
    }

    RPCData(RPCData const&) = delete;

    void operator=(RPCData const&) = delete;

    // Getter/Setter

    margo_instance* server_rpc_mid();

    void server_rpc_mid(margo_instance* server_rpc_mid);

    margo_instance* server_ipc_mid();
Marc Vef's avatar
Marc Vef committed

    void server_ipc_mid(margo_instance* server_ipc_mid);
Marc Vef's avatar
Marc Vef committed

    ABT_pool io_pool() const;
    void io_pool(ABT_pool io_pool);
    std::vector<ABT_xstream>& io_streams();
    void io_streams(const std::vector<ABT_xstream>& io_streams);
Marc Vef's avatar
Marc Vef committed
};


#endif //LFS_RPC_DATA_HPP