Line data Source code
1 : /*
2 : * gnc-session.c -- GnuCash's session handling
3 : *
4 : * Copyright (C) 2006 Chris Shoemaker <c.shoemaker@cox.net>
5 : *
6 : * This program is free software; you can redistribute it and/or
7 : * modify it under the terms of the GNU General Public License as
8 : * published by the Free Software Foundation; either version 2 of
9 : * the License, or (at your option) any later version.
10 : *
11 : * This program is distributed in the hope that it will be useful,
12 : * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 : * GNU General Public License for more details.
15 : *
16 : * You should have received a copy of the GNU General Public License
17 : * along with this program; if not, contact:
18 : *
19 : * Free Software Foundation Voice: +1-617-542-5942
20 : * 51 Franklin Street, Fifth Floor Fax: +1-617-542-2652
21 : * Boston, MA 02110-1301, USA gnu@gnu.org
22 : */
23 :
24 : #include <config.h>
25 : #include "qof.h"
26 : #include "gnc-session.h"
27 : #include "gnc-engine.h"
28 : #include "TransLog.h"
29 :
30 : static QofSession * current_session = NULL;
31 : static QofLogModule log_module = GNC_MOD_ENGINE;
32 :
33 : QofSession *
34 13643 : gnc_get_current_session (void)
35 : {
36 13643 : if (!current_session)
37 : {
38 142 : QofBook* book = qof_book_new ();
39 142 : qof_event_suspend();
40 142 : current_session = qof_session_new (book);
41 142 : qof_event_resume();
42 : }
43 :
44 13643 : return current_session;
45 : }
46 :
47 : gboolean
48 3068 : gnc_current_session_exist(void)
49 : {
50 3068 : return (current_session != NULL);
51 : }
52 :
53 : void
54 0 : gnc_set_current_session (QofSession *session)
55 : {
56 0 : if (current_session)
57 0 : PINFO("Leak of current session.");
58 0 : current_session = session;
59 0 : }
60 :
61 114 : void gnc_clear_current_session()
62 : {
63 114 : if (current_session)
64 : {
65 114 : xaccLogDisable();
66 114 : qof_session_destroy(current_session);
67 114 : xaccLogEnable();
68 114 : current_session = NULL;
69 : }
70 114 : }
|