Actual source code: sread.c

  1: /*
  2:  
  3:     This is the equivalent of Matlab's fread() only on sockets instead of
  4:    binary files.
  5: */

  7: #include <stdio.h>
 8:  #include petscsys.h
 9:  #include src/sys/viewer/impls/socket/socket.h
 10: #include "mex.h"

 12: PetscErrorCode PetscBinaryRead(int,void *p,int,PetscDataType);

 14: #define PETSC_MEX_ERROR(a) {fprintf(stdout,"sread: %s \n",a); return ;}
 15: /*-----------------------------------------------------------------*/
 16: /*                                                                 */
 17: /*-----------------------------------------------------------------*/
 20: void mexFunction(int nlhs,mxArray *plhs[],int nrhs,const mxArray *prhs[])
 21: {
 22:   int  fd,cnt,dt;

 24:   /* check output parameters */
 25:   if (nlhs != 1) PETSC_MEX_ERROR("Receive requires one output argument.");

 27:   if (nrhs != 3) PETSC_MEX_ERROR("Receive requires three input arguments.");
 28:   fd  = *(int*)mxGetPr(prhs[0]);
 29:   cnt = *(int*)mxGetPr(prhs[1]);
 30:   dt  = *(PetscDataType*)mxGetPr(prhs[2]);

 32:   plhs[0]  = mxCreateDoubleMatrix(1,cnt,mxREAL);
 33:   PetscBinaryRead(fd,mxGetPr(plhs[0]),cnt,dt);if (ierr) PETSC_MEX_ERROR("Unable to receive %d items.",cnt);
 34:   return;
 35: }