plugin: convert plugin_fd_add() to method
[ncmpc-debian.git] / src / plugin.hxx
index 236831c..1b39a12 100644 (file)
@@ -1,5 +1,5 @@
 /* ncmpc (Ncurses MPD Client)
- * (c) 2004-2018 The Music Player Daemon Project
+ * (c) 2004-2019 The Music Player Daemon Project
  * Project homepage: http://musicpd.org
  *
  * This program is free software; you can redistribute it and/or modify
@@ -20,7 +20,7 @@
 #ifndef PLUGIN_H
 #define PLUGIN_H
 
-#include <glib.h>
+#include "AsioServiceFwd.hxx"
 
 #include <vector>
 #include <string>
@@ -44,7 +44,7 @@ struct PluginList {
  * when plugin_stop is called (i.e. strdup it if you need it afterwards).
  * @param data the caller defined pointer passed to plugin_run()
  */
-typedef void (*plugin_callback_t)(const GString *result, const bool success,
+typedef void (*plugin_callback_t)(std::string &&result, const bool success,
                                  const char *plugin_name, void *data);
 
 /**
@@ -57,7 +57,7 @@ struct PluginCycle;
  * Load all plugins (executables) in a directory.
  */
 bool
-plugin_list_load_directory(PluginList *list, const char *path);
+plugin_list_load_directory(PluginList *list, const char *path) noexcept;
 
 /**
  * Run plugins in this list, until one returns success (or until the
@@ -65,15 +65,16 @@ plugin_list_load_directory(PluginList *list, const char *path);
  *
  * @param list the plugin list
  * @param args nullptr terminated command line arguments passed to the
- * plugin programs
+ * plugin programs; they must remain valid while the plugin runs
  * @param callback the callback function which will be called when a
  * result is available
  * @param callback_data caller defined pointer which is passed to the
  * callback function
  */
 PluginCycle *
-plugin_run(PluginList *list, const char *const*args,
-          plugin_callback_t callback, void *callback_data);
+plugin_run(boost::asio::io_service &io_service,
+          PluginList *list, const char *const*args,
+          plugin_callback_t callback, void *callback_data) noexcept;
 
 /**
  * Stops the plugin cycle and frees resources.  This can be called to
@@ -81,6 +82,6 @@ plugin_run(PluginList *list, const char *const*args,
  * invoked.
  */
 void
-plugin_stop(PluginCycle *invocation);
+plugin_stop(PluginCycle *invocation) noexcept;
 
 #endif