1 /*************************************************************************** 2 begin : Mon Mar 01 2004 3 copyright : (C) 2018 by Martin Preuss 4 email : martin@libchipcard.de 5 6 *************************************************************************** 7 * Please see toplevel file COPYING for license details * 8 ***************************************************************************/ 9 10 #ifndef AO_PROVIDER_P_H 11 #define AO_PROVIDER_P_H 12 13 14 #define AO_PROVIDER_CONNECT_TIMEOUT 15 15 #define AO_PROVIDER_SEND_TIMEOUT 10 16 #define AO_PROVIDER_RECV_TIMEOUT 60 17 18 #include <aqofxconnect/provider.h> 19 20 #include <aqbanking/types/transaction.h> 21 22 #include <gwenhywfar/buffer.h> 23 24 25 26 struct AO_PROVIDER { 27 GWEN_DB_NODE *dbConfig; 28 29 int connectTimeout; 30 int sendTimeout; 31 int recvTimeout; 32 uint32_t lastJobId; 33 }; 34 35 static GWEN_DIALOG *AO_Provider_GetEditUserDialog(AB_PROVIDER *pro, AB_USER *u); 36 static GWEN_DIALOG *AO_Provider_GetNewUserDialog(AB_PROVIDER *pro, int i); 37 38 39 40 /* *************************************************************************************************************** 41 * 42 * provider.c 43 * 44 * ***************************************************************************************************************/ 45 46 47 static void GWENHYWFAR_CB AO_Provider_FreeData(void *bp, void *p); 48 static int AO_Provider_Init(AB_PROVIDER *pro, GWEN_DB_NODE *dbData); 49 static int AO_Provider_Fini(AB_PROVIDER *pro, GWEN_DB_NODE *dbData); 50 static AB_ACCOUNT *AO_Provider_CreateAccountObject(AB_PROVIDER *pro); 51 static AB_USER *AO_Provider_CreateUserObject(AB_PROVIDER *pro); 52 53 54 55 /* *************************************************************************************************************** 56 * 57 * provider_accspec.c 58 * 59 * ***************************************************************************************************************/ 60 61 62 static int AO_Provider__CreateTransactionLimitsForAccount(AB_PROVIDER *pro, const AB_ACCOUNT *acc, 63 AB_TRANSACTION_LIMITS_LIST *tll); 64 static int AO_Provider_UpdateAccountSpec(AB_PROVIDER *pro, AB_ACCOUNT_SPEC *as, int doLock); 65 66 67 68 69 /* *************************************************************************************************************** 70 * 71 * provider_sendcmd.c 72 * 73 * ***************************************************************************************************************/ 74 75 76 static AB_TRANSACTION *AO_Provider_FindJobById(AB_TRANSACTION_LIST2 *jl, uint32_t jid); 77 static int AO_Provider__AddJobToList2(AB_PROVIDER *pro, AB_TRANSACTION *j, AB_TRANSACTION_LIST2 *jobList); 78 static int AO_Provider__SendJobList(AB_PROVIDER *pro, AB_USER *u, AB_ACCOUNT *a, AB_TRANSACTION_LIST2 *jl, 79 AB_IMEXPORTER_CONTEXT *ctx); 80 static void AO_Provider__FinishJobs(AB_PROVIDER *pro, AB_TRANSACTION_LIST2 *jobList, AB_IMEXPORTER_CONTEXT *ctx); 81 static int AO_Provider__SendAccountQueue(AB_PROVIDER *pro, AB_USER *u, AB_ACCOUNTQUEUE *aq, AB_IMEXPORTER_CONTEXT *ctx); 82 static int AO_Provider__SendUserQueue(AB_PROVIDER *pro, AB_USERQUEUE *uq, AB_IMEXPORTER_CONTEXT *ctx); 83 static int AO_Provider_SendCommands(AB_PROVIDER *pro, AB_PROVIDERQUEUE *pq, AB_IMEXPORTER_CONTEXT *ctx); 84 static void AO_Provider__AddOrModifyAccount(AB_PROVIDER *pro, AB_USER *u, AB_ACCOUNT *acc); 85 static int AO_Provider__ProcessImporterContext(AB_PROVIDER *pro, AB_USER *u, AB_IMEXPORTER_CONTEXT *ictx); 86 87 88 89 /* *************************************************************************************************************** 90 * 91 * provider_update.c 92 * 93 * ***************************************************************************************************************/ 94 95 96 static int AO_Provider_UpdatePreInit(AB_PROVIDER *pro, uint32_t lastVersion, uint32_t currentVersion); 97 static int AO_Provider_UpdatePostInit(AB_PROVIDER *pro, uint32_t lastVersion, uint32_t currentVersion); 98 99 100 101 102 #endif 103 104