]> pilppa.org Git - libplpbus.git/blob - src_test/test_client.cc
small cleanups for error handling and memory leaks
[libplpbus.git] / src_test / test_client.cc
1 /*
2  * test_client.cc
3  *
4  *  Created on: Jun 9, 2010
5  *      Author: lamikr
6  */
7 #include <malloc.h>
8 #include <plp/log.h>
9
10 #include "plpbus/BusServer.hh"
11 #include "plpbus/BusClient.hh"
12 #include "plpbus/BusMessage.hh"
13
14 using namespace std;
15 using namespace plpbus;
16
17 #define MSG_ID_HELLO    33
18
19 class ClientListenerImpl : public IClientListener
20 {
21         public:
22                 inline ClientListenerImpl() {}
23                 virtual ~ClientListenerImpl() {}
24                 virtual int response_received(const char *msg_rsp_param);
25                 virtual int response_received(const BusMessage *msg_rsp_param);
26                 virtual int event_received(const char *event_param);
27                 virtual int event_received(const BusMessage *event_param);
28 };
29
30 int ClientListenerImpl::response_received(const char *msg_rsp_param) {
31         log_debug("response_received(char *%s)\n", msg_rsp_param);
32         return 0;
33 }
34
35 int ClientListenerImpl::response_received(const BusMessage *msg_rsp_param) {
36         long    type;
37         int     err_flg;
38
39         type    = ((BusMessage *)msg_rsp_param)->get_type(&err_flg);
40         log_debug("response_received(), type: %ld\n", type);
41         ((BusMessage *)msg_rsp_param)->printout();
42         return 0;
43 }
44
45 int ClientListenerImpl::event_received(const char *event_param) {
46         log_debug("event_received(%s)\n", event_param);
47         return 0;
48 }
49
50 int ClientListenerImpl::event_received(const BusMessage *event_param) {
51         log_debug("event_received(BusMessage *)\n");
52         return 0;
53 }
54
55 int main(int argc, char** argv)
56 {
57         BusClient               *client;
58         ClientListenerImpl      *lstnr;
59         int                     err_flg;
60         BusMessage              *bus_msg;
61
62         if (argc >= 3) {
63                 client  = new BusClient();
64                 lstnr   = new ClientListenerImpl();
65                 err_flg = client->init(argv[1]);
66                 if (err_flg == 0) {
67                         log_debug("init success\n");
68                         err_flg = client->add_client_listener(lstnr);
69                         if (err_flg == 0) {
70                                 int     err_flg;
71                                 char    *rsp;
72
73                                 bus_msg = new BusMessage(MSG_ID_HELLO);
74                                 if (bus_msg != NULL) {
75                                         bus_msg->add_string_parameter("a", "hello");
76                                         bus_msg->add_string_parameter("b", "world");
77                                         client->send_message_and_request_response(bus_msg);
78
79                                         rsp     = NULL;
80                                         err_flg = client->send_message_and_wait_response(argv[2], &rsp);
81                                         log_debug("rsp: %s\n", rsp);
82                                         free(rsp);
83                                         err_flg = client->send_message_and_request_response(argv[2]);
84                                         if (err_flg == 0) {
85                                                 log_debug("request message send successfully\n");
86                                         }
87                                         sleep(5);
88                                         delete(bus_msg);
89                                 }
90                         }
91                         else {
92                                 log_error("client failed to add response listener\n");
93                         }
94                 }
95                 else {
96                         log_error("client failed to init\n");
97                 }
98                 delete(client);
99                 delete(lstnr);
100         }
101         else {
102                 log_info("usage: <server_name> <message text>\n");
103         }
104         return 0;
105 }