diff options
Diffstat (limited to 'src/corba/server.cc')
| -rw-r--r-- | src/corba/server.cc | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/src/corba/server.cc b/src/corba/server.cc new file mode 100644 index 0000000000..dff13287a8 --- /dev/null +++ b/src/corba/server.cc @@ -0,0 +1,59 @@ +#include <iostream>
+#include "pgsql_int.h"
+
+bool terminate = false;
+
+int main(int argc, char *argv)
+{
+ CORBA::ORB_var orb = CORBA::ORB_init(argc,argv,"");
+ PortableManager::POA_var poa = PortableServer::POA::_narrow(orb->resolve_initial_references("RootPOA"));
+ PortableManager::POAManager_var mgr = poa->the_POAManager();
+
+ Server_impl *server = new Server_impl;
+ poa->activate_object(server);
+
+ CosNaming::NamingContext_var ctx = CosNaming::NamingContext::_narrow(orb->resolve_initial_references("NamingService"));
+ CosNaming::Name_var n = new CosNaming::Name(1);
+ n[0].id("PostgreSQL");
+ n[0].name("service");
+ bool bindok = false;
+
+ if (!CORBA::Object::is_nil(ctx)) {
+ try {
+ CosNaming::NamingContext_var myctx = ctx->bind_new_context(n);
+ CosNaming::Name_var n2 = new CosNaming::Name(1);
+ n2[0].id("Server");
+ n2[0].name("Server");
+ myctx->bind(n2,server->_this());
+ bindok = true;
+ } catch (CORBA::Exception &e) {
+ cerr << "Warning: Naming Service bind failed" << endl;
+ bindok = false;
+ }
+ } else {
+ cerr << "Warning: Naming Service not found" << endl;
+ }
+
+ mgr->activate();
+ while (!terminate) {
+ if (orb->work_pending())
+ orb->perform_work();
+ if (expiry_needed())
+ expire_now();
+ }
+
+ if (!CORBA::Object::is_nil(ctx) && bindok) {
+ try {
+ CosNaming::NamingContext myctx = ctx->resolve(n);
+ ctx->unbind(n);
+ myctx->destroy();
+ } catch (CORBA::Exception &e) {
+ cerr << "Warning: Naming Service unbind failed" << endl;
+ }
+ }
+
+ orb->shutdown(true);
+
+ delete server;
+ return 0;
+}
|
