Branch data 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 : 41594 : gnc_get_current_session (void)
35 : : {
36 : 41594 : if (!current_session)
37 : : {
38 : 130 : QofBook* book = qof_book_new ();
39 : 130 : qof_event_suspend();
40 : 130 : current_session = qof_session_new (book);
41 : 130 : qof_event_resume();
42 : : }
43 : :
44 : 41594 : return current_session;
45 : : }
46 : :
47 : : gboolean
48 : 7654 : gnc_current_session_exist(void)
49 : : {
50 : 7654 : 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 : 102 : void gnc_clear_current_session()
62 : : {
63 : 102 : if (current_session)
64 : : {
65 : 102 : xaccLogDisable();
66 : 102 : qof_session_destroy(current_session);
67 : 102 : xaccLogEnable();
68 : 102 : current_session = NULL;
69 : : }
70 : 102 : }
|