Vorschlag: Plugins?



  • Wie wäre es mit einem Tutorial um ein Plugin-System zu schreiben? Am besten sollte das ganze auf Windows und Linux dargestellt werden. Ich hab dazu leider keine Ahnung, aber vielleicht kann jemand anders dazu was sagen... 👍

    Wenn Interesse besteht...?



  • Ja, das ist ein interessantes und nicht ganz einfaches Thema, da wäre ein Artikel schon toll.



  • GPC schrieb:

    Ja, das ist ein interessantes und nicht ganz einfaches Thema..

    vor allem sehr umfangreich, weil's dafür die verschiedensten ansätze gibt.
    in Java macht man's z.b. mit dem ClassLoader.
    in nacktem C nimmt man eine struct mit function pointern.
    unter win gehen irgendwelche tricks mit exports aus DLLs oder irgendwelche COM-objekte.
    usw...
    viel spass 👍



  • Besteht denn die Chance auf so einen Artikel? Beziehungsweise habt ihr jemanden der es schreibt?



  • wasEineTolleIdee schrieb:

    Besteht denn die Chance auf so einen Artikel? Beziehungsweise habt ihr jemanden der es schreibt?

    Nein, haben wir nicht. Sollte sich jemand kompetentes melden, steht dem Artikel nichts im Weg.



  • Als ich mein Plugin-System (C++) geschrieben habe, habe ich zwar eine tolle API bauen können, aber keine Unterstützung für Windows.

    pongbar_loop.cpp (Achtung, die Dateien auf dem Server sind nicht alle aktuell) ist ein Beispiel, wie man die API benutzen kann.

    Ausschnitt:

    plugin_handle<main_loop> loop(
          with_feature<timer_manager>() && with_feature<quit_manager>());
    

    Hier wird ein Plugin geladen, das das Interface main_loop (gott::events::main_loop um genau zu sein) unterstützt, sowie die beiden Features timer_manager und quit_manager (auch beides in gott::events). Die nötigen Informationen werden etwa so in die Plugin-Datei (.cpp :p) gelegt:

    GOTT_PLUGIN_MAKE_BUILDER_SIMPLE(plugin, gott::events::epoll_loop)
    
    GOTT_PLUGIN_METADATA(
    "plugin gott::events::epoll_loop\n"
    "interface gott::events::main_loop\n"
    "module-file ??FILE??\n"
    "symbol plugin\n"
    "priority high\n"
    "feature gott::events::fd_manager\n"
    "feature gott::events::timer_manager\n"
    "feature gott::events::inprocess_message_manager\n"
    "feature gott::events::signal_manager\n\n"
    )
    

    Nur um mal zu zeigen, was ihr verpasst 😉



  • wie schlecht...


Anmelden zum Antworten