Skip to content

Source · fairmq/shmem/

UnmanagedRegionImpl.hpublic header

Defines class fair::mq::shmem::UnmanagedRegionImpl.

Described in Unmanaged regions.

fairmq/shmem/UnmanagedRegionImpl.h69 lines · C++API: UnmanagedRegionImplGitHub ↗
1/********************************************************************************2 *    Copyright (C) 2014 GSI Helmholtzzentrum fuer Schwerionenforschung GmbH    *3 *                                                                              *4 *              This software is distributed under the terms of the             *5 *              GNU Lesser General Public Licence (LGPL) version 3,             *6 *                  copied verbatim in the file "LICENSE"                       *7 ********************************************************************************/8 9#ifndef FAIR_MQ_SHMEM_UNMANAGEDREGIONIMPL_H_10#define FAIR_MQ_SHMEM_UNMANAGEDREGIONIMPL_H_11 12#include "Manager.h"13#include "UnmanagedRegion.h"14#include <fairmq/UnmanagedRegion.h>15 16#include <fairlogger/Logger.h>17 18#include <cstddef> // size_t19 20namespace fair::mq::shmem21{22 23class Message;24class Socket;25 26class UnmanagedRegionImpl final : public fair::mq::UnmanagedRegion27{28    friend class Message;29    friend class Socket;30 31  public:32    UnmanagedRegionImpl(Manager& manager,33                    const size_t size,34                    RegionCallback callback,35                    RegionBulkCallback bulkCallback,36                    fair::mq::RegionConfig cfg,37                    fair::mq::TransportFactory* factory)38        : fair::mq::UnmanagedRegion(factory)39        , fManager(manager)40    {41        auto [regionPtr, regionId] = fManager.CreateRegion(size, callback, bulkCallback, std::move(cfg));42        fRegion = regionPtr;43        fRegionId = regionId;44    }45 46    UnmanagedRegionImpl(const UnmanagedRegionImpl&) = delete;47    UnmanagedRegionImpl(UnmanagedRegionImpl&&) = delete;48    UnmanagedRegionImpl& operator=(const UnmanagedRegionImpl&) = delete;49    UnmanagedRegionImpl& operator=(UnmanagedRegionImpl&&) = delete;50 51    void* GetData() const override { return fRegion->GetData(); }52    size_t GetSize() const override { return fRegion->GetSize(); }53    uint16_t GetId() const override { return fRegionId; }54    void SetLinger(uint32_t linger) override { fRegion->SetLinger(linger); }55    uint32_t GetLinger() const override { return fRegion->GetLinger(); }56 57    Transport GetType() const override { return fair::mq::Transport::SHM; }58 59    ~UnmanagedRegionImpl() override { fManager.RemoveRegion(fRegionId); }60 61  private:62    Manager& fManager;63    shmem::UnmanagedRegion* fRegion{nullptr};64    uint16_t fRegionId{0};65};66 67} // namespace fair::mq::shmem68 69#endif /* FAIR_MQ_SHMEM_UNMANAGEDREGIONIMPL_H_ */