collection_resolver progress
This commit is contained in:
parent
046c1d8ed2
commit
1cf39d0ef1
|
|
@ -4,6 +4,7 @@
|
||||||
#include <atomic>
|
#include <atomic>
|
||||||
|
|
||||||
#include "matador/object/object_ptr.hpp"
|
#include "matador/object/object_ptr.hpp"
|
||||||
|
#include "matador/object/collection_resolver.hpp"
|
||||||
|
|
||||||
#include "matador/utils/identifier.hpp"
|
#include "matador/utils/identifier.hpp"
|
||||||
|
|
||||||
|
|
@ -25,13 +26,13 @@ public:
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
template<typename Type>
|
// template<typename Type>
|
||||||
class collection_resolver : public abstract_collection_resolver {
|
// class collection_resolver : public abstract_collection_resolver {
|
||||||
public:
|
// public:
|
||||||
collection_resolver() : abstract_collection_resolver(typeid(Type)) {}
|
// collection_resolver() : abstract_collection_resolver(typeid(Type)) {}
|
||||||
|
//
|
||||||
virtual std::shared_ptr<Type> resolve(const utils::identifier& id) = 0;
|
// virtual std::shared_ptr<Type> resolve(const utils::identifier& id) = 0;
|
||||||
};
|
// };
|
||||||
|
|
||||||
template<typename Type>
|
template<typename Type>
|
||||||
class collection_proxy final {
|
class collection_proxy final {
|
||||||
|
|
@ -39,11 +40,11 @@ public:
|
||||||
collection_proxy() = default;
|
collection_proxy() = default;
|
||||||
|
|
||||||
// Lazy
|
// Lazy
|
||||||
collection_proxy(std::weak_ptr<object_resolver<typename Type::value_type>> resolver, utils::identifier owner_id)
|
collection_proxy(std::weak_ptr<collection_resolver<Type>> resolver, utils::identifier owner_id)
|
||||||
: owner_id_(std::move(owner_id)), resolver_(std::move(resolver)) {}
|
: owner_id_(std::move(owner_id)), resolver_(std::move(resolver)) {}
|
||||||
|
|
||||||
// Eager
|
// Eager
|
||||||
collection_proxy(std::weak_ptr<object_resolver<typename Type::value_type>> resolver, std::vector<Type> items)
|
collection_proxy(std::weak_ptr<collection_resolver<Type>> resolver, std::vector<Type> items)
|
||||||
: items_(std::move(items)), resolver_(std::move(resolver)) {}
|
: items_(std::move(items)), resolver_(std::move(resolver)) {}
|
||||||
|
|
||||||
// Transient
|
// Transient
|
||||||
|
|
@ -80,7 +81,7 @@ private:
|
||||||
const utils::identifier owner_id_;
|
const utils::identifier owner_id_;
|
||||||
std::atomic_bool loaded_{false};
|
std::atomic_bool loaded_{false};
|
||||||
std::vector<Type> items_;
|
std::vector<Type> items_;
|
||||||
std::weak_ptr<object_resolver<typename Type::value_type>> resolver_{};
|
std::weak_ptr<collection_resolver<Type>> resolver_{};
|
||||||
mutable std::mutex mutex_{};
|
mutable std::mutex mutex_{};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -11,9 +11,9 @@ namespace matador::object {
|
||||||
template<typename Type>
|
template<typename Type>
|
||||||
class collection_resolver : public abstract_type_resolver {
|
class collection_resolver : public abstract_type_resolver {
|
||||||
public:
|
public:
|
||||||
collection_resolver() : abstract_type_resolver(typeid(std::vector<object_ptr<Type>>)) {}
|
collection_resolver() : abstract_type_resolver(typeid(std::vector<Type>)) {}
|
||||||
|
|
||||||
virtual std::vector<object_ptr<Type>> resolve(const utils::identifier& id) = 0;
|
virtual std::vector<Type> resolve(const utils::identifier& id) = 0;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
#endif //MATADOR_COLLECTION_RESOLVER_HPP
|
#endif //MATADOR_COLLECTION_RESOLVER_HPP
|
||||||
Loading…
Reference in New Issue