home *** CD-ROM | disk | FTP | other *** search
/ Oracle Video Server 3.0.3.1 / OVS_3031_NT.iso / win32 / medianet / server / include / mnx.h < prev    next >
Encoding:
C/C++ Source or Header  |  1996-07-15  |  3.1 KB  |  93 lines

  1. /* Copyright (c) 1994 by Oracle Corporation.  All Rights Reserved.
  2.  *
  3.  * mnx.h - OMN Marshalling & Unmarshalling
  4.  *
  5.  * DESCRIPTION
  6.  * Related man pages are mnx(3).
  7.  *
  8.  * REVISIONS
  9.  * jolkin    05/06/94  Creation
  10.  */
  11.  
  12. #ifndef MNX_ORACLE
  13. #define MNX_ORACLE
  14.  
  15. #ifndef SYSX_ORACLE
  16. #include <sx.h>
  17. #endif
  18. #ifndef MN_ORACLE
  19. #include <mn.h>
  20. #endif
  21.  
  22. EXTC_START
  23.  
  24. /* marshalling types */
  25. typedef struct mnx          mnx;                   /* marshalling descriptor */
  26. typedef struct mndrp        mndrp;         /* data representation descriptor */
  27. typedef struct mnxArm       mnxArm;                  /* union arm descriptor */
  28. typedef struct mnxStream    mnxStream;           /* stream object descriptor */
  29.  
  30. /* generic marshalling prototype */
  31. typedef boolean (*mnxFunc)(mnx *, dvoid *);           /* generic marshalling */
  32.  
  33. /* marshalling direction */
  34. #define MNXDIR_ENCODE  ((ub4) 1)                          /* encode the data */
  35. #define MNXDIR_DECODE  ((ub4) 2)                          /* decode the data */
  36. #define MNXDIR_FREE    ((ub4) 3)            /* free the data (use mnxFree()) */
  37.  
  38. /* union arm */
  39. /* DISABLE check_naming */
  40. struct mnxArm
  41. {
  42.   sb4     tag;                                  /* tag to match for this arm */
  43.   mnxFunc xfunc;                                      /* marshalling routine */
  44. };
  45.  
  46. /* RPC stream object */
  47. struct mnxStream
  48. {
  49.   dvoid  *(*alloc)(mnxStream *, size_t);               /* allocation routine */
  50.   sb4     (*push)(mnxStream *, dvoid *);                     /* push routine */
  51.   boolean (*pull)(mnxStream *, dvoid **);                    /* pull routine */
  52.   void    (*close)(mnxStream *, sb4);                       /* close routine */
  53.  
  54.   size_t    elmsz;                                           /* element size */
  55.   mnxFunc   xfunc;                            /* element marshalling routine */
  56.   dvoid     *usrp;                                    /* stream object state */
  57.   dvoid     *priv;                                /* Media Net private state */
  58. };
  59. /* ENABLE check_naming */
  60.  
  61. /* marshalling descriptor manipulation */
  62. mnx    *mnxCreate(mndrp *, ub4, mnbv **, ub4 *, dvoid *);
  63. void    mnxDestroy(mnx *, boolean);
  64. ub4     mnxGetDir(mnx *);
  65. dvoid  *mnxGetUsrp(mnx *);
  66.  
  67. /* object free routine */
  68. void    mnxFree(mnxFunc, dvoid *);
  69.  
  70. /* data type marshalling routines */
  71. boolean mnxVoid(mnx *, dvoid *);
  72. boolean mnxB1(mnx *, ub1 *);
  73. boolean mnxB2(mnx *, ub2 *);
  74. boolean mnxB4(mnx *, ub4 *);
  75. boolean mnxSB1(mnx *, sb1 *);
  76. boolean mnxSB2(mnx *, sb2 *);
  77. boolean mnxSB4(mnx *, sb4 *);
  78. boolean mnxSysB8(mnx *, sysb8 *);
  79. boolean mnxChar(mnx *, char *);
  80. boolean mnxBoolean(mnx *, boolean *);
  81. #define mnxAddr(xstr, addr)  \
  82.   mnxOpaque((xstr), (ub1 *) ((addr)->bits), sizeof((addr)->bits))
  83. boolean mnxArray(mnx *, dvoid **, ub4 *, ub4, size_t, mnxFunc);
  84. boolean mnxOpaque(mnx *, ub1 *, size_t);
  85. boolean mnxString(mnx *, char **, size_t);
  86. boolean mnxDynStr(mnx *, char **);
  87. boolean mnxPointer(mnx *, dvoid **, size_t, mnxFunc);
  88. boolean mnxUnion(mnx *, sb4 *, dvoid *, mnxArm *, mnxFunc);
  89. boolean mnxOutStream(mnx *, mnxStream *);
  90.  
  91. EXTC_END
  92. #endif /* MNX_ORACLE */
  93.