Annotation of freem/src/transact.h, revision 1.2
1.1 snw 1: /*
2: * *
3: * * *
4: * * *
5: * ***************
6: * * * * *
7: * * MUMPS *
8: * * * * *
9: * ***************
10: * * *
11: * * *
12: * *
13: *
14: * transact.h
15: * Function prototypes, structs, and macros for FreeM
16: * transaction support
17: *
18: *
1.2 ! snw 19: * Author: Serena Willis <snw@coherent-logic.com>
1.1 snw 20: * Copyright (C) 1998 MUG Deutschland
21: * Copyright (C) 2020 Coherent Logic Development LLC
22: *
23: *
24: * This file is part of FreeM.
25: *
26: * FreeM is free software: you can redistribute it and/or modify
27: * it under the terms of the GNU Affero Public License as published by
28: * the Free Software Foundation, either version 3 of the License, or
29: * (at your option) any later version.
30: *
31: * FreeM is distributed in the hope that it will be useful,
32: * but WITHOUT ANY WARRANTY; without even the implied warranty of
33: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
34: * GNU Affero Public License for more details.
35: *
36: * You should have received a copy of the GNU Affero Public License
37: * along with FreeM. If not, see <https://www.gnu.org/licenses/>.
38: *
39: **/
40:
41: #define TP_MAX_NEST 256
42: #define TP_MAX_OPS 256
43:
44: typedef struct tp_gblop {
45:
46: /* does this operation represent a LOCK? */
47: short is_lock;
48:
49: /* flags presented to global(); action and
50: data do not apply if is_lock == TRUE */
51: short action;
52: char key[256];
53: char data[256];
54:
55: } tp_gblop;
56:
57: typedef struct tp_transaction {
58:
59: /* transaction ID */
60: char tp_id[256];
61:
62: /* transaction flags */
63: short serial;
64: short restartable;
65:
66: /* array of symbols to be restored on TRESTART */
67: char sym_save[256][256];
68:
69: int opcount;
70:
71: tp_gblop ops[TP_MAX_OPS];
72:
73: } tp_transaction;
74:
75: extern int tp_committing;
76: extern int tp_level;
77: extern tp_transaction transactions[TP_MAX_NEST];
78: extern void tp_init(void);
79: extern short tp_get_sem(void);
80: extern void tp_release_sem(void);
81: extern int tp_tstart(char *tp_id, short serial, short restartable, char **sym_save);
82: extern int tp_add_op(short islock, short action, char *key, char *data);
83: extern int tp_tcommit(void);
84: extern int tp_cleanup(int levels);
85: extern int tp_trollback(int levels);
86: extern int tp_trestart(void);
87: extern void tp_tdump(void);
88: extern void tp_get_op_name(char *buf, const short action);
89:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>