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 + -
显示快捷键?