What follows is some pseudo code that shows a typical Parse and Build session for a server.
// includes for OFC #include ofcdtd.h" #include "ofcparse.h" #include "ofcbuild.h" // includes for bank side // Load routine for handler MyHandlerLoad() { InitOFCParse(); // initialize the OFC Parser } // handler routine for an HTTP Request MyOFCHandler() { void * pOFCReq; void * pOFCResp; int cbOFCReqLen; int cbOFCRespLen; OFCDOC * pofcdoc; int rcReturn; // get the OFC data from the HTTP Request coming in // and find the length of it from the HTTP headers // TODO: Use your internet server functions here to // handle this if (InternetReadHeader(CONTENT_TYPE) != "application/x-ofc") { // handle error } cbOFCReqLen = InternetReadHeader(CONTENT_LENGTH); // grab a buffer for the OFC data pOFCReq = malloc(cbOFCLen); // now read the data from the HTTP req into your buffer InternetRead(pOFCReq, cbOFCReqLen); // parse that data using the OFC Parse API rcReturn = RcParseOFCRequest(pOFCReq, cbOFCReqLen, &pofcdoc); if (rcReturn != ALL_OK) { // handle the error } // TODO: now go track through the list pointed to by pofcdoc // and generate your bank requests // cleanup the list and delete your buffer CleanupOFCDOCParse(pofcdoc); free(pOFCReq); // TODO: send data to the bank server // TODO: get back list of response from bank, turn it into a // linked list of response transactions // now create the OFC Data rcReturn = RcCreateOFCResponse(pofcdoc, &pOFCResp, &cbOFCRespLen); is (rcReturn != ALL_OK) { // deal with error } // clean up your list CleanupOFCDOCParse(pofcdoc); // now generate an HTTP Response with the data using // your Internet server functions InternetSetHeader(CONTENT_LENGTH, cbOFCRespLen); InternetSetHeader(CONTENT_TYPE, "application/x-ofc"); InternetSetContent(pOFCResp); // free up the Response memory CleanupOFCFile(pofcResp); } // MyOFCHandler()