pw_rpc: Use pw::IntrusiveList for services
Replace the ServiceRegistry and custom intrusive list logic with
pw::IntrusiveList.
Change-Id: Id2b01730593564d167795edd9506a9aa750b45a5
diff --git a/pw_rpc/public/pw_rpc/internal/service.h b/pw_rpc/public/pw_rpc/internal/service.h
index fb42585..7e5a96f 100644
--- a/pw_rpc/public/pw_rpc/internal/service.h
+++ b/pw_rpc/public/pw_rpc/internal/service.h
@@ -16,6 +16,7 @@
#include <cstdint>
#include <utility>
+#include "pw_containers/intrusive_list.h"
#include "pw_rpc/internal/method.h"
#include "pw_span/span.h"
@@ -23,7 +24,7 @@
// Base class for all RPC services. This cannot be instantiated directly; use a
// generated subclass instead.
-class Service {
+class Service : public IntrusiveList<Service>::Item {
public:
uint32_t id() const { return id_; }
@@ -33,14 +34,13 @@
protected:
template <typename T>
constexpr Service(uint32_t id, T&& methods)
- : id_(id), methods_(std::forward<T>(methods)), next_(nullptr) {}
+ : id_(id), methods_(std::forward<T>(methods)) {}
private:
friend class ServiceRegistry;
uint32_t id_;
span<const Method> methods_;
- Service* next_;
};
} // namespace pw::rpc::internal