summaryrefslogtreecommitdiff
path: root/bindings/corba/omniorbcpp/server.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'bindings/corba/omniorbcpp/server.cpp')
-rw-r--r--bindings/corba/omniorbcpp/server.cpp122
1 files changed, 122 insertions, 0 deletions
diff --git a/bindings/corba/omniorbcpp/server.cpp b/bindings/corba/omniorbcpp/server.cpp
new file mode 100644
index 0000000..b6f0ff5
--- /dev/null
+++ b/bindings/corba/omniorbcpp/server.cpp
@@ -0,0 +1,122 @@
+/******************************************************************************
+ *
+ * server.cpp -
+ *
+ * $Id: server.cpp 2833 2013-06-29 06:40:28Z chrislit $
+ *
+ * Copyright 2009-2013 CrossWire Bible Society (http://www.crosswire.org)
+ * CrossWire Bible Society
+ * P. O. Box 2528
+ * Tempe, AZ 85280-2528
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation version 2.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ */
+
+
+#include "swordorb-impl.hpp"
+#include <iostream>
+#include <swmgr.h>
+#include "../orbitcpp/webmgr.hpp"
+
+SWConfig *sysConf = 0;
+WebMgr *swordMgr = 0;
+
+class CleanStatics {
+public:
+ CleanStatics() {}
+ ~CleanStatics() {
+ if (swordMgr)
+ delete swordMgr;
+
+ if (sysConf)
+ delete sysConf;
+ }
+} cleanStatics;
+
+
+
+
+int main (int argc, char** argv)
+{
+ try {
+
+ for (int i = 1; i < argc; i++) {
+ if (!strcmp(argv[i], "-sysConf")) {
+ if ((i+1) < argc)
+ sysConf = new SWConfig(argv[i+1]);
+ }
+ }
+
+ swordMgr = new WebMgr(sysConf);
+
+
+ const char* options[][2] = {
+ { "nativeCharCodeSet", "UTF-8" }
+ , { 0, 0 }
+ };
+
+
+ // Initialise the ORB.
+ CORBA::ORB_var orb = CORBA::ORB_init(argc, argv, "omniORB4", options);
+
+ // Obtain a reference to the root POA.
+ CORBA::Object_var obj = orb->resolve_initial_references("RootPOA");
+ PortableServer::POA_var poa = PortableServer::POA::_narrow(obj);
+
+ // We allocate the objects on the heap. Since these are reference
+ // counted objects, they will be deleted by the POA when they are no
+ // longer needed.
+// swordorb_SWModule_i* myswordorb_SWModule_i = new swordorb_SWModule_i();
+ swordorb_SWMgr_i* myswordorb_SWMgr_i = new swordorb_SWMgr_i(swordMgr);
+
+
+ // Activate the objects. This tells the POA that the objects are
+ // ready to accept requests.
+ // PortableServer::ObjectId_var myswordorb_SWModule_iid = poa->activate_object(myswordorb_SWModule_i);
+ PortableServer::ObjectId_var myswordorb_SWMgr_iid = poa->activate_object(myswordorb_SWMgr_i);
+
+
+ {
+ // IDL interface: swordorb::SWMgr
+ CORBA::Object_var ref = myswordorb_SWMgr_i->_this();
+ CORBA::String_var sior(orb->object_to_string(ref));
+ std::cout << (char*)sior << std::endl;
+ }
+
+
+
+ // Obtain a POAManager, and tell the POA to start accepting
+ // requests on its objects.
+ PortableServer::POAManager_var pman = poa->the_POAManager();
+ pman->activate();
+
+ orb->run();
+ orb->destroy();
+ }
+ catch(CORBA::TRANSIENT&) {
+ std::cerr << "Caught system exception TRANSIENT -- unable to contact the "
+ << "server." << std::endl;
+ }
+ catch(CORBA::SystemException& ex) {
+ std::cerr << "Caught a CORBA::" << ex._name() << std::endl;
+ }
+ catch(CORBA::Exception& ex) {
+ std::cerr << "Caught CORBA::Exception: " << ex._name() << std::endl;
+ }
+ catch(omniORB::fatalException& fe) {
+ std::cerr << "Caught omniORB::fatalException:" << std::endl;
+ std::cerr << " file: " << fe.file() << std::endl;
+ std::cerr << " line: " << fe.line() << std::endl;
+ std::cerr << " mesg: " << fe.errmsg() << std::endl;
+ }
+ return 0;
+}
+