pgtclCmds.h
上传用户:blenddy
上传日期:2007-01-07
资源大小:6495k
文件大小:4k
- /*-------------------------------------------------------------------------
- *
- * pgtclCmds.h
- * declarations for the C functions which implement pg_* tcl commands
- *
- * Copyright (c) 1994, Regents of the University of California
- *
- * $Id: pgtclCmds.h,v 1.15 1999/05/25 22:43:45 momjian Exp $
- *
- *-------------------------------------------------------------------------
- */
- #ifndef PGTCLCMDS_H
- #define PGTCLCMDS_H
- #include "tcl.h"
- #include "libpq-fe.h"
- #define RES_HARD_MAX 128
- #define RES_START 16
- /*
- * Each Pg_ConnectionId has a list of Pg_TclNotifies structs, one for each
- * Tcl interpreter that has executed any pg_listens on the connection.
- * We need this arrangement to be able to clean up if an interpreter is
- * deleted while the connection remains open. A free side benefit is that
- * multiple interpreters can be registered to listen for the same notify
- * name. (All their callbacks will be called, but in an unspecified order.)
- */
- typedef struct Pg_TclNotifies_s
- {
- struct Pg_TclNotifies_s *next; /* list link */
- Tcl_Interp *interp; /* This Tcl interpreter */
- /*
- * NB: if interp == NULL, the interpreter is gone but we haven't yet
- * got round to deleting the Pg_TclNotifies structure.
- */
- Tcl_HashTable notify_hash; /* Active pg_listen requests */
- } Pg_TclNotifies;
- typedef struct Pg_ConnectionId_s
- {
- char id[32];
- PGconn *conn;
- int res_max; /* Max number of results allocated */
- int res_hardmax; /* Absolute max to allow */
- int res_count; /* Current count of active results */
- int res_last; /* Optimize where to start looking */
- int res_copy; /* Query result with active copy */
- int res_copyStatus; /* Copying status */
- PGresult **results; /* The results */
- Pg_TclNotifies *notify_list;/* head of list of notify info */
- int notifier_running; /* notify event source is live */
- int notifier_socket;/* PQsocket on which notifier is listening */
- } Pg_ConnectionId;
- /* Values of res_copyStatus */
- #define RES_COPY_NONE 0
- #define RES_COPY_INPROGRESS 1
- #define RES_COPY_FIN 2
- /* **************************/
- /* registered Tcl functions */
- /* **************************/
- extern int Pg_conndefaults(
- ClientData cData, Tcl_Interp *interp, int argc, char *argv[]);
- extern int Pg_connect(
- ClientData cData, Tcl_Interp *interp, int argc, char *argv[]);
- extern int Pg_disconnect(
- ClientData cData, Tcl_Interp *interp, int argc, char *argv[]);
- extern int Pg_exec(
- ClientData cData, Tcl_Interp *interp, int argc, char *argv[]);
- extern int Pg_select(
- ClientData cData, Tcl_Interp *interp, int argc, char *argv[]);
- extern int Pg_result(
- ClientData cData, Tcl_Interp *interp, int argc, char *argv[]);
- extern int Pg_lo_open(
- ClientData cData, Tcl_Interp *interp, int argc, char *argv[]);
- extern int Pg_lo_close(
- ClientData cData, Tcl_Interp *interp, int argc, char *argv[]);
- extern int Pg_lo_read(
- ClientData cData, Tcl_Interp *interp, int argc, char *argv[]);
- extern int Pg_lo_write(
- ClientData cData, Tcl_Interp *interp, int argc, char *argv[]);
- extern int Pg_lo_lseek(
- ClientData cData, Tcl_Interp *interp, int argc, char *argv[]);
- extern int Pg_lo_creat(
- ClientData cData, Tcl_Interp *interp, int argc, char *argv[]);
- extern int Pg_lo_tell(
- ClientData cData, Tcl_Interp *interp, int argc, char *argv[]);
- extern int Pg_lo_unlink(
- ClientData cData, Tcl_Interp *interp, int argc, char *argv[]);
- extern int Pg_lo_import(
- ClientData cData, Tcl_Interp *interp, int argc, char *argv[]);
- extern int Pg_lo_export(
- ClientData cData, Tcl_Interp *interp, int argc, char *argv[]);
- extern int Pg_listen(
- ClientData cData, Tcl_Interp *interp, int argc, char *argv[]);
- #endif /* PGTCLCMDS_H */