From 3357cbc91e7ff4d0d455c88785fc455067b34820 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roman=20Smr=C5=BE?= Date: Sat, 14 Mar 2020 21:14:52 +0100 Subject: Storage: filter ancestors and overwritable Ref and Stored Simple but slow implementation of the filtering for now. --- src/network.cpp | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) (limited to 'src/network.cpp') diff --git a/src/network.cpp b/src/network.cpp index ce0dd30..b31d949 100644 --- a/src/network.cpp +++ b/src/network.cpp @@ -299,7 +299,7 @@ void Server::Priv::handlePacket(Server::Peer & peer, const TransportHeader & hea { unordered_set plaintextRefs; for (const auto & obj : collectStoredObjects(*Stored::load(*self.ref()))) - plaintextRefs.insert(obj.ref.digest()); + plaintextRefs.insert(obj.ref().digest()); optional serviceType; @@ -308,7 +308,7 @@ void Server::Priv::handlePacket(Server::Peer & peer, const TransportHeader & hea case TransportHeader::Type::Acknowledged: if (auto pref = std::get(item.value)) { if (holds_alternative>(peer.channel) && - std::get>(peer.channel).ref.digest() == pref.digest()) + std::get>(peer.channel).ref().digest() == pref.digest()) peer.channel.emplace> (std::get>(peer.channel)->data->channel()); } @@ -371,7 +371,7 @@ void Server::Priv::handlePacket(Server::Peer & peer, const TransportHeader & hea reply.header({ TransportHeader::Type::Acknowledged, pref }); if (holds_alternative>(peer.channel) && - std::get>(peer.channel).ref.digest() < pref.digest()) + std::get>(peer.channel).ref().digest() < pref.digest()) break; if (holds_alternative>(peer.channel)) @@ -392,7 +392,7 @@ void Server::Priv::handlePacket(Server::Peer & peer, const TransportHeader & hea case TransportHeader::Type::ChannelAccept: if (auto pref = std::get(item.value)) { if (holds_alternative>(peer.channel) && - std::get>(peer.channel).ref.digest() < pref.digest()) + std::get>(peer.channel).ref().digest() < pref.digest()) break; auto cres = peer.tempStorage.copy(pref); @@ -475,12 +475,12 @@ void Server::Peer::updateChannel(ReplyBuilder & reply) auto req = Channel::generateRequest(tempStorage, server.self, std::get(identity)); channel.emplace>(req); - reply.header({ TransportHeader::Type::ChannelRequest, req.ref }); - reply.body(req.ref); - reply.body(req->data.ref); - reply.body(req->data->key.ref); + reply.header({ TransportHeader::Type::ChannelRequest, req.ref() }); + reply.body(req.ref()); + reply.body(req->data.ref()); + reply.body(req->data->key.ref()); for (const auto & sig : req->sigs) - reply.body(sig.ref); + reply.body(sig.ref()); } if (holds_alternative>(channel)) { @@ -488,12 +488,12 @@ void Server::Peer::updateChannel(ReplyBuilder & reply) if (auto req = Stored::load(*ref)) { if (auto acc = Channel::acceptRequest(server.self, std::get(identity), *req)) { channel.emplace>(*acc); - reply.header({ TransportHeader::Type::ChannelAccept, acc->ref }); - reply.body(acc->ref); - reply.body(acc.value()->data.ref); - reply.body(acc.value()->data->key.ref); + reply.header({ TransportHeader::Type::ChannelAccept, acc->ref() }); + reply.body(acc->ref()); + reply.body(acc.value()->data.ref()); + reply.body(acc.value()->data->key.ref()); for (const auto & sig : acc.value()->sigs) - reply.body(sig.ref); + reply.body(sig.ref()); } else { channel = monostate(); } -- cgit v1.2.3