Tuxedo的客户端与服务端之间的数据传送是通过数据缓冲区来进行的。Tuxedo的数据缓冲区主要包括STRING(以“\0”结尾的字符串), GARRAY(不以“\0”结尾的字符串), VIEW, VIEW32, FML,FML32和XML。
与缓冲区使用有关的ATMI
char *tpalloc(char *type, char *subtype, long size)
描述:分配缓冲区
参数:type:缓冲区的类型
subtype:缓冲区的子类型,只有VIEW有子类型,其它缓冲区的该参数设为NULL
long:缓冲区的大小
返回值:成功返回一个指向所分配空间首地址的char*形指针,失败返回NULL。
char *tprealloc(char *ptr, long size)
描述:重新分配缓冲区
参数:ptr:指向原缓冲区首地址的指针
size:新缓冲区的大小
返回值:成功返回一个指向新分配空间首地址的char*形指针,失败返回NULL。
void tpfree(char *bufptr)
描述:释放出tpalloc()或tprealloc()分配的缓冲区
参数:bufptr:指向要释放的缓冲区首地址的指针
返回值:无。
long tptypes(char *ptr, char *type, char *subtype)
描述:返回有ptr所指向的缓冲区的类型及子类型
参数:ptr:指向要进行类型识别的缓冲区首地址的指针
type:类型名
subtype:子类型名(只对VIEW类型有效)
返回值:0为成功,-1为失败,错误号保存在全局变量tperrno中
常用的FML(FML32)操作函数:
FBFR* Falloc (FLDOCC F, FLDLEN V)
描述:分配一块FML缓冲区
参数:FLDOCC:该FML缓冲区的字段个数
FLDLEN:该FML缓冲区的长度
返回值:成功返回一个指向该FML缓冲区首地址的指针。失败返回NULL,错误号保存在全局变量Ferror中
int Finit(FBFR *fbfr, FLDLEN buflen)
描述:初始化该FML缓冲区
参数:fbfr:一个指向该FML缓冲区首地址的指针
buflen:该FML缓冲区的长度
返回值:失败为-1,错误号保存在全局变量Ferror中
int Fadd(FBFR *fbfr,FLDID fielded,char *value,FLDLEN len)
描述:往FML缓冲区fbfr中ID为fieldid的字段增加一个值value
参数:fbfr:指向该FML缓冲区首地址的指针
fielded:要增加的字段的ID
value:要增加的值,如果是其他类型的要转化为char*
len:该字段的长度,如果不是CARRARY类型的,可设为0
返回值:失败为-1,错误号保存在全局变量Ferror中
int Fchg(FBFR *fbfr,FLDID fielded,int occ,char *value,FLDLEN len)
描述:改变fbfr中ID为fieldid字段的值
参数:fbfr:指向该FML缓冲区首地址的指针
fielded:要增加的字段的ID
value:该字段的新值,如果是其它类型的要转化为char*
len:该字段的长度,如果不是CARRARY类型的,可设为0
返回值:失败为-1,错误号保存在全局变量Ferror中
int Fget(FBFR *fbfr,FLDID fielded,int occ,char *value,FLDLEN *maxlen)
描述:从fbfr缓冲区中取ID为fieldid字段的值到value中
参数:fbfr:指向该FML缓冲区首地址的指针
fielded:字段的ID
value:取出的值保存到该指针指向的地址中
maxlen:可以COPY到缓冲区value中的字符串的长度,返回值为真正COPY到该缓冲区的字符串的长度
返回值:失败为-1,错误号保存在全局变量Ferror中
Fprint(FBFR *fbfr)
描述:按格式打印fbfr缓冲区的内容。一般用于程序调试中
参数:fbfr:指向该FML缓冲区首地址的指针
返回值:失败为-1,错误号保存在全局变量Ferror中
char* Fstrerror(int err)
描述:返回错误号为err的错误描述
参数:err:Ferror的值
返回值:成功返回错误描述,失败返回NULL
int pchgd32(long fbfr,long fldid,long occ,double buf)
描述:写一个浮点型数据到FML32缓冲区的指定位置
参数:fbfr为FML32缓冲区;
fldid为ID号;occ为位置;
buf为要写入的浮点型数据;
返回值:0为成功,-1失败。
int pchgl32(long fbfr,long fldid,long occ,long buf)
描述:写一个整形数据到FML32缓冲区的指定位置
参数:fbfr:FML32缓冲区;fldid:ID号;occ:位置;
buf:要写入的整形数据
返回值:0为成功,-1失败。
int pchgs32(long fbfr,long fldid,long occ,string buf)
描述:写一个字符型数据到FML32缓冲区的指定位置
参数:fbfr:FML32缓冲区;fldid:ID号;occ:位置;
buf:要写入的字符型数据
返回值:0为成功,-1失败。
int pgetd32(long fbfr,long fldid,long occ,ref double buf)
描述:从FML32缓冲区的指定位置中去浮点型数据到输入参数BUF中
参数:fbfr:FML32缓冲区;fldid:ID号;occ:位置;
buf:取出的数据储存到buf中
返回值:0为成功,-1失败。
int pgetl32(long fbfr,long fldid,long occ,ref long buf)
描述:从FML32缓冲区的指定位置取整型数据到输入参数buf中
参数:fbfr:FML32缓冲区;fldid:ID号;occ:位置;
buf:取出的数据储存到buf中