1#ifndef FPMAS_DISTRIBUTED_NODE_H
2#define FPMAS_DISTRIBUTED_NODE_H
14namespace fpmas {
namespace graph {
17 using api::graph::DistributedId;
24 public Node<DistributedId, api::graph::DistributedEdge<T>>,
33 Mutex* _mutex =
nullptr;
60 int location()
const override {
return _location;}
67 T&
data()
override {
return _data;}
68 const T&
data()
const override {
return _data;}
104 static void to_json(json& j,
const NodePtrWrapper<T>& node) {
105 j[
"id"] = node->getId();
106 j[
"data"] = node->data();
107 j[
"weight"] = node->getWeight();
121 std::move(j.at(
"data").get<T>())
123 node->setWeight(j.at(
"weight").get<
float>());
129namespace fpmas {
namespace io {
156 j[
"id"] = node->getId();
157 j[
"data"] = node->data();
174 j[
"id"].get<fpmas::graph::DistributedId>(),
197 const ObjectPack& p,
const NodePtrWrapper<T>& node) {
208 pack.
put(node->getId());
209 pack.
put(node->data());
210 pack.
put(node->getWeight());
221 T data = pack.
get<T>();
223 std::move(
id), std::move(data)
225 node->setWeight(pack.
get<
float>());
265 pack.
put(node->getId());
266 pack.
put(node->data());
278 T data = pack.
get<T>();
280 std::move(
id), std::move(data)
Definition: distributed_id.h:89
Definition: distributed_node.h:28
Definition: ptr_wrapper.h:21
Definition: distributed_node.h:25
void setState(api::graph::LocationState state) override
Definition: distributed_node.h:64
void setLocation(int location) override
Definition: distributed_node.h:61
void setMutex(Mutex *mutex) override
Definition: distributed_node.h:69
DistributedNode(const DistributedId &id, T &&data)
Definition: distributed_node.h:56
int location() const override
Definition: distributed_node.h:60
const Mutex * mutex() const override
Definition: distributed_node.h:71
Mutex * mutex() override
Definition: distributed_node.h:70
api::graph::LocationState state() const override
Definition: distributed_node.h:63
T & data() override
Definition: distributed_node.h:67
DistributedNode(const DistributedId &id, const T &data)
Definition: distributed_node.h:44
const T & data() const override
Definition: distributed_node.h:68
Definition: datapack.h:301
std::size_t size() const
Definition: datapack.h:367
void put(const T &item)
Definition: datapack.h:447
T get() const
Definition: datapack.h:459
LocationState
Definition: location_state.h:15
@ LOCAL
Definition: location_state.h:21
api::utils::PtrWrapper< api::graph::DistributedNode< T > > NodePtrWrapper
Definition: distributed_node.h:83
nlohmann::basic_json< std::map, std::vector, std::string, bool, std::int64_t, std::uint64_t, double, std::allocator, light_serializer > light_json
Definition: json.h:14
static NodePtrWrapper< T > from_datapack(const LightObjectPack &pack)
Definition: distributed_node.h:275
static void to_datapack(LightObjectPack &pack, const NodePtrWrapper< T > &node)
Definition: distributed_node.h:264
static std::size_t size(const LightObjectPack &p, const NodePtrWrapper< T > &node)
Definition: distributed_node.h:253
Definition: datapack.h:1411
static std::size_t size(const ObjectPack &p, const NodePtrWrapper< T > &node)
Definition: distributed_node.h:196
static void to_datapack(ObjectPack &pack, const NodePtrWrapper< T > &node)
Definition: distributed_node.h:207
static NodePtrWrapper< T > from_datapack(const ObjectPack &pack)
Definition: distributed_node.h:219
Definition: datapack.h:55
static void from_json(const light_json &j, NodePtrWrapper< T > &node_ptr)
Definition: distributed_node.h:172
static void to_json(light_json &j, const NodePtrWrapper< T > &node)
Definition: distributed_node.h:155
static void to_json(json &j, const NodePtrWrapper< T > &node)
Definition: distributed_node.h:104
static NodePtrWrapper< T > from_json(const json &j)
Definition: distributed_node.h:118