collection_resolver progress
This commit is contained in:
parent
046c1d8ed2
commit
1cf39d0ef1
|
|
@ -4,6 +4,7 @@
|
|||
#include <atomic>
|
||||
|
||||
#include "matador/object/object_ptr.hpp"
|
||||
#include "matador/object/collection_resolver.hpp"
|
||||
|
||||
#include "matador/utils/identifier.hpp"
|
||||
|
||||
|
|
@ -25,13 +26,13 @@ public:
|
|||
};
|
||||
|
||||
|
||||
template<typename Type>
|
||||
class collection_resolver : public abstract_collection_resolver {
|
||||
public:
|
||||
collection_resolver() : abstract_collection_resolver(typeid(Type)) {}
|
||||
|
||||
virtual std::shared_ptr<Type> resolve(const utils::identifier& id) = 0;
|
||||
};
|
||||
// template<typename Type>
|
||||
// class collection_resolver : public abstract_collection_resolver {
|
||||
// public:
|
||||
// collection_resolver() : abstract_collection_resolver(typeid(Type)) {}
|
||||
//
|
||||
// virtual std::shared_ptr<Type> resolve(const utils::identifier& id) = 0;
|
||||
// };
|
||||
|
||||
template<typename Type>
|
||||
class collection_proxy final {
|
||||
|
|
@ -39,11 +40,11 @@ public:
|
|||
collection_proxy() = default;
|
||||
|
||||
// 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)) {}
|
||||
|
||||
// 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)) {}
|
||||
|
||||
// Transient
|
||||
|
|
@ -80,7 +81,7 @@ private:
|
|||
const utils::identifier owner_id_;
|
||||
std::atomic_bool loaded_{false};
|
||||
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_{};
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -11,9 +11,9 @@ namespace matador::object {
|
|||
template<typename Type>
|
||||
class collection_resolver : public abstract_type_resolver {
|
||||
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
|
||||
Loading…
Reference in New Issue