plugin.h 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. /*
  2. * Copyright (C) 2008 Martin Willi
  3. * HSR Hochschule fuer Technik Rapperswil
  4. *
  5. * This program is free software; you can redistribute it and/or modify it
  6. * under the terms of the GNU General Public License as published by the
  7. * Free Software Foundation; either version 2 of the License, or (at your
  8. * option) any later version. See <http://www.fsf.org/copyleft/gpl.txt>.
  9. *
  10. * This program is distributed in the hope that it will be useful, but
  11. * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
  12. * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
  13. * for more details.
  14. */
  15. /**
  16. * @defgroup plugin plugin
  17. * @{ @ingroup plugins
  18. */
  19. #ifndef PLUGIN_H_
  20. #define PLUGIN_H_
  21. typedef struct plugin_t plugin_t;
  22. #include <library.h>
  23. #include <plugins/plugin_feature.h>
  24. /**
  25. * Interface definition of a plugin.
  26. */
  27. struct plugin_t {
  28. /**
  29. * Get the name of the plugin.
  30. *
  31. * @return plugin name
  32. */
  33. char* (*get_name)(plugin_t *this);
  34. /**
  35. * Get plugin features with dependencies.
  36. *
  37. * The returned array contains features provided by the plugin and
  38. * dependencies for that feature. See plugin_feature_t for details.
  39. *
  40. * @param features pointer receiving plugin features
  41. * @return number of features
  42. */
  43. int (*get_features)(plugin_t *this, plugin_feature_t *features[]);
  44. /**
  45. * Try to reload plugin configuration.
  46. *
  47. * @return TRUE if reloaded, FALSE if reloading not supporty by plugin
  48. */
  49. bool (*reload)(plugin_t *this);
  50. /**
  51. * Destroy a plugin instance.
  52. */
  53. void (*destroy)(plugin_t *this);
  54. };
  55. /**
  56. * Plugin constructor function definition.
  57. *
  58. * Each plugin has a constructor function. This function is called on daemon
  59. * startup to initialize each plugin.
  60. * The plugin function is named plugin_name_plugin_create().
  61. *
  62. * @return plugin_t instance
  63. */
  64. typedef plugin_t *(*plugin_constructor_t)(void);
  65. #endif /** PLUGIN_H_ @}*/