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