]> pilppa.org Git - libplpbus.git/blobdiff - src/plpbus/OrbServerImpl.cc
memory leak fix
[libplpbus.git] / src / plpbus / OrbServerImpl.cc
index 4d4898e1a2e3fcf7b13f5b5d2035efd6b10fdc9b..c22e3de930ee8259de046b14c05915c6118741a6 100644 (file)
@@ -30,6 +30,7 @@ OrbServerImpl::OrbServerImpl()
 
 OrbServerImpl::~OrbServerImpl()
 {
+       _orb->destroy();
        log_info("done\n");
 }
 
@@ -93,7 +94,7 @@ void OrbServerImpl::send_dataitem_message_and_request_response(OrbClient_ptr res
                        msg_rsp = new BusMessage(msg_req->get_type(&err_flg));
                        _listener->request_received(msg_req, msg_rsp);
                        seq     = (DataItemSequence *)msg_rsp->_dataItemSeq;
-                       log_debug("msg_rsp length: %u\n", seq->length());
+                       log_debug("msg_rsp length: %lu\n", (long unsigned int)seq->length());
                        msg_rsp->printout();
                        response_listener_param->receive_response_dataitem_sequence(*seq);
                        delete(msg_req);
@@ -105,25 +106,25 @@ void OrbServerImpl::send_dataitem_message_and_request_response(OrbClient_ptr res
        }
 }
 
+void copy( const DataItemSequence& orig_seq )
+{
+       DataItemSequence new_seq;
+
+       new_seq = orig_seq;
+}
+
 CORBA::Long OrbServerImpl::send_dataitem_message_and_wait_response(const DataItemSequence& req_seq_param,
                                                                DataItemSequence_out rsp_seq_param) {
-       BusMessage              *msg_req;
-       BusMessage              *msg_rsp;
-       DataItemSequence        *seq;
-       int                     err_flg;
+       BusMessage      *msg_req;
+       BusMessage      *msg_rsp;
+       int             err_flg;
 
-       seq     = NULL;
-       msg_rsp = NULL;
        msg_req = new BusMessageInternal(req_seq_param);
        msg_rsp = new BusMessage(msg_req->get_type(&err_flg));
        _listener->request_received(msg_req, msg_rsp);
-       if (msg_rsp != NULL) {
-               seq     = (DataItemSequence *)msg_rsp->_dataItemSeq;
-       }
-       else {
-               seq     = new DataItemSequence();
-       }
-       rsp_seq_param._data     = seq;
+       rsp_seq_param._data     = new DataItemSequence(*(msg_rsp->_dataItemSeq));
+       delete(msg_req);
+       delete(msg_rsp);
 
        return 0;
 }
@@ -278,12 +279,12 @@ CosNaming::NamingContext_var OrbServerImpl::get_naming_service_context(const cha
        ret_val = NULL;
        try {
                // get nameservice reference
-               log_debug("started\n");
-               ns_obj  = _orb->resolve_initial_references(CONST_NAME_SERVICE_NAME);
+               //log_debug("started\n");
+               ns_obj  = _orb->resolve_initial_references("NameService");
                if (CORBA::is_nil(ns_obj) == false) {
                        // get naming service context
-                       ns_cntx = CosNaming::NamingContext::_narrow(ns_obj);
-                       if (CORBA::is_nil(ns_cntx) == false) {
+                       ns_cntx = CosNaming::NamingContext::_narrow(ns_obj.in());
+                       if (CORBA::is_nil(ns_cntx.in()) == false) {
                                cntx_dta.length(1);
                                cntx_dta[0].id          = CORBA::string_dup(service_name_param);
                                cntx_dta[0].kind        = CORBA::string_dup(service_kind_param);
@@ -311,6 +312,7 @@ CosNaming::NamingContext_var OrbServerImpl::get_naming_service_context(const cha
                                catch(CosNaming::NamingContext::AlreadyBound& ex) {
                                        log_error("Failed to get naming service context for %s. Context with same name already exist.\n", service_name_param);
                                }
+                               //CORBA::release(ns_cntx);
                        }
                        else {
                                log_error("Failed to get naming service context for %s. Could not narrow the name service.\n", service_name_param);
@@ -338,7 +340,7 @@ CosNaming::NamingContext_var OrbServerImpl::get_naming_service_context(const cha
        catch(CORBA::SystemException& ex) {
                log_error("Failed to get naming service context for %s, system error.\n", service_name_param);
        }
-       log_debug("done\n");
+       //log_debug("done\n");
        return ret_val;
 }