From 702928688303f37da924e28484b9fb4574489b0f Mon Sep 17 00:00:00 2001 From: Kevin Matz Date: Tue, 16 May 2023 10:27:56 -0400 Subject: [PATCH] tolerate addresses that don't begin with a '/' --- protocol/osc/receiver.cpp | 24 ++++++++++++++---------- protocol/osc/receiver.h | 2 +- 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/protocol/osc/receiver.cpp b/protocol/osc/receiver.cpp index 8bf750c..bb1db47 100644 --- a/protocol/osc/receiver.cpp +++ b/protocol/osc/receiver.cpp @@ -131,20 +131,24 @@ void Receiver::dispatch(const std::shared_ptr msg) const /** * @brief Receiver::findMethods - * @param pattern + * @param address * @return */ -std::vector Receiver::findMethods(std::string pattern) const +std::vector Receiver::findMethods(std::string address) const { - std::istringstream stream(pattern); - stream.seekg(1); // skip leading '/' - - std::list tokens; - for (std::string name; std::getline(stream, name, '/');) - tokens.push_back(name); - std::vector hits; - address_space_->matchAddress(hits, tokens); + if (address.empty()) + return hits; + + std::istringstream stream(address); + if (address[0] == '/') // skip leading '/' + stream.seekg(1); + + std::list pattern; + for (std::string name; std::getline(stream, name, '/');) + pattern.push_back(name); + + address_space_->matchAddress(hits, pattern); return hits; } diff --git a/protocol/osc/receiver.h b/protocol/osc/receiver.h index 9eeca7c..32da455 100644 --- a/protocol/osc/receiver.h +++ b/protocol/osc/receiver.h @@ -53,7 +53,7 @@ public: * @return */ Method *rootMethod() const { return address_space_; } - std::vector findMethods(std::string pattern) const; + std::vector findMethods(std::string address) const; protected: void scheduleBundle(const std::shared_ptr bundle) const;