]> git.sur5r.net Git - bacula/bacula/blob - bacula/src/wx-console/console_thread.cpp
Removed unused variable.
[bacula/bacula] / bacula / src / wx-console / console_thread.cpp
1 /*
2  *
3  *    Interaction thread between director and the GUI
4  *
5  *    Nicolas Boichat, April 2004
6  *
7  */
8 /*
9    Copyright (C) 2004 Kern Sibbald and John Walker
10
11    This program is free software; you can redistribute it and/or
12    modify it under the terms of the GNU General Public License
13    as published by the Free Software Foundation; either version 2
14    of the License, or (at your option) any later version.
15
16    This program is distributed in the hope that it will be useful,
17    but WITHOUT ANY WARRANTY; without even the implied warranty of
18    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19    GNU General Public License for more details.
20
21    You should have received a copy of the GNU General Public License
22    along with this program; if not, write to the Free Software
23    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
24  */
25
26 #include "console_thread.h" // class's header file
27
28 #include <wx/wxprec.h>
29
30 #include <wx/thread.h>
31 #include <bacula.h>
32 #include <jcr.h>
33
34 #include "console_conf.h"
35
36 #include "csprint.h"
37
38 /* Imported functions */
39 int authenticate_director(JCR *jcr, DIRRES *director, CONRES *cons);
40
41 // class constructor
42 console_thread::console_thread() {
43    UA_sock = NULL;
44 }
45
46 // class destructor
47 console_thread::~console_thread() {
48    if (UA_sock) {
49       bnet_sig(UA_sock, BNET_TERMINATE); /* send EOF */
50       bnet_close(UA_sock);
51       UA_sock = NULL;
52    }
53 }
54
55 /*
56  * Thread entry point
57  */
58 void* console_thread::Entry() {
59    csprint("Connecting...\n");
60
61    init_stack_dump();
62    my_name_is(0, NULL, "wx-console");
63    textdomain("bacula-console");
64    init_msg(NULL, NULL);
65
66    /* TODO (#4#): Allow the user to choose his config file. */
67    parse_config("./wx-console.conf");
68
69    LockRes();
70    DIRRES *dir = (DIRRES *)GetNextRes(R_DIRECTOR, NULL);
71    UnlockRes();
72
73    memset(&jcr, 0, sizeof(jcr));
74
75    UA_sock = bnet_connect(&jcr, 5, 15, "Director daemon", dir->address, NULL, dir->DIRport, 0);
76    if (UA_sock == NULL) {
77       csprint("NULL\n");
78       return NULL;
79    }
80
81    csprint("Connected\n");
82
83    jcr.dir_bsock = UA_sock;
84    if (!authenticate_director(&jcr, dir, NULL)) {
85       csprint("ERR=");
86       csprint(UA_sock->msg);
87       return NULL;
88    }
89
90    Write("messages\n");
91
92    int stat;
93
94    /* main loop */
95    while(!TestDestroy()) {   /* Tests if thread has been ended */
96       if ((stat = bnet_recv(UA_sock)) >= 0) {
97          csprint(UA_sock->msg);
98       }
99       else {
100          csprint(NULL, CS_END);
101       }
102
103       if (is_bnet_stop(UA_sock)) {
104          csprint(NULL, CS_END);
105          break;            /* error or term */
106       }
107    }
108
109    csprint("Connection terminated\n");
110
111    return 0;
112 }
113
114 void console_thread::Write(const char* str) {
115    if (UA_sock) {
116        UA_sock->msglen = strlen(str);
117        pm_strcpy(&UA_sock->msg, str);
118        bnet_send(UA_sock);
119    }
120 }
121
122 void console_thread::Delete() {
123    Write("quit\n");
124    if (UA_sock) {
125       bnet_sig(UA_sock, BNET_TERMINATE); /* send EOF */
126       bnet_close(UA_sock);
127       UA_sock = NULL;
128    }
129 }
130