home *** CD-ROM | disk | FTP | other *** search
/ Chip 1997 January / Chip_1997-01_cd.bin / ms95 / disk21 / dir01 / f010910.re_ / f010910.re
Text File  |  1996-04-02  |  25KB  |  755 lines

  1. /*----------------------------------------------------------------------+
  2. |                                    |
  3. |  Copyright (c) 1985-93;  Bentley Systems, Inc., All rights reserved.    |
  4. |                                    |
  5. | "MicroStation", "MDL", and "MicroCSL" are trademarks of Bentley    |
  6. |  Systems, Inc.                            |
  7. |                                    |
  8. |  Limited permission is hereby granted to reproduce and modify this    |
  9. |  copyrighted material provided that the resulting code is used only     |
  10. |  in conjunction with Bentley Systems products under the terms of the    |
  11. |  license agreement provided therein, and that this notice is retained    |
  12. |  in its entirety in any such reproduction or modification.        |
  13. |                                    |
  14. +----------------------------------------------------------------------*/
  15. /*----------------------------------------------------------------------+
  16. |                                    |
  17. |   database.h -- database definitions                    |
  18. |                                    |
  19. |   $Workfile:   database.h  $
  20. |   $Revision:   6.6  $
  21. |          $Date:   02 Nov 1995 01:14:44  $
  22. |                                    |
  23. +----------------------------------------------------------------------*/
  24. #ifndef __databaseH__
  25. #define __databaseH__
  26.  
  27. #ifndef __msdefsH__
  28. #include "msdefs.h"
  29. #endif
  30.  
  31. #ifndef __dbdefsH__
  32. #include "dbdefs.h"
  33. #endif
  34.  
  35.  
  36. /*----------------------------------------------------------------------+
  37. |                                    |
  38. |   Defines                                |
  39. |                                    |
  40. +----------------------------------------------------------------------*/
  41. #define DB_PACKET_SIZE        2048    /* the packet size for the DB IPC */
  42. #define DB_MORE_PACKETS           1
  43. #define DB_LAST_PACKET           2
  44. #define DB_DATABASE_NAME_SIZE     64    /* size of a database name */
  45. #define DB_TABLE_NAME_SIZE        MAX_TABLE_LENGTH
  46.                     /* size of a database table name */
  47. #define DB_COLUMN_NAME_SIZE       MAX_COLUMN_LENGTH
  48.                     /* size of a database column name */
  49. #define DB_FORM_EXT          10
  50. #define VAR_STRING           0
  51. #define VAR_NAME_STRING           1
  52. #define CHARACTER_DATA             0    /* DEFAULT, return data in character form */
  53. #define RAW_DATA                   1    /* do not coerce to character, return raw data */
  54. #define MAX_OPEN_CURSORS      10
  55. #define MAX_ERROR_LENGTH         512    /* max length for error return strings */
  56. #define SQL_LOOKUP            -100    /* SQL error; look in errorInformation */
  57. #define MAX_ENV_VAR_LENGTH       512    /* max length for value in an EnvVarRequest */
  58. #define DB_COPY_TABLE_LENGTH    2048    /* length of the sql statement in a copy table */
  59. #define DB_MAX_TYPE_LENGTH       128    /* max size for sql stmt in extract stmt type */
  60.  
  61. /* To insure that space is not always dynamically allocated (calloc) buffers in */
  62. /*  the IPC and SQL modules are allocated of the stack with the size below */
  63. #define DB_DEFAULT_BUFFER_SIZE    2048
  64.  
  65. /* if default was not enough and total additional space is not known, the below */
  66. /*  amount of additonal space will be realloced */
  67. #define DB_BUFFER_REALLOC_SIZE  2048
  68.  
  69. /* sql buffer realloc size, only for the dynamic sql buffer reallocation */
  70. #define DB_SQLBUF_REALLOC_SIZE  256
  71.  
  72.  
  73. /*----------------------------------------------------------------------+
  74. |                                    |
  75. |   Miscellaneous                            |
  76. |                                    |
  77. +----------------------------------------------------------------------*/
  78. /* database server types */
  79. #define    XBASE_SERVER        1
  80. #define ORACLE_SERVER       2
  81. #define ORACLE_STD_SERVER   ORACLE_SERVER
  82. #define ORACLE_DOS_SERVER   3
  83. #define ORACLE_WIN_SERVER   4
  84. #define INFORMIX_SERVER     5
  85. #define RIS_SERVER          6
  86. #define ODBC_SERVER         7
  87. #define WINCON_SERVER       ORACLE_WIN_SERVER
  88. #define UNKNOWN_SERVER      8
  89.  
  90. /* ODBC database type defines */
  91. #define ODBC_UNKNOWN        1
  92. #define ODBC_FLATFILE        2
  93. #define ODBC_ORACLE        3
  94. #define ODBC_INFORMIX       4
  95. #define ODBC_ACCESS        5
  96. #define ODBC_SQLSERVER      6
  97. #define ODBC_SYBASE        7
  98.  
  99. /* flat file database definitions */    
  100. #define ODBC_BF_DBASE    (0x00000001 << 0)
  101. #define ODBC_BF_BTRIEVE (0x00000001 << 1)
  102. #define ODBC_BF_PARADOX (0x00000001 << 2)
  103. #define ODBC_BF_EXCEL   (0x00000001 << 3)
  104. #define ODBC_BF_TEXT    (0x00000001 << 4)
  105.  
  106. /* return values for preprocess step */
  107. #define NOT_HANDLED    1
  108.  
  109. #define NOT_ORACLE_MSDOS (!(serverType == ORACLE_DOS_SERVER))
  110. #define ORACLE_DOS (serverType == ORACLE_DOS_SERVER)
  111. #define DB_USES_WINCON (serverType == WINCON_SERVER)
  112.  
  113. typedef struct allocdstmt
  114.     {
  115.     char   *stmt;
  116.     int     stmtLength;
  117.     int     callocdLength;
  118.     char    buffer[DB_DEFAULT_BUFFER_SIZE];
  119.     } AllocdStmt;
  120.  
  121. /*----------------------------------------------------------------------+
  122. |                                    |
  123. |   External server debug defines                     |
  124. |                                    |
  125. +----------------------------------------------------------------------*/
  126. #define DEBUG_ON                (0x0001 << 0)
  127. #define EXT_DEBUG_ON            (0x0001 << 1)
  128. #define IPC_DEBUG_ON            (0x0001 << 2)
  129.  
  130. /*----------------------------------------------------------------------+
  131. |                                    |
  132. |   IPC    service requests.                             |
  133. |                                    |
  134. +----------------------------------------------------------------------*/
  135. #define IPC_RegisterHandler    1
  136.  
  137. /*----------------------------------------------------------------------+
  138. |                                    |
  139. |   Message fields.                            |
  140. |                                    |
  141. +----------------------------------------------------------------------*/
  142. #define DBFORM_DAS        1
  143. #define DBFORM_EDITAE           2
  144. #define DBFORM_REVIEW           3
  145. #define DBFORM_FORMCMD          4
  146.  
  147. /*----------------------------------------------------------------------+
  148. |                                    |
  149. |   Message fields.                            |
  150. |                                    |
  151. +----------------------------------------------------------------------*/
  152. #define FIELD_Status        1
  153. #define FIELD_Error        2
  154. #define FIELD_Message        3
  155. #define FIELD_DebugWindow    4
  156.  
  157. /*----------------------------------------------------------------------+
  158. |                                    |
  159. |   SQL statement types.                        |
  160. |                                    |
  161. +----------------------------------------------------------------------*/
  162. #define DB_MALFORMED_STMT     1
  163. #define DB_UNKNOWN_STMT          2
  164. #define DB_SELECT_STMT          3
  165. #define DB_UPDATE_STMT          4
  166. #define DB_CONNECT_STMT          5
  167. #define DB_DISCONNECT_STMT    6
  168. #define DB_SQLFORMS_STMT      7
  169. #define DB_RELOAD_STMT          8
  170. #define DB_INSERT_STMT          9
  171. #define DB_COMMIT_STMT          10
  172. #define DB_ROLLBACK_STMT      11
  173. #define DB_HANDLES_STMT          12
  174. #define DB_DELETE_STMT          13
  175.  
  176. /*----------------------------------------------------------------------+
  177. |                                    |
  178. |   Cursor IDs                                |
  179. |                                    |
  180. +----------------------------------------------------------------------*/
  181. #define DB_CURSOR_ID_0            0
  182. #define DB_CURSOR_ID_1            1
  183. #define DB_CURSOR_ID_2            2
  184. #define DB_CURSOR_ID_3            3
  185. #define DB_CURSOR_ID_4            4
  186. #define DB_CURSOR_ID_5            5
  187. #define DB_CURSOR_ID_6            6
  188. #define DB_CURSOR_ID_7            7
  189. #define DB_CURSOR_ID_8          8
  190. #define DB_CURSOR_ID_9            9
  191. #define DB_DESRIBE_SQLDA       10   /* the sqlda used in a describe */
  192.  
  193. /*----------------------------------------------------------------------+
  194. |                                    |
  195. |   Message types.                            |
  196. |                                    |
  197. +----------------------------------------------------------------------*/
  198. #define MTYPE_ServiceRequest        1
  199. #define MTYPE_ServiceRequestMore    2   /* one of many service requests */
  200. #define MTYPE_ServiceRequestLast    3   /* last service request */
  201. #define MTYPE_ServiceAcknowledge          4
  202. #define MTYPE_ServiceAcknowledgeMore      5   /* one of many service acks with data */
  203. #define MTYPE_ServiceAcknowledgeLast    6   /* last service ack with data */
  204. #define MTYPE_ServiceAcknowledgeNoData    7   /* a service ack without data */
  205. #define MTYPE_CallBackRequest        8
  206. #define MTYPE_CallBackAcknowledge    9
  207.  
  208. /*----------------------------------------------------------------------+
  209. |                                    |
  210. |   Database service requests.                             |
  211. |                                    |
  212. +----------------------------------------------------------------------*/
  213. #define DS_DatabaseProfile         1
  214. #define DS_OpenDatabase             2
  215. #define DS_CloseDatabase         3
  216. #define DS_Terminate             4
  217. #define DS_DescribeDatabase         5
  218. #define DS_DescribeTable         6
  219. #define DS_DescribeColumn         7
  220. #define DS_CommitTransaction         8
  221. #define DS_RollbackTransaction         9
  222. #define DS_ProcessStatement         10
  223. #define DS_OpenCursor             11
  224. #define DS_FetchRow             12
  225. #define DS_CloseCursor             13
  226. #define DS_ProcessForm             14
  227. #define DS_GetErrorInformation         15
  228. #define DS_AdditionalRequest         16
  229. #define DS_DebugMode             17
  230. #define DS_CopyTable                 18
  231. #define DS_LockTable             19
  232. #define DS_SetAE             20 /* server to loader only */
  233. #define DS_CreateDABuffer         21 /* Note: NEW Msg, not in Betas */
  234. #define DS_SetMsforms             22 /* server to loader only */
  235.  
  236. /*----------------------------------------------------------------------+
  237. |                                    |
  238. |   CallBack requests.                                       |
  239. |                                    |
  240. +----------------------------------------------------------------------*/
  241. #define CALLBACK_DebugMessage         1
  242. #define CALLBACK_EnvVarRequest         2
  243. #define CALLBACK_GetXbaseName         3
  244. #define CALLBACK_SendPID         4
  245. #define CALLBACK_MSWindowPriority    5
  246. #define CALLBACK_FindDBFile         6
  247.  
  248. /*----------------------------------------------------------------------+
  249. |                                    |
  250. |   Additional request (AR) defines.  Used with DS_AdditionalRequest.    |
  251. |                                    |
  252. +----------------------------------------------------------------------*/
  253. #define AR_MaxMSLink            1
  254. #define AR_CopyRowToAE            2
  255. #define AR_CopyRowToReport        3
  256. #define AR_SimpleSelect            4
  257. #define AR_OpenCursorXbase        5
  258. #define AR_FetchRowXbase        6
  259. #define AR_CloseCursorXbase        7
  260.  
  261. /*----------------------------------------------------------------------+
  262. |                                    |
  263. |   Additional request (AR) structure typedefs.                |
  264. |                                    |
  265. +----------------------------------------------------------------------*/
  266. typedef struct maxmslink
  267.     {
  268.     long     requestType;            /* The AR request type */
  269.     ULong     maxMSLink;            /* the max mslink in the table */
  270.     char     tableName[DB_TABLE_NAME_SIZE]; /* table name to get max mslink from */
  271.     } MaxMSLink;
  272.  
  273. /* for Xbase performance improvements */
  274. typedef struct copyrowtoaerequest
  275.     {
  276.     long        requestType;
  277.     ULong        *mslinkP;
  278.     char        *whereValue;
  279.     char        *whereFieldName;
  280.     char        *sourceTableName;
  281.     char        *destTableName;
  282.     char        *query;
  283.     boolean     zeroMslink;
  284.     } CopyRowToAERequest;
  285.  
  286. /* for Xbase performance improvements */
  287. typedef struct copyrowtoreportrequest
  288.     {
  289.     long        requestType;
  290.     long        mslink;
  291.     char        *sourceTableName;
  292.     char        *destTableName;
  293.     } CopyRowToReportRequest;
  294.  
  295. /* for Xbase performance improvements */
  296. typedef struct simpleselectar
  297.     {
  298.     long        requestType;
  299.     long        resultSize;
  300.     long        numValues;
  301.     boolean     breakResult;
  302.     char        ***brokenResult;
  303.     char    *result;
  304.     MS_sqlda    *sqlda;
  305.     char    *stmt;
  306.     boolean     isMalloced;
  307.     } SimpleSelectAR;
  308.  
  309. /* for Xbase performance improvements */
  310. typedef struct opencursorxbasear
  311.     {
  312.     long        requestType;
  313.     char        *stmt;
  314.     boolean        getColInfo;
  315.     boolean     isMalloced;
  316.     } OpenCursorXbaseAR;
  317.  
  318. /* for Xbase performance improvements */
  319. typedef struct fetchrowxbasear
  320.     {
  321.     long        requestType;
  322.     MS_sqlda    *sqldaP;
  323.     } FetchRowXbaseAR;
  324.  
  325. /* for Xbase performance improvements */
  326. typedef struct closecursorxbasear
  327.     {
  328.     long        requestType;
  329.     } CloseCursorXbaseAR;
  330.  
  331. /*----------------------------------------------------------------------+
  332. |                                    |
  333. |   IPC typedefs.                                       |
  334. |                                    |
  335. +----------------------------------------------------------------------*/
  336. typedef    struct    databaseservicehandler
  337.     {
  338.     char     taskID[64];        /* name of task */
  339.     void    *mdlFileDescr;        /* mdl application handing requests */
  340.     ULong     functionOffset;    /* entry point in this application */
  341.     } DatabaseServiceHandler;
  342.  
  343. typedef struct ipcservice
  344.     {
  345.     ULong            type;        /* type of request */
  346.     DatabaseServiceHandler    handler;    /* service handler */
  347.     } IPCService;
  348.  
  349. typedef struct servicename
  350.     {
  351.     char    *name;                /* name of database service */
  352.     ULong    type;                /* service code */
  353.     } ServiceName;
  354.  
  355. /*----------------------------------------------------------------------+
  356. |                                    |
  357. |   Service name table.                                 |
  358. |                                    |
  359. +----------------------------------------------------------------------*/
  360. #if defined (GLOBAL_DEFINITIONS)
  361. ServiceName serviceNameTable[]=
  362.     {
  363.     {"DS_DatabaseProfile",      DS_DatabaseProfile},
  364.     {"DS_OpenDatabase",        DS_OpenDatabase},
  365.     {"DS_CloseDatabase",    DS_CloseDatabase},
  366.     {"DS_Terminate",        DS_Terminate},
  367.     {"DS_DescribeDatabase",    DS_DescribeDatabase},
  368.     {"DS_DescribeTable",    DS_DescribeTable},
  369.     {"DS_DescribeColumn",    DS_DescribeColumn},
  370.     {"DS_CommitTransaction",    DS_CommitTransaction},
  371.     {"DS_RollbackTransaction",    DS_RollbackTransaction},
  372.     {"DS_ProcessStatement",    DS_ProcessStatement},
  373.     {"DS_OpenCursor",        DS_OpenCursor},
  374.     {"DS_FetchRow",        DS_FetchRow},
  375.     {"DS_CloseCursor",        DS_CloseCursor},
  376.     {"DS_ProcessForm",            DS_ProcessForm},
  377.     {"DS_GetErrorInformation",    DS_GetErrorInformation},
  378.     {"DS_AdditionalRequest",    DS_AdditionalRequest},
  379.     {"DS_DebugMode",            DS_DebugMode},
  380.     {"DS_CopyTable",            DS_CopyTable},
  381.     {"DS_LockTable",            DS_LockTable},
  382.     {"DS_SetAE",        DS_SetAE},
  383.     {"DS_CreateDABuffer",    DS_CreateDABuffer},
  384.     {"DS_SetMsforms",        DS_SetMsforms}
  385.     };
  386. #endif
  387.  
  388. /*----------------------------------------------------------------------+
  389. |                                    |
  390. |   Service requests.                                       |
  391. |                                    |
  392. +----------------------------------------------------------------------*/
  393. typedef struct brandprofile
  394.     {
  395.     char    brandName[32];        /* name of brand (Oracle, dBASE, ...) */
  396.     char        serverName[32];     /* name of the database server executable */
  397.     char    version[32];        /* version of database */
  398.     long       odbcDBType;         /* ODBC underlying database type */
  399.     } BrandProfile;
  400.  
  401. typedef struct accessprofile
  402.     {
  403.     long        hostnameRequired;    /* host name required for login */
  404.     long        usernameRequired;    /* user name required for login */
  405.     long        passwordRequired;    /* password required for login */
  406.     long        optionString;    /* option string supported */
  407.     } AccessProfile;
  408.  
  409. typedef    struct datatype
  410.     {
  411.     long        supported;        /* data type supported */
  412.     char        name[32];        /* vendor name */
  413.     } DataType;
  414.  
  415. typedef struct datatypeprofile
  416.     {
  417.     DataType        charType;    /* CHAR (n); fixed length */
  418.     DataType        varcharType;    /* VARCHAR (n); variable length */
  419.     DataType        floatType;    /* REAL; single precision*/
  420.     DataType        doubleType;    /* DOUBLE; double precision */
  421.     DataType        intType;    /* INTEGER; 32 bit integer */
  422.     DataType        shortType;    /* SMALLINT; 16 bit integer */
  423.     DataType        numericType;    /* NUMERIC (p, s); fixed point */
  424.     DataType        decimalType;    /* DECIMAL (p, s); fixed point */
  425.     DataType        dateType;    /* DATE */
  426.     DataType        timeType;    /* TIME */
  427.     DataType        datetimeType;    /* DATETIME; absolute (date + time) */
  428.     DataType        intervalType;    /* INTERVAL; delta (date + time) */
  429.     DataType        rawType;    /* RAW (n); binary data; */
  430.     DataType        booleanType;    /* BOOLEAN; logical */
  431.     DataType        nationalType;    /* NCHAR; national character string */
  432.     DataType        rowid;        /* ROWID; pseudo column primary key */
  433.     } DataTypeProfile;
  434.  
  435. typedef struct functionprofile
  436.     {
  437.     long        max;        /* min () function supported */
  438.     long        min;        /* max () function supported */
  439.     long        count;        /* count () function supported */
  440.     long        sum;        /* sum () function supported */
  441.     long        avg;        /* avg () function supported */
  442.     } FunctionProfile;
  443.  
  444. typedef struct transactionprofile
  445.     {
  446.     long        supported;        /* transactions supported */
  447.     } TransactionProfile;
  448.  
  449. typedef struct formsprofile
  450.     {
  451.     long        supported;            /* screen forms supported */
  452.     long        fileOutput;            /* can generate text file output */
  453.     char        fileExt[DB_FORM_EXT];    /* file extension for forms, .frm .fmt */
  454.     } FormsProfile;
  455.  
  456. typedef struct graphicsprofile
  457.     {
  458.     UShort        primarySignature;     /* priamry user data signature */
  459.     UShort        secondarySignature;     /* secondary user data signature */
  460.     long        saveAccessString;     /* saved in design file */
  461.     long        applicationLevel;     /* level for access string */
  462.     } GraphicsProfile;
  463.  
  464. typedef struct sqlprofile
  465.     {
  466.     long        ANSICompatible;
  467.     } SQLProfile;
  468.  
  469. typedef struct databaseprofile
  470.     {
  471.     BrandProfile        brand;        /* brand of RDBMS */
  472.     AccessProfile        accessProfile;  /* access method */
  473.     DataTypeProfile        types;        /* supported data types */
  474.     SQLProfile            sql;        /* SQL support and extensions */
  475.     FunctionProfile        functions;        /* aggregate function support */
  476.     TransactionProfile        transactions;   /* transaction support */
  477.     FormsProfile        forms;        /* screen forms support */
  478.     GraphicsProfile        graphics;        /* design file parameters */
  479.     } DatabaseProfile;
  480.  
  481. typedef struct opendatabase
  482.     {
  483.     char    text[512];            /* the text of the open request */
  484.     } OpenDatabase;
  485.  
  486. typedef struct describedatabase
  487.     {
  488.     long         descriptionLength;
  489.     char        *description;
  490.     } DescribeDatabase;
  491.  
  492. typedef struct describetable
  493.     {
  494.     long         descriptionLength;
  495.     char        *description;
  496.     char     tableName[DB_TABLE_NAME_SIZE];
  497.     } DescribeTable;
  498.  
  499. typedef struct describecolumn
  500.     {
  501.     char     tableName[DB_TABLE_NAME_SIZE];
  502.     ColumnDescr     columnDescr;
  503.     } DescribeColumn;
  504.  
  505. typedef struct processstatement
  506.     {
  507.     long         statementLength;
  508.     char    *statement;
  509.     } ProcessStatement;
  510.  
  511. typedef struct opencursor
  512.     {
  513.     long         descriptionLength;
  514.     char        *description;
  515.     long     cursorID;
  516.     } OpenCursor;
  517.  
  518. typedef struct fetchrow
  519.     {
  520.     long         rowLength;            /* <=  length of data */
  521.     char        *row;                /* <=  the row that was fetched */
  522.     long     cursorID;            /*  => the ID of the cursor to fetch from */
  523.     short        returnDataType;        /*  => type of data to return, char or raw */
  524.     } FetchRow;
  525.  
  526. typedef struct closecursor
  527.     {
  528.     long     cursorID;            /*  => the ID of the cursor to close */
  529.     } CloseCursor;
  530.  
  531. typedef struct processform
  532.     {
  533.     char         arguments[256];
  534.     char         formName[256];
  535.     char         tableName[64];
  536.     char     dosWindow[8];
  537.     long     textMode;
  538.     long         noStdOut;
  539.  
  540.     } ProcessForm;
  541.  
  542. typedef struct errorinformation
  543.     {
  544.     long     code;                /* <=> SQL error code */
  545.     char     message[MAX_ERROR_LENGTH]; /* <=  text of error message */
  546.     } ErrorInformation;
  547.  
  548. typedef struct additionalrequest
  549.     {
  550.     long         requestLength;            /* <=> Length of text */
  551.     char    *request;            /* <=> The text of developer supplied request */
  552.     } AdditionalRequest;
  553.  
  554. typedef struct debugmode
  555.     {
  556.     long         mode;                /*  => The new debug mode */
  557.     } DebugMode;
  558.  
  559. typedef struct copytable
  560.     {
  561.     char         fromTableName[DB_TABLE_NAME_SIZE];    /* The table name to copy from */
  562.     char         toTableName[DB_TABLE_NAME_SIZE];    /* The table name to copy to */
  563.     } CopyTable;
  564.  
  565. typedef struct locktable
  566.     {
  567.     char         tableName[DB_TABLE_NAME_SIZE];        /* The table name to lock */
  568.     } LockTable;
  569.  
  570. /* The following request is only used for communication between
  571.    server.ma and dbload.ma - it never reachs the external server
  572. */
  573. typedef struct setae
  574.     {
  575.     char    aeTableName[DB_TABLE_NAME_SIZE];
  576.     } SetAE;
  577.  
  578. /* The following request is new for the Version 5 release of the toolkit 
  579.    (3/94).  It was not present in the Beta versions of the toolkit.
  580.    Database developers must handle this message if the server needs to work
  581.    with Displayable Attributes in Forms mode
  582. */
  583. typedef struct createdabuffer
  584.     {
  585.     long    numLines;                /* <= # lines to read from frm file */
  586.     char    dasFormFile[MAXFILELENGTH]; /*  => the form name */
  587.                     /* <=  the qualified path name to   */
  588.                     /*     the DAS form output file */
  589.     } CreateDABuffer;
  590.  
  591. /* The following request is only used for communication between
  592.    server.ma and dbload.ma - it never reachs the external server
  593. */
  594. typedef struct setmsforms
  595.     {
  596.     char    msformsTableName[DB_TABLE_NAME_SIZE];
  597.     } SetMsforms;
  598.  
  599. /*----------------------------------------------------------------------+
  600. |                                    |
  601. |   Service message.                                       |
  602. |                                    |
  603. +----------------------------------------------------------------------*/
  604. typedef struct serviceheader
  605.     {
  606.     long    status;            /* <=  return status */
  607.     ULong    type;            /*  => type of request */
  608.     ULong    length;            /* <=> length of message */
  609.     long    isCallocd;        /* <=  whether memory in structure was calloc'd */
  610.     long        callocdLength;      /* <=  if isCallocd, this is the new size */
  611.     long         databaseID;        /*  =>  id of target database (FUTURE EXPANSION) */
  612.     } ServiceHeader;
  613.  
  614. typedef struct databaseservice
  615.     {
  616.     ServiceHeader   header;            /* <=> message header */
  617.     union
  618.     {
  619.     DatabaseProfile        databaseProfile;
  620.     OpenDatabase        openDatabase;
  621.     DescribeDatabase    describeDatabase;
  622.     DescribeTable       describeTable;
  623.     DescribeColumn      describeColumn;
  624.     ProcessStatement    processStatement;
  625.     OpenCursor          openCursor;
  626.     FetchRow            fetchRow;
  627.     CloseCursor         closeCursor;
  628.     ProcessForm         processForm;
  629.     ErrorInformation    errorInformation;
  630.     AdditionalRequest   additionalRequest;
  631.     DebugMode        debugMode;
  632.     CopyTable        copyTable;
  633.     LockTable        lockTable;
  634.     SetAE            setAE;
  635.     CreateDABuffer      createDABuffer;
  636.     SetMsforms        setMsforms;
  637.     } u;
  638.     } DatabaseService;
  639.  
  640. typedef struct requestwithptr
  641.     {
  642.     ServiceHeader   header;
  643.     long        length;
  644.     char       *data;
  645.     long        cursorID;
  646.     } RequestWithPtr;
  647.  
  648. typedef struct bufferwithoutptr
  649.     {
  650.     long        bufferLength;
  651.     ServiceHeader   header;
  652.     long        length;
  653.     char        data[1];
  654.     } BufferWithoutPtr;
  655.  
  656. typedef struct bufferwithcursorid
  657.     {
  658.     long        bufferLength;
  659.     ServiceHeader   header;
  660.     long        length;
  661.     long        cursorID;
  662.     char        data[1];
  663.     } BufferWithCursorID;
  664.  
  665. typedef struct bufferwithlength
  666.     {
  667.     long        bufferLength;
  668.     char        data[1];
  669.     } BufferWithLength;
  670.  
  671. /*----------------------------------------------------------------------+
  672. |                                    |
  673. |   CallBack requests.                                       |
  674. |                                    |
  675. +----------------------------------------------------------------------*/
  676. typedef struct statusmessage
  677.     {
  678.     long        field;            /* <= field for message output */
  679.     char        string[512];        /* <= user message */
  680.     } StatusMessage;
  681.  
  682. typedef struct envvarrequest
  683.     {
  684.     char        variable[64];        /* <=  environment variable */
  685.     char        value[MAX_ENV_VAR_LENGTH];  /*  => value of environment variable */
  686.     } EnvVarRequest;
  687.  
  688. typedef struct xbasenamerequest
  689.     {
  690.     char        name[MAXFILELENGTH];    /* <=>  databaseName */
  691.     } XbaseNameRequest;
  692.  
  693. typedef struct externalpid
  694.     {
  695.     ProcessID        pid;            /* <= process ID of external Server */
  696.     } ExternalPID;
  697.  
  698. typedef struct mswindowpriority
  699.     {
  700.     boolean        activePriority;        /* <= MS window priority High T/F */
  701.     } MSWindowPriority;
  702.  
  703. typedef struct finddbfile
  704.     {
  705.     char    fileName[MAXFILELENGTH];        /* <=  file to find   */
  706.                         /*  => path to file   */
  707.     char    fileExt[10];            /*  => file Extension */
  708.     } FindDBFile;
  709.  
  710. /*----------------------------------------------------------------------+
  711. |                                    |
  712. |   CallBack message.                                       |
  713. |                                    |
  714. +----------------------------------------------------------------------*/
  715. typedef struct callbackheader
  716.     {
  717.     long    status;                /* <=> return status */
  718.     ULong    type;                /* <=> type of request */
  719.     ULong    length;                /* <=> length of message */
  720.     } CallBackHeader;
  721.  
  722. typedef struct servercallback
  723.     {
  724.     CallBackHeader   header;            /* <=> message header */
  725.     union
  726.     {
  727.     StatusMessage        message;        /* <=> */
  728.         EnvVarRequest        envVarRequest;    /* <=> */
  729.     XbaseNameRequest    xbaseNameRequest;    /* <=> */
  730.     ExternalPID        externalPID;    /* <=  no ack */
  731.     MSWindowPriority    msWindowPriority;    /* <=> */
  732.     FindDBFile          findDBFile;         /* <=> */
  733.     } u;
  734.     } ServerCallBack;
  735.  
  736. /*----------------------------------------------------------------------+
  737. |                                    |
  738. |   Descriptor message (mdl -> Server)                     |
  739. |                                    |
  740. +----------------------------------------------------------------------*/
  741. typedef struct
  742.     {
  743.     short   columns;
  744.     short   rows;
  745.     short   items;
  746.     } ServerDescrMessageHdr;
  747.  
  748. typedef struct
  749.     {
  750.     ServerDescrMessageHdr   hdr;
  751.     char            data[1];
  752.     } ServerDescriptorMessage;
  753.  
  754. #endif
  755.