1. tpinit
2.tpalloc
3.tpenqueue
4.tpdequeue
5.tpterm
tpbegin();
tpenqueue();
tpcommit()/tprollback();
你说的流程基本是对的。
client:
tpinit->tpalloc->Fchg->tpcall ->Fget from buffer,处理->tpfree tpterm.
用FML的occ是可以知道记录的条数,不过要注意不是每一条记录都有所有的字段的问题。不过一般实际中的做法是我们设置一个字段来告知对方条数,这样处理起来比较方便。
int tpdequeue(char *qspace, char *qname, TPQCTL *ctl, char **data, long *len, long flags)
添加你的FML路径即可(server和clinet)。
例如:
set FLDTBLDIR32=%APPDIR% #你的fml目录路径
set FIELDTBLS32=%APPDIR%\xxx.fml #你的fml文件路径
6. Client端的开发
client端的开发是一个WIN32的应用程序,通过输入文件上传的路径,读取文件,然后利用FML缓冲上传到Server端。
这里需要主要的是Tpinit前需要将一些环境变量,下面是我的初始化函数:
static bool _init()
{
strcpy(TempBuf, "WSNADDR=//192.168.0.109:8000"); //这里的ip和port根据实际情况指定.
tuxputenv(TempBuf);
memset(TempBuf,0,255);
strcpy(TempBuf,"FLDTBLDIR32=D:\mywork\client");
tuxputenv(TempBuf);
memset(TempBuf,0,255);
strcpy(TempBuf,"FIELDTBLS32=D:\mywork\client\ftp.fml");
tuxputenv(TempBuf);
if (tpinit((TPINIT *) NULL) == -1) {
return false;
}
return true;
}
http://dev2dev.bea.com.cn/bbs/servlet/D2DServlet/download/4-10521-53080-340/tuxedo_mq.pdf