subscribe auf object typ



  • hallo zusammen,

    ich möchte einer zahl von diensten ermöglichen, sich für bestimmte nachrichten typen zu registrieren. beim eintreffen von objekten eines typs, sollen dann alle dienste informiert werden, welche sich dafür registriert haben.

    im moment fällt uns nur folgende lösung ein:

    sub(Dienst &, Nachrichtentyp typ);

    um dann beim eintreffen zu sagen:

    notify(nachricht.getTyp())

    nun wäre es aber schön, wenn man diesen hässlichen typ wegbekommen würde, da dieser ja in einer enum o.ä. geflegt werden muss. in java würde man zu class.getName() greifen. gibt es sowas ähnliches in c++ bzw. nen coolen trick, um das sub zu ändern in:

    sub(Dienst &, new Nachricht()); ???

    wie würde dann das notify aussehen???

    vielen dank schonmal für tips. 😃

    h20



  • Da gibt es verschiedene Wege:
    1.) Du sendest alle Nachrichten an alle und laesst die Dienste selber filtern.
    2.) Du nutzt Message Broker. Gibt fertige Bibliotheken.



  • hey,

    danke für die antwort. 🙂 die erste variante wollen wir ausschließen, da es zu viele nachrichten sind, die da verschickt werden. ok, eigentlich sind es events. 😉 kennst du ne seite, wo das message broker pattern mal in c++ vorgestellt ist? vom papier kenne ich es, aber keine ahnung, wie man es in c++ umsetzt.



  • ZeroMQ



  • vielen dank für den tip. wir machen es nun mit boost typeid. 😃


Anmelden zum Antworten