db_server_int.h
上传用户:romrleung
上传日期:2022-05-23
资源大小:18897k
文件大小:4k
源码类别:

MySQL数据库

开发平台:

Visual C++

  1. /*-
  2.  * See the file LICENSE for redistribution information.
  3.  *
  4.  * Copyright (c) 2000-2002
  5.  * Sleepycat Software.  All rights reserved.
  6.  *
  7.  * $Id: db_server_int.h,v 1.23 2002/02/12 15:01:24 sue Exp $
  8.  */
  9. #ifndef _DB_SERVER_INT_H_
  10. #define _DB_SERVER_INT_H_
  11. #define DB_SERVER_TIMEOUT 300 /* 5 minutes */
  12. #define DB_SERVER_MAXTIMEOUT 1200 /* 20 minutes */
  13. #define DB_SERVER_IDLETIMEOUT 86400 /* 1 day */
  14. /*
  15.  * Ignore/mask off the following env->open flags:
  16.  * Most are illegal for a client to specify as they would control
  17.  * server resource usage.  We will just ignore them.
  18.  * DB_LOCKDOWN
  19.  * DB_PRIVATE
  20.  * DB_RECOVER
  21.  * DB_RECOVER_FATAL
  22.  * DB_SYSTEM_MEM
  23.  * DB_USE_ENVIRON, DB_USE_ENVIRON_ROOT - handled on client
  24.  */
  25. #define DB_SERVER_FLAGMASK (
  26. DB_LOCKDOWN | DB_PRIVATE | DB_RECOVER | DB_RECOVER_FATAL |
  27. DB_SYSTEM_MEM | DB_USE_ENVIRON | DB_USE_ENVIRON_ROOT)
  28. #define CT_CURSOR 0x001 /* Cursor */
  29. #define CT_DB 0x002 /* Database */
  30. #define CT_ENV 0x004 /* Env */
  31. #define CT_TXN 0x008 /* Txn */
  32. #define CT_JOIN 0x10000000 /* Join cursor component */
  33. #define CT_JOINCUR 0x20000000 /* Join cursor */
  34. typedef struct home_entry home_entry;
  35. struct home_entry {
  36. LIST_ENTRY(home_entry) entries;
  37. char *home;
  38. char *dir;
  39. char *name;
  40. char *passwd;
  41. };
  42. /*
  43.  * Data needed for sharing handles.
  44.  * To share an env handle, on the open call, they must have matching
  45.  * env flags, and matching set_flags.
  46.  *
  47.  * To share a db handle on the open call, the db, subdb and flags must
  48.  * all be the same.
  49.  */
  50. #define DB_SERVER_ENVFLAGS  (
  51. DB_INIT_CDB | DB_INIT_LOCK | DB_INIT_LOG | DB_INIT_MPOOL |
  52. DB_INIT_TXN | DB_JOINENV)
  53. #define DB_SERVER_DBFLAGS  (DB_DIRTY_READ | DB_NOMMAP | DB_RDONLY)
  54. #define DB_SERVER_DBNOSHARE  (DB_EXCL | DB_TRUNCATE)
  55. typedef struct ct_envdata ct_envdata;
  56. typedef struct ct_dbdata ct_dbdata;
  57. struct ct_envdata {
  58. u_int32_t envflags;
  59. u_int32_t onflags;
  60. u_int32_t offflags;
  61. home_entry *home;
  62. };
  63. struct ct_dbdata {
  64. u_int32_t dbflags;
  65. u_int32_t setflags;
  66. char *db;
  67. char *subdb;
  68. DBTYPE type;
  69. };
  70. /*
  71.  * We maintain an activity timestamp for each handle.  However, we
  72.  * set it to point, possibly to the ct_active field of its own handle
  73.  * or it may point to the ct_active field of a parent.  In the case
  74.  * of nested transactions and any cursors within transactions it must
  75.  * point to the ct_active field of the ultimate parent of the transaction
  76.  * no matter how deeply it is nested.
  77.  */
  78. typedef struct ct_entry ct_entry;
  79. struct ct_entry {
  80. LIST_ENTRY(ct_entry) entries; /* List of entries */
  81. union {
  82. #ifdef __cplusplus
  83. DbEnv *envp; /* H_ENV */
  84. DbTxn *txnp; /* H_TXN */
  85. Db *dbp; /* H_DB */
  86. Dbc *dbc; /* H_CURSOR */
  87. #else
  88. DB_ENV *envp; /* H_ENV */
  89. DB_TXN *txnp; /* H_TXN */
  90. DB *dbp; /* H_DB */
  91. DBC *dbc; /* H_CURSOR */
  92. #endif
  93. void *anyp;
  94. } handle_u;
  95. union { /* Private data per type */
  96. ct_envdata envdp; /* Env info */
  97. ct_dbdata dbdp; /* Db info */
  98. } private_u;
  99. long ct_id; /* Client ID */
  100. long *ct_activep; /* Activity timestamp pointer*/
  101. long *ct_origp; /* Original timestamp pointer*/
  102. long ct_active; /* Activity timestamp */
  103. long ct_timeout; /* Resource timeout */
  104. long ct_idle; /* Idle timeout */
  105. u_int32_t ct_refcount; /* Ref count for sharing */
  106. u_int32_t ct_type; /* This entry's type */
  107. struct ct_entry *ct_parent; /* Its parent */
  108. struct ct_entry *ct_envparent; /* Its environment */
  109. };
  110. #define ct_envp handle_u.envp
  111. #define ct_txnp handle_u.txnp
  112. #define ct_dbp handle_u.dbp
  113. #define ct_dbc handle_u.dbc
  114. #define ct_anyp handle_u.anyp
  115. #define ct_envdp private_u.envdp
  116. #define ct_dbdp private_u.dbdp
  117. extern int __dbsrv_verbose;
  118. /*
  119.  * Get ctp and activate it.
  120.  * Assumes local variable 'replyp'.
  121.  * NOTE: May 'return' from macro.
  122.  */
  123. #define ACTIVATE_CTP(ctp, id, type) {
  124. (ctp) = get_tableent(id);
  125. if ((ctp) == NULL) {
  126. replyp->status = DB_NOSERVER_ID;
  127. return;
  128. }
  129. DB_ASSERT((ctp)->ct_type & (type));
  130. __dbsrv_active(ctp);
  131. }
  132. #endif /* !_DB_SERVER_INT_H_ */