# HG changeset patch # User Sebastien Jodogne # Date 1537277942 -7200 # Node ID 5e6de82bb10fa70351571ac6ad53383a0fd44920 # Parent 1ed03945c057901e0fbcccb724afbba8f0b607f9 use of user properties instead of BidirectionalPeers option diff -r 1ed03945c057 -r 5e6de82bb10f Framework/HttpQueries/DetectTransferPlugin.cpp --- a/Framework/HttpQueries/DetectTransferPlugin.cpp Mon Sep 17 14:42:57 2018 +0200 +++ b/Framework/HttpQueries/DetectTransferPlugin.cpp Tue Sep 18 15:39:02 2018 +0200 @@ -29,13 +29,13 @@ namespace OrthancPlugins { - DetectTransferPlugin::DetectTransferPlugin(Peers& target, + DetectTransferPlugin::DetectTransferPlugin(Result& result, const std::string& peer) : - target_(target), + result_(result), peer_(peer), uri_(URI_PLUGINS) { - target_[peer_] = PeerCapabilities_Disabled; + result_[peer_] = false; } @@ -60,16 +60,14 @@ if (value[i].type() == Json::stringValue && value[i].asString() == PLUGIN_NAME) { - // The "Bidirectional" status is set in "Plugin.cpp", given - // the configuration file - target_[peer_] = PeerCapabilities_Installed; + result_[peer_] = true; } } } } - void DetectTransferPlugin::Apply(Peers& peers, + void DetectTransferPlugin::Apply(Result& result, OrthancPluginContext* context, size_t threadsCount, unsigned int timeout) @@ -82,7 +80,7 @@ for (size_t i = 0; i < queue.GetOrthancPeers().GetPeersCount(); i++) { queue.Enqueue(new OrthancPlugins::DetectTransferPlugin - (peers, queue.GetOrthancPeers().GetPeerName(i))); + (result, queue.GetOrthancPeers().GetPeerName(i))); } { diff -r 1ed03945c057 -r 5e6de82bb10f Framework/HttpQueries/DetectTransferPlugin.h --- a/Framework/HttpQueries/DetectTransferPlugin.h Mon Sep 17 14:42:57 2018 +0200 +++ b/Framework/HttpQueries/DetectTransferPlugin.h Tue Sep 18 15:39:02 2018 +0200 @@ -31,15 +31,15 @@ class DetectTransferPlugin : public IHttpQuery { public: - typedef std::map Peers; + typedef std::map Result; private: - Peers& target_; + Result& result_; std::string peer_; std::string uri_; public: - DetectTransferPlugin(Peers& target, + DetectTransferPlugin(Result& result, const std::string& peer); virtual Orthanc::HttpMethod GetMethod() const @@ -62,7 +62,7 @@ virtual void HandleAnswer(const void* answer, size_t size); - static void Apply(Peers& peers, + static void Apply(Result& result, OrthancPluginContext* context, size_t threadsCount, unsigned int timeout); diff -r 1ed03945c057 -r 5e6de82bb10f Framework/HttpQueries/HttpQueriesQueue.cpp --- a/Framework/HttpQueries/HttpQueriesQueue.cpp Mon Sep 17 14:42:57 2018 +0200 +++ b/Framework/HttpQueries/HttpQueriesQueue.cpp Tue Sep 18 15:39:02 2018 +0200 @@ -223,7 +223,7 @@ } else { - LOG(ERROR) << "Reached the maximum number of retries for a HTTP query"; + LOG(INFO) << "Reached the maximum number of retries for a HTTP query"; { boost::mutex::scoped_lock lock(mutex_); diff -r 1ed03945c057 -r 5e6de82bb10f Framework/PullMode/PullJob.cpp --- a/Framework/PullMode/PullJob.cpp Mon Sep 17 14:42:57 2018 +0200 +++ b/Framework/PullMode/PullJob.cpp Tue Sep 18 15:39:02 2018 +0200 @@ -193,9 +193,8 @@ if (job_.query_.HasOriginator() && job_.query_.GetOriginator() != answer[KEY_ORIGINATOR_UUID].asString()) { - LOG(ERROR) << "Invalid originator, check out the \"" - << KEY_PLUGIN_CONFIGURATION << "." << KEY_BIDIRECTIONAL_PEERS - << "\" configuration option"; + LOG(ERROR) << "Invalid originator, check out the \"" << KEY_REMOTE_SELF + << "\" configuration option of peer: " << job_.query_.GetPeer(); return StateUpdate::Failure(); } diff -r 1ed03945c057 -r 5e6de82bb10f Framework/TransferToolbox.h --- a/Framework/TransferToolbox.h Mon Sep 17 14:42:57 2018 +0200 +++ b/Framework/TransferToolbox.h Tue Sep 18 15:39:02 2018 +0200 @@ -30,7 +30,6 @@ static const char* const PLUGIN_NAME = "transfers"; -static const char* const KEY_BIDIRECTIONAL_PEERS = "BidirectionalPeers"; static const char* const KEY_BUCKETS = "Buckets"; static const char* const KEY_COMPRESSION = "Compression"; static const char* const KEY_ID = "ID"; @@ -43,6 +42,7 @@ static const char* const KEY_PLUGIN_CONFIGURATION = "Transfers"; static const char* const KEY_PRIORITY = "Priority"; static const char* const KEY_REMOTE_JOB = "RemoteJob"; +static const char* const KEY_REMOTE_SELF = "RemoteSelf"; static const char* const KEY_RESOURCES = "Resources"; static const char* const KEY_SIZE = "Size"; static const char* const KEY_URL = "URL"; @@ -65,13 +65,6 @@ BucketCompression_Gzip }; - enum PeerCapabilities - { - PeerCapabilities_Disabled, - PeerCapabilities_Installed, - PeerCapabilities_Bidirectional - }; - unsigned int ConvertToMegabytes(uint64_t value); unsigned int ConvertToKilobytes(uint64_t value); diff -r 1ed03945c057 -r 5e6de82bb10f Plugin/Plugin.cpp --- a/Plugin/Plugin.cpp Mon Sep 17 14:42:57 2018 +0200 +++ b/Plugin/Plugin.cpp Tue Sep 18 15:39:02 2018 +0200 @@ -438,16 +438,16 @@ OrthancPlugins::TransferQuery query(body); + OrthancPlugins::OrthancPeers peers(context.GetOrthanc()); + std::string remoteSelf; // For pull mode - bool pullMode = context.LookupBidirectionalPeer(remoteSelf, query.GetPeer()); + bool pullMode = peers.LookupUserProperty(remoteSelf, query.GetPeer(), KEY_REMOTE_SELF); LOG(INFO) << "Sending resources to peer \"" << query.GetPeer() << "\" using " << (pullMode ? "pull" : "push") << " mode"; if (pullMode) { - OrthancPlugins::OrthancPeers peers(context.GetOrthanc()); - Json::Value lookup = Json::objectValue; lookup[KEY_RESOURCES] = query.GetResources(); lookup[KEY_COMPRESSION] = OrthancPlugins::EnumerationToString(query.GetCompression()); @@ -579,38 +579,33 @@ return; } - OrthancPlugins::DetectTransferPlugin::Peers peers; + OrthancPlugins::DetectTransferPlugin::Result detection; OrthancPlugins::DetectTransferPlugin::Apply - (peers, context.GetOrthanc(), context.GetThreadsCount(), 2 /* timeout */); + (detection, context.GetOrthanc(), context.GetThreadsCount(), 2 /* timeout */); Json::Value result = Json::objectValue; - for (OrthancPlugins::DetectTransferPlugin::Peers::const_iterator - it = peers.begin(); it != peers.end(); ++it) + OrthancPlugins::OrthancPeers peers(context.GetOrthanc()); + + for (OrthancPlugins::DetectTransferPlugin::Result::const_iterator + it = detection.begin(); it != detection.end(); ++it) { - switch (it->second) + if (it->second) { - case OrthancPlugins::PeerCapabilities_Disabled: - result[it->first] = "disabled"; - break; - - case OrthancPlugins::PeerCapabilities_Installed: - { - std::string remoteSelf; + std::string remoteSelf; - if (context.LookupBidirectionalPeer(remoteSelf, it->first)) - { - result[it->first] = "installed"; - } - else - { - result[it->first] = "bidirectional"; - } - break; + if (peers.LookupUserProperty(remoteSelf, it->first, KEY_REMOTE_SELF)) + { + result[it->first] = "bidirectional"; } - - default: - throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError); + else + { + result[it->first] = "installed"; + } + } + else + { + result[it->first] = "disabled"; } } @@ -658,7 +653,6 @@ OrthancPlugins::OrthancConfiguration plugin; config.GetSection(plugin, KEY_PLUGIN_CONFIGURATION); - plugin.GetDictionary(bidirectionalPeers, KEY_BIDIRECTIONAL_PEERS); threadsCount = plugin.GetUnsignedIntegerValue("Threads", threadsCount); targetBucketSize = plugin.GetUnsignedIntegerValue("BucketSize", targetBucketSize); memoryCacheSize = plugin.GetUnsignedIntegerValue("CacheSize", memoryCacheSize); @@ -669,7 +663,6 @@ OrthancPlugins::PluginContext::Initialize (context, threadsCount, targetBucketSize * KB, maxPushTransactions, memoryCacheSize * MB); - OrthancPlugins::PluginContext::GetInstance().LoadBidirectionalPeers(bidirectionalPeers); OrthancPlugins::RegisterRestCallback (context, std::string(URI_CHUNKS) + "/([.0-9a-f-]+)", true); diff -r 1ed03945c057 -r 5e6de82bb10f Plugin/PluginContext.cpp --- a/Plugin/PluginContext.cpp Mon Sep 17 14:42:57 2018 +0200 +++ b/Plugin/PluginContext.cpp Tue Sep 18 15:39:02 2018 +0200 @@ -58,23 +58,6 @@ } - bool PluginContext::LookupBidirectionalPeer(std::string& remoteSelf, - const std::string& remotePeer) const - { - BidirectionalPeers::const_iterator found = bidirectionalPeers_.find(remotePeer); - - if (found == bidirectionalPeers_.end()) - { - return false; - } - else - { - remoteSelf = found->second; - return true; - } - } - - void PluginContext::Initialize(OrthancPluginContext* context, size_t threadsCount, size_t targetBucketSize, diff -r 1ed03945c057 -r 5e6de82bb10f Plugin/PluginContext.h --- a/Plugin/PluginContext.h Mon Sep 17 14:42:57 2018 +0200 +++ b/Plugin/PluginContext.h Tue Sep 18 15:39:02 2018 +0200 @@ -31,8 +31,6 @@ class PluginContext : public boost::noncopyable { private: - typedef std::map BidirectionalPeers; - // Runtime structures OrthancPluginContext* context_; OrthancInstancesCache cache_; @@ -43,7 +41,6 @@ // Configuration size_t threadsCount_; size_t targetBucketSize_; - BidirectionalPeers bidirectionalPeers_; PluginContext(OrthancPluginContext* context, @@ -90,20 +87,6 @@ return targetBucketSize_; } - void AddBidirectionalPeer(const std::string& remotePeer, - const std::string& remoteSelf) - { - bidirectionalPeers_[remotePeer] = remoteSelf; - } - - void LoadBidirectionalPeers(const BidirectionalPeers& peers) - { - bidirectionalPeers_ = peers; - } - - bool LookupBidirectionalPeer(std::string& remoteSelf, - const std::string& remotePeer) const; - static void Initialize(OrthancPluginContext* context, size_t threadsCount, size_t targetBucketSize,