19#include "pw_containers/intrusive_list.h"
20#include "pw_preprocessor/compiler.h"
21#include "pw_rpc/internal/method.h"
22#include "pw_rpc/internal/method_union.h"
23#include "pw_rpc/service_id.h"
24#include "pw_span/span.h"
44 ServiceId service_id()
const {
return internal::WrapServiceId(id_); }
51 template <
typename T,
size_t kMethodCount>
52 constexpr Service(uint32_t
id,
const std::array<T, kMethodCount>& methods)
54 methods_(methods.data()),
55 method_size_(
sizeof(T)),
56 method_count_(
static_cast<uint16_t
>(kMethodCount)) {
60 static_assert(kMethodCount <= std::numeric_limits<uint16_t>::max());
69 constexpr Service(uint32_t
id,
const T& method)
70 : id_(
id), methods_(&method), method_size_(
sizeof(T)), method_count_(1) {}
74 friend class ServiceTestHelper;
77 const internal::Method* FindMethod(uint32_t method_id)
const;
80 const internal::MethodUnion*
const methods_;
81 const uint16_t method_size_;
82 const uint16_t method_count_;
Definition: intrusive_list.h:88
Definition: service_id.h:35
#define PW_MODIFY_DIAGNOSTICS_POP()
Definition: compiler.h:194
#define PW_MODIFY_DIAGNOSTIC_GCC(kind, option)
Definition: compiler.h:211
#define PW_MODIFY_DIAGNOSTICS_PUSH()
Definition: compiler.h:189