Defines |
#define | AB_PROVIDER_FLAGS_HAS_NEWUSER_DIALOG 0x00000001 |
#define | AB_PROVIDER_FLAGS_HAS_EDITUSER_DIALOG 0x00000002 |
#define | AB_PROVIDER_FLAGS_HAS_NEWACCOUNT_DIALOG 0x00000004 |
#define | AB_PROVIDER_FLAGS_HAS_EDITACCOUNT_DIALOG 0x00000008 |
#define | AB_PROVIDER_FLAGS_HAS_USERTYPE_DIALOG 0x00000010 |
Typedefs |
typedef AB_PROVIDER *(* | AB_PLUGIN_PROVIDER_FACTORY_FN )(GWEN_PLUGIN *pl, AB_BANKING *ab) |
Enumerations |
enum | AB_PROVIDER_EXTEND_MODE {
AB_ProviderExtendMode_Create = 0,
AB_ProviderExtendMode_Extend,
AB_ProviderExtendMode_Add,
AB_ProviderExtendMode_Remove,
AB_ProviderExtendMode_Save,
AB_ProviderExtendMode_Reload
} |
Functions |
const char * | AB_Provider_GetName (const AB_PROVIDER *pro) |
const char * | AB_Provider_GetEscapedName (const AB_PROVIDER *pro) |
AB_BANKING * | AB_Provider_GetBanking (const AB_PROVIDER *pro) |
uint32_t | AB_Provider_GetFlags (const AB_PROVIDER *pro) |
int | AB_Provider_GetUserDataDir (const AB_PROVIDER *pro, GWEN_BUFFER *buf) |
AB_PROVIDER * | AB_Provider_new (AB_BANKING *ab, const char *name) |
int | AB_Provider_IsInit (const AB_PROVIDER *pro) |
void | AB_Provider_AddFlags (AB_PROVIDER *pro, uint32_t fl) |
GWEN_PLUGIN * | AB_Plugin_Provider_new (GWEN_PLUGIN_MANAGER *pm, const char *name, const char *fileName) |
AB_PROVIDER * | AB_Plugin_Provider_Factory (GWEN_PLUGIN *pl, AB_BANKING *ab) |
void | AB_Plugin_Provider_SetFactoryFn (GWEN_PLUGIN *pl, AB_PLUGIN_PROVIDER_FACTORY_FN fn) |
Prototypes For Virtual Functions |
typedef int(* | AB_PROVIDER_INIT_FN )(AB_PROVIDER *pro, GWEN_DB_NODE *dbData) |
typedef int(* | AB_PROVIDER_FINI_FN )(AB_PROVIDER *pro, GWEN_DB_NODE *dbData) |
typedef int(* | AB_PROVIDER_UPDATEJOB_FN )(AB_PROVIDER *pro, AB_JOB *j) |
typedef int(* | AB_PROVIDER_ADDJOB_FN )(AB_PROVIDER *pro, AB_JOB *j) |
typedef int(* | AB_PROVIDER_EXECUTE_FN )(AB_PROVIDER *pro, AB_IMEXPORTER_CONTEXT *ctx) |
typedef int(* | AB_PROVIDER_RESETQUEUE_FN )(AB_PROVIDER *pro) |
typedef int(* | AB_PROVIDER_EXTEND_USER_FN )(AB_PROVIDER *pro, AB_USER *u, AB_PROVIDER_EXTEND_MODE um, GWEN_DB_NODE *db) |
typedef int(* | AB_PROVIDER_EXTEND_ACCOUNT_FN )(AB_PROVIDER *pro, AB_ACCOUNT *a, AB_PROVIDER_EXTEND_MODE um, GWEN_DB_NODE *db) |
typedef int(* | AB_PROVIDER_UPDATE_FN )(AB_PROVIDER *pro, uint32_t lastVersion, uint32_t currentVersion) |
typedef GWEN_DIALOG *(* | AB_PROVIDER_GET_NEWUSER_DIALOG_FN )(AB_PROVIDER *pro, int i) |
typedef GWEN_DIALOG *(* | AB_PROVIDER_GET_EDITUSER_DIALOG_FN )(AB_PROVIDER *pro, AB_USER *u) |
typedef GWEN_DIALOG *(* | AB_PROVIDER_GET_NEWACCOUNT_DIALOG_FN )(AB_PROVIDER *pro) |
typedef GWEN_DIALOG *(* | AB_PROVIDER_GET_EDITACCOUNT_DIALOG_FN )(AB_PROVIDER *pro, AB_ACCOUNT *a) |
typedef GWEN_DIALOG *(* | AB_PROVIDER_GET_USERTYPE_DIALOG_FN )(AB_PROVIDER *pro) |
Virtual Functions |
int | AB_Provider_Init (AB_PROVIDER *pro) |
int | AB_Provider_Fini (AB_PROVIDER *pro) |
int | AB_Provider_UpdateJob (AB_PROVIDER *pro, AB_JOB *j) |
int | AB_Provider_AddJob (AB_PROVIDER *pro, AB_JOB *j) |
int | AB_Provider_Execute (AB_PROVIDER *pro, AB_IMEXPORTER_CONTEXT *ctx) |
int | AB_Provider_ResetQueue (AB_PROVIDER *pro) |
int | AB_Provider_ExtendUser (AB_PROVIDER *pro, AB_USER *u, AB_PROVIDER_EXTEND_MODE em, GWEN_DB_NODE *db) |
int | AB_Provider_ExtendAccount (AB_PROVIDER *pro, AB_ACCOUNT *a, AB_PROVIDER_EXTEND_MODE em, GWEN_DB_NODE *db) |
int | AB_Provider_Update (AB_PROVIDER *pro, uint32_t lastVersion, uint32_t currentVersion) |
GWEN_DIALOG * | AB_Provider_GetNewUserDialog (AB_PROVIDER *pro, int i) |
GWEN_DIALOG * | AB_Provider_GetEditUserDialog (AB_PROVIDER *pro, AB_USER *u) |
GWEN_DIALOG * | AB_Provider_GetNewAccountDialog (AB_PROVIDER *pro) |
GWEN_DIALOG * | AB_Provider_GetEditAccountDialog (AB_PROVIDER *pro, AB_ACCOUNT *a) |
GWEN_DIALOG * | AB_ProviderGetUserTypeDialog (AB_PROVIDER *pro) |
Setters For Virtual Functions |
void | AB_Provider_SetInitFn (AB_PROVIDER *pro, AB_PROVIDER_INIT_FN f) |
void | AB_Provider_SetFiniFn (AB_PROVIDER *pro, AB_PROVIDER_FINI_FN f) |
void | AB_Provider_SetUpdateJobFn (AB_PROVIDER *pro, AB_PROVIDER_UPDATEJOB_FN f) |
void | AB_Provider_SetAddJobFn (AB_PROVIDER *pro, AB_PROVIDER_ADDJOB_FN f) |
void | AB_Provider_SetExecuteFn (AB_PROVIDER *pro, AB_PROVIDER_EXECUTE_FN f) |
void | AB_Provider_SetResetQueueFn (AB_PROVIDER *pro, AB_PROVIDER_RESETQUEUE_FN f) |
void | AB_Provider_SetExtendUserFn (AB_PROVIDER *pro, AB_PROVIDER_EXTEND_USER_FN f) |
void | AB_Provider_SetExtendAccountFn (AB_PROVIDER *pro, AB_PROVIDER_EXTEND_ACCOUNT_FN f) |
void | AB_Provider_SetUpdateFn (AB_PROVIDER *pro, AB_PROVIDER_UPDATE_FN f) |
void | AB_Provider_SetGetNewUserDialogFn (AB_PROVIDER *pro, AB_PROVIDER_GET_NEWUSER_DIALOG_FN f) |
void | AB_Provider_SetGetEditUserDialogFn (AB_PROVIDER *pro, AB_PROVIDER_GET_EDITUSER_DIALOG_FN f) |
void | AB_Provider_SetGetNewAccountDialogFn (AB_PROVIDER *pro, AB_PROVIDER_GET_NEWACCOUNT_DIALOG_FN f) |
void | AB_Provider_SetGetEditAccountDialogFn (AB_PROVIDER *pro, AB_PROVIDER_GET_EDITACCOUNT_DIALOG_FN f) |
void | AB_Provider_SetGetUserTypeDialogFn (AB_PROVIDER *pro, AB_PROVIDER_GET_USERTYPE_DIALOG_FN f) |
This group represents backends. (Don't use in applications)
Writing an online banking provider for AqBanking is easy. There are only a few callback functions which must be set by the provider (marked as Virtual Functions below).
If the application is finished preparing the job it calls AB_Banking_EnqueueJob. After the application has enqueued all jobs it calls AB_Banking_ExecuteQueue. This function now sends all jobs to their respective providers using AB_Provider_AddJob. When all jobs for a given provider are added AqBanking calls AB_Provider_Execute on this provider. This functions really sends the jobs to the bank server or creates DTAUS discs or whatever the provider is supposed to do. After that AqBanking calls AB_Provider_ResetQueue to make sure no job is left in the providers queue after execution.
Add the given job to the backend's internal queue. This is an immediate queue, it is not persistent. The queue is flushed by AB_PROVIDER_EXECUTE_FN. The added job is removed in any case after AB_PROVIDER_EXECUTE_FN has been called.
This function should first check the job arguments (sanity checks etc). If this function returns an error the job MUST NOT be enqueued in the providers own queue. In this case the job will be marked "errornous".
However, if the backend prepares the job well enough (via AB_PROVIDER_UPDATEJOB_FN) then the application should have made sure that the job complies to the rules laid out by the backend. So rejecting a job here should be a rare case with well-designed applications and backends.
- Parameters:
-