Merge pull request #2216 from jwillemsen/jwi-cxxversionchecks
[ACE_TAO.git] / TAO / orbsvcs / examples / ImR / Combined_Service / controller.cpp
blob90ae59306114d47998e74d4655c0c49c716254ca
1 // This is a simple test of an ImR using the corba interfaces
3 #include "service_configC.h"
5 #include <ace/streams.h>
6 #include <ace/SString.h>
7 #include <ace/Log_Msg.h>
9 using namespace CORBA;
11 namespace {
12 ACE_TString directive;
14 void showusage() {
15 ACE_DEBUG((LM_DEBUG, "Usage: controller [-r | -c \"service_configurator_directive\"]\n"
16 "(e.g. dynamic mysvc Service_Object * MySvc:_make_MySvc() \"-arg1 one\"\n\n"));
19 bool parse_args (int argc, ACE_TCHAR *argv[]) {
20 if (argc != 2 && argc != 3) {
21 ACE_ERROR((LM_ERROR, "Controller: wrong number of arguments. %d\n", argc - 1));
22 return false;
24 for (int i = 1; i < argc; ++i) {
25 ACE_TString s (argv[i]);
26 if (s == ACE_TEXT ("-h") || s == ACE_TEXT ("-help") || s == ACE_TEXT ("--help") || s == ACE_TEXT ("-?"))
27 return false;
28 if (s == ACE_TEXT ("-r")) {
29 return true;
31 if (s == ACE_TEXT ("-c") && ++i < argc) {
32 directive = argv[i];
33 return true;
36 return false;
40 int ACE_TMAIN (int argc, ACE_TCHAR *argv[]) {
41 try {
42 ORB_var orb = ORB_init (argc, argv);
44 if (! parse_args (argc, argv)) {
45 showusage();
46 return 1;
49 ACE_DEBUG((LM_DEBUG, "Controller: Connecting to combined service...\n"));
51 Object_var obj = orb->resolve_initial_references("ServiceConfig");
52 ServiceConfigurator_var sc = ServiceConfigurator::_narrow(obj.in());
53 ACE_ASSERT(! is_nil(sc.in()));
55 if (directive.length() > 0) {
56 ACE_DEBUG((LM_DEBUG, "Controller: sending directive <%s>...\n", directive.c_str()));
57 sc->process_directive (ACE_TEXT_ALWAYS_CHAR (directive.c_str()));
58 } else {
59 ACE_DEBUG((LM_DEBUG, "Controller: reloading config file...\n"));
60 sc->reconfigure();
62 ACE_DEBUG((LM_DEBUG, "Controller: done.\n"));
64 return 0;
65 } catch (const CORBA::Exception& e) {
66 e._tao_print_exception ("Controller:");
68 return 1;