Back to home page

Enduro/X

 
 

    


0001 #include <stdio.h>
0002 #include <stdlib.h>
0003 #include <string.h>
0004 #include <time.h>
0005 
0006 /* Enduro/X includes: */
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  * BALANCE service
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     /* Resize the buffer to have some space in... */
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     /* Read the account field */
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     /* Read the currency field */
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     /* Return the value in T_AMTAVL field */
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  * Do initialization
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  * Do de-initialization
0100  */
0101 void tpsvrdone(void)
0102 {
0103     fprintf(stderr, "tpsvrdone called\n");
0104 }
0105