0001 #include <stdio.h>
0002 #include <stdlib.h>
0003 #include <string.h>
0004 #include <time.h>
0005
0006
0007 #include <atmi.h>
0008 #include <ubf.h>
0009 #include <bank.fd.h>
0010
0011 #define SUCCEED 0
0012 #define FAIL -1
0013
0014
0015
0016
0017 void BALANCE (TPSVCINFO *p_svc)
0018 {
0019 int ret=SUCCEED;
0020 double balance;
0021 char account[28+1];
0022 char currency[3+1];
0023 BFLDLEN len;
0024
0025 UBFH *p_ub = (UBFH *)p_svc->data;
0026
0027 fprintf(stderr, "BALANCE got call\n");
0028
0029
0030 if (NULL==(p_ub = (UBFH *)tprealloc ((char *)p_ub, 1024)))
0031 {
0032 fprintf(stderr, "Failed to realloc the UBF buffer - %s\n",
0033 tpstrerror(tperrno));
0034 ret=FAIL;
0035 goto out;
0036 }
0037
0038
0039
0040 len = sizeof(account);
0041 if (SUCCEED!=Bget(p_ub, T_ACCNUM, 0, account, &len))
0042 {
0043 fprintf(stderr, "Failed to get T_ACCNUM[0]! - %s\n",
0044 Bstrerror(Berror));
0045 ret=FAIL;
0046 goto out;
0047 }
0048
0049
0050 len = sizeof(currency);
0051 if (SUCCEED!=Bget(p_ub, T_ACCCUR, 0, currency, &len))
0052 {
0053 fprintf(stderr, "Failed to get T_ACCCUR[0]! - %s\n",
0054 Bstrerror(Berror));
0055 ret=FAIL;
0056 goto out;
0057 }
0058
0059 fprintf(stderr, "Got request for account: [%s] currency [%s]\n",
0060 account, currency);
0061
0062 srand(time(NULL));
0063 balance = (double)rand()/(double)RAND_MAX + rand();
0064
0065
0066
0067 fprintf(stderr, "Retruning balance %lf\n", balance);
0068
0069
0070 if (SUCCEED!=Bchg(p_ub, T_AMTAVL, 0, (char *)&balance, 0L))
0071 {
0072 fprintf(stderr, "Failed to set T_AMTAVL! - %s\n",
0073 Bstrerror(Berror));
0074 ret=FAIL;
0075 goto out;
0076 }
0077
0078 out:
0079 tpreturn( ret==SUCCEED?TPSUCCESS:TPFAIL,
0080 0L,
0081 (char *)p_ub,
0082 0L,
0083 0L);
0084 }
0085
0086
0087
0088
0089 int tpsvrinit(int argc, char **argv)
0090 {
0091 if (SUCCEED!=tpadvertise("BALANCE", BALANCE))
0092 {
0093 fprintf(stderr, "Failed to initialize BALANCE - %s\n",
0094 tpstrerror(tperrno));
0095 }
0096 }
0097
0098
0099
0100
0101 void tpsvrdone(void)
0102 {
0103 fprintf(stderr, "tpsvrdone called\n");
0104 }
0105