pikaiyuan wrote:
> Hello
> 
>       I found there has some bug in connectionshandler.cpp like this: 
> you are maybe forget to add SubscribeQueueEntry and UnSubscribeQueueEntry
> to ClientQueueProperty, and result in some bugs when program runs in failsafe model.
>     It runs correctly after I had made some changes.

Hi,

thanks for reporting, we will look into this issue
for the next release.

> 1. in subscribe() method
>    try {
>       SubscribeReturnQos ret = connection_->subscribe(key, qos);
>       //add by pky to add subscribe entries to client ram queue
>       if (!queue_) {
>             if (!connectQos_) {
>                throw XmlBlasterException(INTERNAL_SUBSCRIBE, ME + 
> "::queuesubscribe", 
>              "need to create a queue but the connectQos is NULL (probably never 
> connected)");
>             }
>             if (log_.trace()) log_.trace(ME+":queueSubscribe", "creating a client 
> queue ...");
>             queue_ = &QueueFactory::getFactory().getPlugin(global_, 
> connectQos_->getClientQueueProperty());
>             log_.info(ME+":queuesubscribe", "created a client queue");
>          }
>          if (log_.trace()) 
>             log_.trace(ME, string("queuesubscribe: entry has been queued"));
>          SubscribeQueueEntry entry(global_, key, qos);
>          queue_->put(entry);
>        //end
>        return ret;
>    }   
>    catch (XmlBlasterException& ex) {
>       if ( ex.isCommunication() ) toPollingOrDead(&ex);
>       throw ex;
>    }
> 
> 2. in unsubscribe() method
>    try {
>       vector<UnSubscribeReturnQos> ret = connection_->unSubscribe(key, qos);
>         //add by pky to add unsubscribe entries to client ram queue
>       if (!queue_) {
>             if (!connectQos_) {
>                throw XmlBlasterException(INTERNAL_UNSUBSCRIBE, ME + 
> "::queueunsubscribe", 
>              "need to create a queue but the connectQos is NULL (probably never 
> connected)");
>             }
>             if (log_.trace()) log_.trace(ME+":queueunsubscribe", "creating a client 
> queue ...");
>             queue_ = &QueueFactory::getFactory().getPlugin(global_, 
> connectQos_->getClientQueueProperty());
>             log_.info(ME+":queueunsubscribe", "created a client queue");
>          }
>          if (log_.trace()) 
>             log_.trace(ME, string("queueunsubscribe: entry has been queued"));
>        UnSubscribeQueueEntry entry(global_, key, qos);
>          queue_->put(entry);
>        //end
>        return ret;
>    }   
>    catch (XmlBlasterException& ex) {
>       if ( ex.isCommunication() ) toPollingOrDead(&ex);
>       throw ex;
>    }
> 
>   By the way, does anyone has a look at ptp model in cplusplus client side.
It should run fine, do you experience any problems?

best regards,

Marcel
> 
> thanks any way        
>                               
> 
>                          pikaiyuan
>                          2004-07-01      
> 
> 


-- 
http://www.xmlBlaster.org

Reply via email to