Verified Commit 4ed3938c authored by Alberto Miranda's avatar Alberto Miranda ♨️
Browse files

Add admire::transfer type to CXX API

parent 23c76d4a
Loading
Loading
Loading
Loading
+30 −0
Original line number Diff line number Diff line
@@ -38,6 +38,7 @@ namespace admire {
using error_code = ADM_return_t;

using job_id = std::uint64_t;
using transfer_id = std::uint64_t;

struct server {

@@ -78,6 +79,35 @@ private:
    std::unique_ptr<impl> m_pimpl;
};

struct transfer {

    enum class mapping : std::underlying_type<ADM_transfer_mapping_t>::type {
        one_to_one = ADM_MAPPING_ONE_TO_ONE,
        one_to_n = ADM_MAPPING_ONE_TO_N,
        n_to_n = ADM_MAPPING_N_TO_N
    };

    explicit transfer(transfer_id id);
    explicit transfer(ADM_transfer_t transfer);

    transfer(const transfer&) noexcept;
    transfer(transfer&&) noexcept;
    transfer&
    operator=(const transfer&) noexcept;
    transfer&
    operator=(transfer&&) noexcept;

    ~transfer();

    transfer_id
    id() const;

private:
    class impl;
    std::unique_ptr<impl> m_pimpl;
};


struct dataset {
    explicit dataset(std::string id);
    explicit dataset(ADM_dataset_t dataset);
+48 −0
Original line number Diff line number Diff line
@@ -793,6 +793,54 @@ job::id() const {
    return m_pimpl->id();
}

class transfer::impl {

public:
    explicit impl(transfer_id id) : m_id(id) {}

    impl(const impl& rhs) = default;
    impl(impl&& rhs) = default;
    impl&
    operator=(const impl& other) noexcept = default;
    impl&
    operator=(impl&&) noexcept = default;

    transfer_id
    id() const {
        return m_id;
    }

private:
    transfer_id m_id;
};

transfer::transfer(transfer_id id)
    : m_pimpl(std::make_unique<transfer::impl>(id)) {}

transfer::transfer(ADM_transfer_t transfer)
    : transfer::transfer(transfer->t_id) {}

transfer::transfer(transfer&&) noexcept = default;

transfer&
transfer::operator=(transfer&&) noexcept = default;

transfer::transfer(const transfer& other) noexcept
    : m_pimpl(std::make_unique<impl>(*other.m_pimpl)) {}

transfer&
transfer::operator=(const transfer& other) noexcept {
    this->m_pimpl = std::make_unique<impl>(*other.m_pimpl);
    return *this;
}

transfer::~transfer() = default;

transfer_id
transfer::id() const {
    return m_pimpl->id();
}

class dataset::impl {
public:
    explicit impl(std::string id) : m_id(std::move(id)) {}