diff --git a/src/bin/parkinglot/ccsession.cc b/src/bin/parkinglot/ccsession.cc index 70148800ca..863748f3ce 100644 --- a/src/bin/parkinglot/ccsession.cc +++ b/src/bin/parkinglot/ccsession.cc @@ -75,7 +75,7 @@ CommandSession::CommandSession(std::string module_name, std::string spec_file_name, isc::data::ElementPtr(*config_handler)(isc::data::ElementPtr new_config), isc::data::ElementPtr(*command_handler)(isc::data::ElementPtr command) - ) : + ) throw (isc::cc::SessionError): module_name_(module_name), session_(isc::cc::Session()) { diff --git a/src/bin/parkinglot/ccsession.h b/src/bin/parkinglot/ccsession.h index 1cf6e32dec..742232748d 100644 --- a/src/bin/parkinglot/ccsession.h +++ b/src/bin/parkinglot/ccsession.h @@ -36,7 +36,7 @@ public: CommandSession(std::string module_name, std::string spec_file_name, isc::data::ElementPtr(*config_handler)(isc::data::ElementPtr new_config) = NULL, isc::data::ElementPtr(*command_handler)(isc::data::ElementPtr command) = NULL - ); + ) throw (isc::cc::SessionError); int getSocket(); /** diff --git a/src/bin/parkinglot/main.cc b/src/bin/parkinglot/main.cc index 8985ef9e19..f0899ceafa 100644 --- a/src/bin/parkinglot/main.cc +++ b/src/bin/parkinglot/main.cc @@ -133,35 +133,40 @@ main(int argc, char* argv[]) { //plot = ParkingLot(port); // initialize command channel - CommandSession cs = CommandSession(PROGRAM, SPECFILE, my_config_handler, my_command_handler); + try { + CommandSession cs = CommandSession(PROGRAM, SPECFILE, my_config_handler, my_command_handler); - // main server loop - fd_set fds; - int ps = plot.getSocket(); - int ss = cs.getSocket(); - int nfds = max(ps, ss) + 1; - int counter = 0; - - cout << "Server started." << endl; - while (true) { - FD_ZERO(&fds); - FD_SET(ps, &fds); - FD_SET(ss, &fds); - - int n = select(nfds, &fds, NULL, NULL, NULL); - if (n < 0) - throw FatalError("select error"); - - if (FD_ISSET(ps, &fds)) { - ++counter; - plot.processMessage(); - } - - /* isset not really necessary, but keep it for now */ - if (FD_ISSET(ss, &fds)) { - cs.check_command(); + // main server loop + fd_set fds; + int ps = plot.getSocket(); + int ss = cs.getSocket(); + int nfds = max(ps, ss) + 1; + int counter = 0; + + cout << "Server started." << endl; + while (true) { + FD_ZERO(&fds); + FD_SET(ps, &fds); + FD_SET(ss, &fds); + + int n = select(nfds, &fds, NULL, NULL, NULL); + if (n < 0) + throw FatalError("select error"); + + if (FD_ISSET(ps, &fds)) { + ++counter; + plot.processMessage(); + } + + /* isset not really necessary, but keep it for now */ + if (FD_ISSET(ss, &fds)) { + cs.check_command(); + } } + } catch (isc::cc::SessionError se) { + cout << se.what() << endl; + exit(1); } - + return (0); }