better example

This commit is contained in:
2025-02-06 16:04:51 +01:00
parent f3e98543d7
commit e6a58eb999
13 changed files with 59 additions and 75 deletions

View File

@@ -0,0 +1,21 @@
#pragma once
#include <sp/default/DefaultPacket.h>
#include <sp/protocol/Field.h>
#include <sp/protocol/MessageBase.h>
enum PacketId {
KeepAlive = 0,
};
using KeepAliveFields = std::tuple<sp::Field<std::uint64_t>>;
class KeepAlivePacket : public sp::MessageBase<sp::PacketMessage,
sp::option::StaticNumIdImpl<KeepAlive>, // provide idImpl() if needed
sp::option::DispatchImpl<KeepAlivePacket>, // provide dispatchImpl() if needed
sp::option::FieldsImpl<KeepAliveFields> // provide access to fields
> {};
using AllPackets = std::tuple<KeepAlivePacket>;
#include <sp/default/DefaultPacketHandler.h>

View File

@@ -1,9 +0,0 @@
#pragma once
#include <cstdint>
namespace sp {
using PeerID = std::uint16_t;
} // namespace sp

View File

@@ -0,0 +1,16 @@
#pragma once
#include <sp/protocol/Message.h>
#include <sp/protocol/GenericHandler.h>
namespace sp {
class PacketHandler;
using PacketMessage = Message<
option::MsgIdType<std::uint8_t>, // add id() operation
option::ReadOperations, // add read() operation
option::WriteOperations, // add write() operation
option::Handler<PacketHandler> // add dispatch() operation
>;
} // namespace sp

View File

@@ -0,0 +1,9 @@
#pragma once
#include <sp/protocol/GenericHandler.h>
// the tuple AllPackets must be defined !
namespace sp {
class PacketHandler : public sp::GenericHandler<PacketMessage, AllPackets> {};
} // namespace sp

View File

@@ -1,6 +1,6 @@
#pragma once
#include <sp/MessageInterfaceBuilder.h>
#include <sp/protocol/MessageInterfaceBuilder.h>
namespace sp {

View File

@@ -1,7 +1,7 @@
#pragma once
#include <sp/Message.h>
#include <sp/Templates.h>
#include <sp/protocol/Message.h>
#include <sp/protocol/Templates.h>
namespace sp {
namespace option {
@@ -261,7 +261,7 @@ struct MessageImplBuilder {
using Base5 = typename MessageImplProcessWriteFields<Base4, HasWriteImpl>::Type;
// Provide ValidImpl() if possible
static const bool HasValidImpl = InterfaceOptions::HasWriteOperations && ImplOptions::HasFieldsImpl;
static const bool HasValidImpl = InterfaceOptions::HasValid && ImplOptions::HasFieldsImpl;
using Base6 = typename MessageImplProcessValidFields<Base5, HasValidImpl>::Type;
// The last BaseN must be taken as final type.

View File

@@ -1,6 +1,6 @@
#pragma once
#include <sp/MessageInterfaces.h>
#include <sp/protocol/MessageInterfaces.h>
namespace sp {
namespace option {

View File

@@ -1,6 +1,6 @@
#pragma once
#include <sp/Options.h>
#include <sp/protocol/Options.h>
namespace sp {
namespace option {