]> pilppa.org Git - libplpbus.git/blob - src/plpbus/ServerEventThread.cc
fadb9f5df43ddc4dd5e7bccb81ecc2e79f5d4cc3
[libplpbus.git] / src / plpbus / ServerEventThread.cc
1 /*
2  * server_thread.cc
3  *
4  *  Created on: Jun 2, 2010
5  *      Author: lamikr
6  */
7
8 // A thread object used to server clients registered
9 // using the plpbus_orb::OrbServer::register() method.
10 #include <plp/log.h>
11
12 #include "BusServer.hh"
13 #include "ServerEventThread.hh"
14
15 using namespace std;
16 using namespace plpbus;
17
18 ServerEventThread::ServerEventThread(plpbus_orb::OrbClient_ptr client,
19         const char      *msg,
20         int             period,
21         OrbServerImpl   *server_obj)
22 {
23         this->_orb_client       = plpbus_orb::OrbClient::_duplicate(client);
24         this->_orb_msg          = msg;
25         this->_interval         = period;
26         this->_server_obj       = server_obj;
27         _orb_client->receive_event_message("event_listener_started");
28 }
29
30 void ServerEventThread::run(void* arg)
31 {
32         try {
33                 while(_server_obj->is_shutdown_pending() == 0) {
34                         omni_thread::sleep(_interval);
35                         _orb_client->receive_event_message(_orb_msg);
36                 }
37         }
38         catch(...) {
39                 log_error("server_thread failed, could not connect to client!\n");
40         }
41         log_debug("server_thread, closing\n");
42         _server_obj->server_thread_closed();
43 }