db_server_int.h
上传用户:tsgydb
上传日期:2007-04-14
资源大小:10674k
文件大小:2k
源码类别:

MySQL数据库

开发平台:

Visual C++

  1. /*-
  2.  * See the file LICENSE for redistribution information.
  3.  *
  4.  * Copyright (c) 2000
  5.  * Sleepycat Software.  All rights reserved.
  6.  *
  7.  * $Id: db_server_int.h,v 1.13 2001/01/11 18:19:52 bostic 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. #define CT_CURSOR 0x001 /* Cursor */
  15. #define CT_DB 0x002 /* Database */
  16. #define CT_ENV 0x004 /* Env */
  17. #define CT_TXN 0x008 /* Txn */
  18. #define CT_JOIN 0x10000000 /* Join cursor component */
  19. #define CT_JOINCUR 0x20000000 /* Join cursor */
  20. typedef struct home_entry home_entry;
  21. struct home_entry {
  22. LIST_ENTRY(home_entry) entries;
  23. char *home;
  24. char *dir;
  25. char *name;
  26. };
  27. /*
  28.  * We maintain an activity timestamp for each handle.  However, we
  29.  * set it to point, possibly to the ct_active field of its own handle
  30.  * or it may point to the ct_active field of a parent.  In the case
  31.  * of nested transactions and any cursors within transactions it must
  32.  * point to the ct_active field of the ultimate parent of the transaction
  33.  * no matter how deeply it is nested.
  34.  */
  35. typedef struct ct_entry ct_entry;
  36. struct ct_entry {
  37. LIST_ENTRY(ct_entry) entries; /* List of entries */
  38. union {
  39. DB_ENV *envp; /* H_ENV */
  40. DB_TXN *txnp; /* H_TXN */
  41. DB *dbp; /* H_DB */
  42. DBC *dbc; /* H_CURSOR */
  43. void *anyp;
  44. } handle_u;
  45. long ct_id; /* Client ID */
  46. long *ct_activep; /* Activity timestamp pointer*/
  47. long *ct_origp; /* Original timestamp pointer*/
  48. long ct_active; /* Activity timestamp */
  49. long ct_timeout; /* Resource timeout */
  50. long ct_idle; /* Idle timeout */
  51. u_int32_t ct_type; /* This entry's type */
  52. struct ct_entry *ct_parent; /* Its parent */
  53. struct ct_entry *ct_envparent; /* Its environment */
  54. };
  55. #define ct_envp handle_u.envp
  56. #define ct_txnp handle_u.txnp
  57. #define ct_dbp handle_u.dbp
  58. #define ct_dbc handle_u.dbc
  59. #define ct_anyp handle_u.anyp
  60. extern int __dbsrv_verbose;
  61. /*
  62.  * Get ctp and activate it.
  63.  * Assumes local variable 'replyp'.
  64.  * NOTE: May 'return' from macro.
  65.  */
  66. #define ACTIVATE_CTP(ctp, id, type) {
  67. (ctp) = get_tableent(id);
  68. if ((ctp) == NULL) {
  69. replyp->status = DB_NOSERVER_ID;
  70. return;
  71. }
  72. DB_ASSERT((ctp)->ct_type & (type));
  73. __dbsrv_active(ctp);
  74. }
  75. #endif /* _DB_SERVER_INT_H_ */