content.txt 2.7 KB
!1 Création d'un nouveau Plugin AMDA
!2 Objectif
L'objectif de cette page est de créer un nouveau Plugin AMDA. 
Cela permettra de créer une nouvelle fonctionnalité d'AMDA
!2 Procédure
Il faut créer un plugin [[cf. AMDA plugin][]]
Il faut créer une librairie dynamique contenant les 2 fonction C:
 * !-extern "C" const char* getPluginVersion() -!
 * !-extern "C" void registerPlugin(AMDA::Plugins::PluginManager & pm)-!
Ce fichiers doit être positionné dans le répertoire {app.plugin}
!2 Example:

!4 2 Creer un fichier .cc
Par example '''AMDAPlugin.cc''', sont contenue sera du type:

{{{
/**
* 
*  The main function performs the following actions : ...
*/

//=============================================================================
// Include section
//=============================================================================

// Standard libraries include files
//-----------------------------------------------------------------------------
#include <iostream>

// Include oriented definitions 
//-----------------------------------------------------------------------------

// Module Kernel include files
//-----------------------------------------------------------------------------

#include "ServicesServer.hh"
#include "PluginManager.hh"

using namespace AMDA::Parameters;

// Other modules include files
//-----------------------------------------------------------------------------



/**
   Retrieve the Plugin version we're going to expect
*/
extern "C" const char* getPluginVersion() 
{
	return "(Version)";
}

/**
   Tells us to register our functionality to an engine kernel
*/
extern "C" void registerPlugin(AMDA::Plugins::PluginManager & pm)
{
	ProcessFactory factProcessGetClbInfo = boost::factory<GetClbInfoProcess*>();
	ServicesServer::getInstance()->addProcessFactory("timeShift", factProcessGetClbInfo);
}

}}}
!4 3 Compiler le fichier .cc en un fichier .so

{{{
c++   -DMagnitude_EXPORTS -g  -std=c++0x -fPIC -Wall -ggdb -DLINUX -Dlinux -D_REENTRANT -malign-double -pthread -fPIC   -o AMDAPlugin.o -c AMDAPlugin.cc


c++  -fPIC -g  -std=c++0x -fPIC -Wall -ggdb -DLINUX -Dlinux -D_REENTRANT -malign-double -pthread  -shared -Wl,-soname,libnewPlugin.so -o libnewPlugin.so AMDAPlugin.o 
}}}

!4 4 Créer le plugin
Soit {app.plugin} le répertoire de plugin indiqué dans le fichier de properties ''app.properties'' d'AMDA. Ce répertoire est indiqué par la propriété app.plugin
Copier dans le répertoire ''{app.plugin}'' le fichier de librairie dynamique .so ''newPlugin.so''.
Si votre plugin dépend de librairie dynamique supplémentaire, vous pouvez copier (ou créer des liens symboliques) ces librairies dans le répertoire ''{app.plugin}''. Ces  librairies seront prises en compte.


!contents -R2 -g -p -f -h