1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152
|
#ifndef PLUGIN_H
#define PLUGIN_H
// Prototype class definition (defined in icq.h)
class CICQDaemon;
/*------------------------------------------------------------------------------
* Plugin header file
*
* Note that except for LP_Exit these functions must be implemented in each
* plugin.
*----------------------------------------------------------------------------*/
#include <pthread.h>
#include <list>
#ifdef __cplusplus
extern "C" {
#endif
/*------------------------------------------------------------------------------
* Name
*
* Returns the name of the plugin. Should use a static character array.
*----------------------------------------------------------------------------*/
const char *LP_Name();
/*------------------------------------------------------------------------------
* Version
*
* Returns the version of the plugin. Should use a static character array.
*----------------------------------------------------------------------------*/
const char *LP_Version();
/*------------------------------------------------------------------------------
* Status
*
* Returns the status of the plugin. Typically this will be enabled or
* disabled. Rarely relevant for a main interface plugin.
* Should use a static character array.
*----------------------------------------------------------------------------*/
const char *LP_Status();
/*------------------------------------------------------------------------------
* Description
*
* Returns a brief (one line) description of the plugin
* Should use a static character array.
*----------------------------------------------------------------------------*/
const char *LP_Description();
/*------------------------------------------------------------------------------
* Usage
*
* Returns a usage string.
*----------------------------------------------------------------------------*/
const char *LP_Usage();
/*------------------------------------------------------------------------------
* Init
*
* This function is called to initialize the plugin. It is passed the
* relevant command line parameters to be parsed using getopt(). It should
* return whether or not it started successfully.
*----------------------------------------------------------------------------*/
bool LP_Init(int, char **);
/*------------------------------------------------------------------------------
* Main
*
* This function is called to actually run the plugin. It is run in it's own
* thread so may block. It is passed a pointer to the licq daemon with which
* it *must* register before sending any requests. It returns an integer
* return code.
*----------------------------------------------------------------------------*/
int LP_Main(CICQDaemon *);
/*------------------------------------------------------------------------------
* Exit
*
* This function is called to exit the plugin other then when LP_Main
* terminates. It is implemented internally and should not be reimplemented.
* It takes as argument the exit value for the plugin (0 for successful
* termination).
*----------------------------------------------------------------------------*/
void LP_Exit(int);
/*------------------------------------------------------------------------------
* ConfigFile
*
* This function returns the name of the configuration file referenced
* from the BASE_DIR. It can be left undefined if no config file is
* used.
*----------------------------------------------------------------------------*/
const char *LP_ConfigFile();
/*==============================================================================
* INTERNAL USE ONLY
*============================================================================*/
extern pthread_cond_t LP_IdSignal;
extern pthread_mutex_t LP_IdMutex;
extern std::list<unsigned short> LP_Ids;
unsigned short LP_Id;
void *LP_Main_tep(void *p)
{
LP_Exit(LP_Main((CICQDaemon *)p));
return NULL;
}
char *LP_BuildDate()
{
static char szDate[] = __DATE__;
return szDate;
}
char *LP_BuildTime()
{
static char szTime[] = __TIME__;
return szTime;
}
void LP_Exit(int _nResult)
{
int *p = (int *)malloc(sizeof(int));
*p = _nResult;
pthread_mutex_lock(&LP_IdMutex);
LP_Ids.push_back(LP_Id);
pthread_mutex_unlock(&LP_IdMutex);
pthread_cond_signal(&LP_IdSignal);
pthread_exit(p);
}
#ifdef __cplusplus
}
#endif
#endif
|