Commit 6caa48d8 authored by tqcq's avatar tqcq
Browse files

feat add dispatcher to sled.h

parent cc7d131d
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -4,6 +4,7 @@
#include "sled/synchronization/mutex.h"
#include <memory>
#include <set>
#include <type_traits>

namespace sled {
namespace experimental {
@@ -11,12 +12,13 @@ namespace experimental {
template<typename T>
class Dispatcher {
public:
    static_assert(!std::is_rvalue_reference<T>::value, "must be a value type");
    enum class DispatchResult { kHandled, kNotFound };

    struct Handler {
        virtual ~Handler()                    = default;
        virtual bool HandleMessage(const T &) = 0;
        virtual bool OnMessage(T &&)          = 0;
        virtual bool OnMessage(const T &)     = 0;
    };

    virtual ~Dispatcher() = default;
+3 −0
Original line number Diff line number Diff line
@@ -9,6 +9,9 @@ namespace async {}
#include "inja.hpp"
#include "rx.h"

// experimental
#include "sled/experimental/design_patterns/dispatcher.h"

// event_bus
#include "sled/event_bus/event_bus.h"