plstaf.xs
来自「Software Testing Automation Framework (S」· XS 代码 · 共 166 行
XS
166 行
#include "STAF.h"#include "EXTERN.h"#include "perl.h"#include "XSUB.h"MODULE = PLSTAF PACKAGE = PLSTAF PROTOTYPES: ENABLEvoidbasictest() CODE: PerlIO_stdoutf("ok");char *returntest() CODE: RETVAL= "ok"; OUTPUT: RETVALvoidargtest(input) int input CODE: PerlIO_stdoutf("ok %d\n", input);voidlistandargtest(input) int input PPCODE: XPUSHs(sv_2mortal(newSVpvn("ok", 3))); XPUSHs(sv_2mortal(newSVnv(input)));STAFHandle_t *newHandle () CODE: RETVAL=(STAFHandle_t *)malloc(sizeof (STAFHandle_t)); OUTPUT: RETVALvoidProcRegister (processName, handle) char *processName STAFHandle_t *handle CODE: { int i; if (kSTAFOk != (i = STAFRegister(processName, handle))) { Perl_croak(aTHX_ "Unexpected return code %d",i); XSRETURN_NO; } else XSRETURN_YES; }voidProcUnRegister (handle) STAFHandle_t *handle CODE: { int i; if (kSTAFOk != (i = STAFUnRegister(*handle))) { Perl_croak(aTHX_ "Unexpected return code %d",i); XSRETURN_NO; } else XSRETURN_YES; }voidProcSubmit (handle, syncoption, targetmachine, targetservice, requestSV) STAFHandle_t *handle char *targetmachine char *targetservice SV *requestSV STAFSyncOption_t syncoption PPCODE: { int i; char * stafres; unsigned int reslen; char *request = SvPV(requestSV, PL_na); if (DO_UTF8(requestSV)) { if (kSTAFOk != (i = STAFSubmit2UTF8(*handle, syncoption, targetmachine, targetservice, request, strlen(request), &stafres, &reslen))) { Perl_croak(aTHX_ "Unexpected return code %d",i); if (stafres != 0) STAFFree (*handle, stafres); XSRETURN_NO; } else { if (reslen > 0) { XPUSHs(sv_2mortal(newSVpvn(stafres, reslen))); STAFFree (*handle, stafres); } else XSRETURN_YES; } } else { if (kSTAFOk != (i = STAFSubmit2(*handle, syncoption, targetmachine, targetservice, request, strlen(request), &stafres, &reslen))) { Perl_croak(aTHX_ "Unexpected return code %d",i); if (stafres != 0) STAFFree (*handle, stafres); XSRETURN_NO; } else { if (reslen > 0) { XPUSHs(sv_2mortal(newSVpvn(stafres, reslen))); STAFFree (*handle, stafres); } else XSRETURN_YES; } } }voiddelHandle(handle) STAFHandle_t *handle CODE: if (handle != NULL) { free(handle); XSRETURN_YES; } else XSRETURN_NO;STAFSyncOption_tSyncReq () CODE: RETVAL = kSTAFReqSync; OUTPUT: RETVALSTAFSyncOption_tFireAndForgetReq () CODE: RETVAL = kSTAFReqFireAndForget; OUTPUT: RETVALSTAFSyncOption_tQueueReq () CODE: RETVAL = kSTAFReqQueue; OUTPUT: RETVALSTAFSyncOption_tRetainReq () CODE: RETVAL = kSTAFReqRetain; OUTPUT: RETVALSTAFSyncOption_tQueueRetainReq () CODE: RETVAL = kSTAFReqQueueRetain; OUTPUT: RETVAL
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?