這其中包括了開tcpopen、socket、tcprecv的lib
而.h檔案則都是放在 ../include
後端則是 ../mklib
../mklib/funspcA.f
宣告DB連線的STRUCTURE以及後端相對應的含式
#ifndef _funspcA_
#define _funspcA_
extern int AL_do_OPUser(struct dbs_request *, struct dbs_respond *);
struct _DBService ALDBServiceA[] =
{
{ "OPUser", OPUser, AL_do_OPUser, 1, MAX_ACCESS,0}
}
../mklib/ServiceFunc.c
尋找對應的含式
struct _DBService *
AL_GetFunction(opcode)
int opcode;
{
int fidx;
int SearchGo;
struct _DBService * fun;
SearchGo = TRUE;
if(SearchGo == TRUE)
{
for (fidx=0; fidx < sizeof(ALDBServiceA) / sizeof(struct _DBService) ; fidx++ ) {
if (opcode == ALDBServiceA[fidx].opcode) {
fun = (struct _DBService *) &(ALDBServiceA[fidx]);
SearchGo = FALSE;
break;
}
}
}
}
../mklib.pc/test.pc
AL_do_OPUser(in, out)
struct dbs_request *in;
struct dbs_respond *out;
{
QRYITEM qryitem;
char subfun[MAX_FUNCTION_LEN+1];
char buff[8192];
int reclen;
int item;
int start;
sTESTSTRUCT qqry;
memset(&qqry, 0x00, sizeof(sTESTSTRUCT));
memcpy(&subfun, &(in->databuf[offset]), MAX_FUNCTION_LEN);
offset = 0;
reclen = 0;
memset(&qryitem, 0x00, sizeof(QRYITEM));
offset += MAX_FUNCTION_LEN;
if (!strcmp(subfun, "qusrlist"))
{
memcpy(&qryitem, &(in->databuf[offset]) , sizeof(QRYITEM));
offset += sizeof(QRYITEM);
memcpy(&qqry, &(in->databuf[offset]), sizeof(sTESTSTRUCT));
offset += sizeof(sTESTSTRUCT);
out->value = AL_DBQryUserList1(opid, &qryitem, &qqry, out->databuf, &reclen, in);
out->replen = MIN_REP_LEN + reclen;
return(SUCCESS);
}
}
0 意見:
張貼留言