------_=_NextPart_000_01C121E1.33F1FE20
Content-Type: text/plain;
charset="iso-8859-1"
Does anyone have any idea why when a call is made to the
subscription_change() method that is a member of the ConsumerAdmin
interface it would block until a few events are sent in to the
channel by a supplier?
I'm just subscribing to receive all events. Attached is a
supplier and a consumer both written in C++.
I'm sure that I'm making some "rookie" mistake but cannot see
what it might be.
Stats:
ACE: 5.1.18
TAO: 1.1.18
OS: Solaris 5.6
Compiler: SUNWspro4.2
Thanks for any help.
James Laceyu
------_=_NextPart_000_01C121E1.33F1FE20
Content-Type: application/octet-stream;
name="Consumer.cpp"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: attachment;
filename="Consumer.cpp"
#include "Consumer.h"=0A=
=0A=
#define NAMING_SERVICE_NAME "NameService"=0A=
#define EVENT_CHANNEL_NAME "OmcEventChannel"=0A=
#define TCL_GRAMMAR "TCL"=0A=
#define FILTER "threshold > 0"=0A=
=0A=
ConsumerClient::ConsumerClient(void)=0A=
{=0A=
}=0A=
=0A=
ConsumerClient::~ConsumerClient()=0A=
{=0A=
this->ec_->destroy();=0A=
}=0A=
=0A=
void=0A=
ConsumerClient::init(int argc, char *argv [], CORBA::Environment& =
ACE_TRY_ENV)=0A=
{=0A=
init_ORB(argc, argv, ACE_TRY_ENV);=0A=
ACE_CHECK;=0A=
=0A=
resolve_naming_service(ACE_TRY_ENV);=0A=
ACE_CHECK;=0A=
=0A=
resolve_EC(ACE_TRY_ENV);=0A=
ACE_CHECK;=0A=
=0A=
create_consumeradmin(ACE_TRY_ENV);=0A=
ACE_CHECK;=0A=
=0A=
create_consumer(ACE_TRY_ENV);=0A=
ACE_CHECK;=0A=
}=0A=
=0A=
void=0A=
ConsumerClient::run(CORBA::Environment& ACE_TRY_ENV)=0A=
{=0A=
cout << "run()" << endl;=0A=
//this->orb_->perform_work();=0A=
this->orb_->run();=0A=
}=0A=
=0A=
void=0A=
ConsumerClient::init_ORB(int argc,=0A=
char *argv [],=0A=
CORBA::Environment& ACE_TRY_ENV)=0A=
{=0A=
this->orb_ =3D CORBA::ORB_init(argc, argv, "", ACE_TRY_ENV);=0A=
ACE_CHECK;=0A=
=0A=
CORBA::Object_ptr poa_object =3D=0A=
this->orb_->resolve_initial_references("RootPOA",=0A=
ACE_TRY_ENV);=0A=
ACE_CHECK;=0A=
=0A=
if (CORBA::is_nil(poa_object))=0A=
{=0A=
ACE_ERROR((LM_ERROR, "(%P|%t) Unable to initialize the =
POA.\n"));=0A=
return;=0A=
}=0A=
=0A=
this->root_poa_ =3D PortableServer::POA::_narrow(poa_object, =
ACE_TRY_ENV);=0A=
ACE_CHECK;=0A=
=0A=
PortableServer::POAManager_var poa_manager =3D=0A=
=
root_poa_->the_POAManager(ACE_TRY_ENV);=0A=
ACE_CHECK;=0A=
=0A=
poa_manager->activate(ACE_TRY_ENV);=0A=
ACE_CHECK;=0A=
=0A=
cout << "init_ORB()" << endl;=0A=
}=0A=
=0A=
void=0A=
ConsumerClient::resolve_naming_service(CORBA::Environment& =
ACE_TRY_ENV)=0A=
{=0A=
CORBA::Object_var naming_obj =3D=0A=
this->orb_->resolve_initial_references(NAMING_SERVICE_NAME,=0A=
ACE_TRY_ENV);=0A=
ACE_CHECK;=0A=
=0A=
if (CORBA::is_nil(naming_obj.in()))=0A=
ACE_THROW(CORBA::UNKNOWN());=0A=
=0A=
this->naming_context_ =3D=0A=
CosNaming::NamingContext::_narrow(naming_obj.in(), =
ACE_TRY_ENV);=0A=
ACE_CHECK;=0A=
=0A=
cout << "resolve_naming_service()" << endl;=0A=
}=0A=
=0A=
void=0A=
ConsumerClient::resolve_EC(CORBA::Environment& ACE_TRY_ENV)=0A=
{=0A=
CosNaming::Name name(1);=0A=
=0A=
name.length(1);=0A=
=0A=
name[0].id =3D CORBA::string_dup(EVENT_CHANNEL_NAME);=0A=
=0A=
CORBA::Object_var obj =3D this->naming_context_->resolve(name, =
ACE_TRY_ENV);=0A=
ACE_CHECK;=0A=
=0A=
ec_ =3D CosNotifyChannelAdmin::EventChannel::_narrow(obj.in(), =
ACE_TRY_ENV);=0A=
ACE_CHECK;=0A=
=0A=
ACE_ASSERT(!CORBA::is_nil(ec_.in()));=0A=
=0A=
cout << "resolve_EC()" << endl;=0A=
}=0A=
=0A=
void=0A=
ConsumerClient::create_consumeradmin(CORBA::Environment& =
ACE_TRY_ENV)=0A=
{=0A=
CosNotifyChannelAdmin::AdminID adminid =3D 0;=0A=
=0A=
consumer_admin_ =3D ec_->default_consumer_admin(ACE_TRY_ENV);=0A=
ACE_CHECK;=0A=
=0A=
ACE_ASSERT(!CORBA::is_nil(consumer_admin_.in()));=0A=
=0A=
CosNotifyFilter::FilterFactory_var ffact =3D =0A=
ec_->default_filter_factory =
(ACE_TRY_ENV);=0A=
ACE_CHECK;=0A=
=0A=
CosNotifyFilter::Filter_var ca_filter =3D =0A=
ffact->create_filter (TCL_GRAMMAR, =
ACE_TRY_ENV);=0A=
ACE_CHECK;=0A=
=0A=
ACE_ASSERT (!CORBA::is_nil (ca_filter.in ()));=0A=
=0A=
CosNotifyFilter::ConstraintExpSeq constraint_list(1);=0A=
constraint_list.length(1);=0A=
=0A=
constraint_list[0].event_types.length(0);=0A=
constraint_list[0].constraint_expr =3D CORBA::string_dup (FILTER);=0A=
=0A=
ca_filter->add_constraints (constraint_list, ACE_TRY_ENV);=0A=
ACE_CHECK;=0A=
=0A=
consumer_admin_->add_filter (ca_filter.in (), ACE_TRY_ENV);=0A=
ACE_CHECK;=0A=
=0A=
CosNotification::EventTypeSeq added(1);=0A=
CosNotification::EventTypeSeq removed (0);=0A=
added.length(1);=0A=
removed.length(0);=0A=
=0A=
added[0].domain_name =3D CORBA::string_dup ("*");=0A=
added[0].type_name =3D CORBA::string_dup ("*");=0A=
=0A=
cout << "before subscription_change()" << endl;=0A=
=0A=
this->consumer_admin_->subscription_change(added, removed, =
ACE_TRY_ENV);=0A=
ACE_CHECK;=0A=
=0A=
cout << "after subscription_change()" << endl;=0A=
=0A=
cout << "create_consumeradmin()" << endl;=0A=
}=0A=
=0A=
void=0A=
ConsumerClient::create_consumer(CORBA::Environment& ACE_TRY_ENV)=0A=
{=0A=
ACE_NEW_THROW_EX(consumer,=0A=
Consumer_StructuredPushConsumer("consumer"),=0A=
CORBA::NO_MEMORY());=0A=
=0A=
consumer->connect(consumer_admin_.in(), ACE_TRY_ENV);=0A=
ACE_CHECK;=0A=
=0A=
cout << "create_consumer()" << endl;=0A=
}=0A=
=0A=
Consumer_StructuredPushConsumer::Consumer_StructuredPushConsumer(=0A=
const char* =
my_name) :=0A=
my_name_(my_name)=0A=
{=0A=
}=0A=
=0A=
Consumer_StructuredPushConsumer::~Consumer_StructuredPushConsumer()=0A=
{=0A=
}=0A=
=0A=
void=0A=
Consumer_StructuredPushConsumer::connect(=0A=
CosNotifyChannelAdmin::ConsumerAdmin_ptr =
consumer_admin, =0A=
CORBA::Environment& ACE_TRY_ENV)=0A=
{=0A=
CosNotifyComm::StructuredPushConsumer_var objref =3D =
this->_this(ACE_TRY_ENV);=0A=
ACE_CHECK;=0A=
=0A=
CosNotifyChannelAdmin::ProxySupplier_var proxysupplier =3D=0A=
consumer_admin->obtain_notification_push_supplier(=0A=
CosNotifyChannelAdmin::STRUCTURED_EVENT, =0A=
proxy_supplier_id_, =0A=
ACE_TRY_ENV);=0A=
ACE_CHECK;=0A=
=0A=
ACE_ASSERT(!CORBA::is_nil(proxysupplier.in()));=0A=
=0A=
this->proxy_supplier_ =3D=0A=
CosNotifyChannelAdmin::StructuredProxyPushSupplier::=0A=
_narrow(proxysupplier.in(), ACE_TRY_ENV);=0A=
ACE_CHECK;=0A=
=0A=
ACE_ASSERT(!CORBA::is_nil(proxy_supplier_.in()));=0A=
=0A=
proxy_supplier_->connect_structured_push_consumer(objref.in(), =
ACE_TRY_ENV);=0A=
ACE_CHECK;=0A=
}=0A=
=0A=
void=0A=
Consumer_StructuredPushConsumer::disconnect(CORBA::Environment& =
ACE_TRY_ENV)=0A=
{=0A=
=
this->proxy_supplier_->disconnect_structured_push_supplier(ACE_TRY_ENV);=
=0A=
ACE_CHECK;=0A=
=0A=
cout << "disconnect()" << endl;=0A=
}=0A=
=0A=
void=0A=
Consumer_StructuredPushConsumer::offer_change(=0A=
const CosNotification::EventTypeSeq& =
/*added*/, =0A=
const CosNotification::EventTypeSeq& =
/*removed*/, =0A=
CORBA::Environment& /*ACE_TRY_ENV*/)=0A=
ACE_THROW_SPEC((CORBA::SystemException, =
CosNotifyComm::InvalidEventType))=0A=
{=0A=
cout << "offer_change()" << endl;=0A=
}=0A=
=0A=
void=0A=
Consumer_StructuredPushConsumer::push_structured_event(=0A=
const CosNotification::StructuredEvent& =
notification, =0A=
CORBA::Environment& /*ACE_TRY_ENV*/)=0A=
ACE_THROW_SPEC((CORBA::SystemException, =
CosEventComm::Disconnected))=0A=
{=0A=
CORBA::Long val;=0A=
=0A=
notification.remainder_of_body >>=3D val;=0A=
=0A=
ACE_DEBUG((LM_DEBUG, "%s received event, %d\n", my_name_.fast_rep(), =
val));=0A=
}=0A=
=0A=
void=0A=
Consumer_StructuredPushConsumer::disconnect_structured_push_consumer(=0A=
CORBA::Environment& =
/*ACE_TRY_ENV*/)=0A=
ACE_THROW_SPEC((CORBA::SystemException))=0A=
{=0A=
cout << "disconnect_structured_push_consumer()" << endl;=0A=
}=0A=
------_=_NextPart_000_01C121E1.33F1FE20
Content-Type: application/octet-stream;
name="Supplier.cpp"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: attachment;
filename="Supplier.cpp"
#include "Supplier.h"=0A=
=0A=
#define NOTIFY_FACTORY_NAME "NotifyEventChannelFactory"=0A=
#define NAMING_SERVICE_NAME "NameService"=0A=
#define EVENT_CHANNEL_NAME "OmcEventChannel"=0A=
#define SA_FILTER "threshold > 10"=0A=
#define TCL_GRAMMAR "TCL"=0A=
=0A=
SupplierClient::SupplierClient(void)=0A=
{=0A=
ifgop_ =3D CosNotifyChannelAdmin::AND_OP;=0A=
}=0A=
=0A=
SupplierClient::~SupplierClient()=0A=
{=0A=
//if (!CORBA::is_nil(ec_.in()))=0A=
// this->ec_->destroy();=0A=
}=0A=
=0A=
void=0A=
SupplierClient::init(int argc, char *argv [], CORBA::Environment =
&ACE_TRY_ENV)=0A=
{=0A=
init_ORB(argc, argv, ACE_TRY_ENV);=0A=
ACE_CHECK;=0A=
=0A=
resolve_naming_service(ACE_TRY_ENV);=0A=
ACE_CHECK;=0A=
=0A=
resolve_Notify_factory(ACE_TRY_ENV);=0A=
ACE_CHECK;=0A=
=0A=
create_EC(ACE_TRY_ENV);=0A=
ACE_CHECK;=0A=
=0A=
create_supplieradmin(ACE_TRY_ENV);=0A=
ACE_CHECK;=0A=
=0A=
create_supplier(ACE_TRY_ENV);=0A=
ACE_CHECK;=0A=
}=0A=
=0A=
void=0A=
SupplierClient::run(CORBA::Environment &ACE_TRY_ENV)=0A=
{=0A=
send_events(ACE_TRY_ENV);=0A=
ACE_CHECK;=0A=
}=0A=
=0A=
void=0A=
SupplierClient::init_ORB(int argc,=0A=
char *argv [],=0A=
CORBA::Environment &ACE_TRY_ENV)=0A=
{=0A=
this->orb_ =3D CORBA::ORB_init(argc,=0A=
argv,=0A=
"",=0A=
ACE_TRY_ENV);=0A=
ACE_CHECK;=0A=
=0A=
CORBA::Object_ptr poa_object =3D=0A=
this->orb_->resolve_initial_references("RootPOA", ACE_TRY_ENV);=0A=
ACE_CHECK;=0A=
=0A=
if (CORBA::is_nil(poa_object))=0A=
{=0A=
ACE_ERROR((LM_ERROR, "(%P|%t) Unable to initialize the =
POA.\n"));=0A=
return;=0A=
}=0A=
=0A=
this->root_poa_ =3D PortableServer::POA::_narrow(poa_object, =
ACE_TRY_ENV);=0A=
ACE_CHECK;=0A=
=0A=
PortableServer::POAManager_var poa_manager =3D =0A=
=
root_poa_->the_POAManager(ACE_TRY_ENV);=0A=
ACE_CHECK;=0A=
=0A=
poa_manager->activate(ACE_TRY_ENV);=0A=
ACE_CHECK;=0A=
}=0A=
=0A=
void=0A=
SupplierClient::resolve_naming_service(CORBA::Environment =
&ACE_TRY_ENV)=0A=
{=0A=
CORBA::Object_var naming_obj =3D=0A=
=
this->orb_->resolve_initial_references(NAMING_SERVICE_NAME,=0A=
=
ACE_TRY_ENV);=0A=
ACE_CHECK;=0A=
=0A=
if (CORBA::is_nil(naming_obj.in()))=0A=
ACE_THROW(CORBA::UNKNOWN());=0A=
=0A=
this->naming_context_ =3D=0A=
CosNaming::NamingContext::_narrow(naming_obj.in(), =
ACE_TRY_ENV);=0A=
ACE_CHECK;=0A=
}=0A=
=0A=
void=0A=
SupplierClient::resolve_Notify_factory(CORBA::Environment =
&ACE_TRY_ENV)=0A=
{=0A=
CosNaming::Name name(1);=0A=
=0A=
name.length(1);=0A=
=0A=
name[0].id =3D CORBA::string_dup(NOTIFY_FACTORY_NAME);=0A=
=0A=
CORBA::Object_var obj =3D this->naming_context_->resolve(name, =
ACE_TRY_ENV);=0A=
ACE_CHECK;=0A=
=0A=
this->notify_factory_ =3D =
CosNotifyChannelAdmin::EventChannelFactory::_narrow(=0A=
=
obj.in(),=0A=
=
ACE_TRY_ENV);=0A=
ACE_CHECK;=0A=
}=0A=
=0A=
void=0A=
SupplierClient::create_EC(CORBA::Environment &ACE_TRY_ENV)=0A=
{=0A=
CosNaming::Name name(1);=0A=
=0A=
name.length(1);=0A=
=0A=
name[0].id =3D CORBA::string_dup(EVENT_CHANNEL_NAME);=0A=
=0A=
CORBA::Object_var obj =3D this->naming_context_->resolve(name, =
ACE_TRY_ENV);=0A=
=0A=
if (ACE_TRY_ENV.exception() !=3D 0)=0A=
ACE_TRY_ENV.clear();=0A=
=0A=
if (!CORBA::is_nil(obj.in()))=0A=
{=0A=
ec_ =3D CosNotifyChannelAdmin::EventChannel::_narrow(obj.in(), =
ACE_TRY_ENV);=0A=
ACE_CHECK;=0A=
}=0A=
=0A=
else=0A=
{=0A=
CosNotifyChannelAdmin::ChannelID id;=0A=
=0A=
ec_ =3D notify_factory_->create_channel(initial_qos_,=0A=
initial_admin_,=0A=
id,=0A=
ACE_TRY_ENV);=0A=
=0A=
this->naming_context_->bind(name, ec_, ACE_TRY_ENV);=0A=
ACE_CHECK;=0A=
}=0A=
=0A=
ACE_ASSERT(!CORBA::is_nil(ec_.in()));=0A=
=0A=
cout << orb_->object_to_string(ec_) << endl;=0A=
}=0A=
=0A=
void=0A=
SupplierClient::create_supplieradmin(CORBA::Environment =
&ACE_TRY_ENV)=0A=
{=0A=
CosNotifyChannelAdmin::AdminID adminid =3D 0;=0A=
=0A=
supplier_admin_ =3D =0A=
ec_->new_for_suppliers(this->ifgop_, adminid, =
ACE_TRY_ENV);=0A=
ACE_CHECK;=0A=
=0A=
ACE_ASSERT(!CORBA::is_nil(supplier_admin_.in()));=0A=
=0A=
/*=0A=
CosNotifyFilter::FilterFactory_var ffact =3D =0A=
=
ec_->default_filter_factory(ACE_TRY_ENV);=0A=
ACE_CHECK;=0A=
=0A=
CosNotifyFilter::Filter_var sa_filter =3D ffact->create_filter(TCL_GRA=
MMAR, =0A=
=
ACE_TRY_ENV);=0A=
ACE_CHECK;=0A=
=0A=
ACE_ASSERT(!CORBA::is_nil(sa_filter.in()));=0A=
=0A=
CosNotifyFilter::ConstraintExpSeq constraint_list(1);=0A=
=0A=
constraint_list.length(1);=0A=
=0A=
constraint_list[0].event_types.length(0);=0A=
=0A=
constraint_list[0].constraint_expr =3D =
CORBA::string_dup(SA_FILTER);=0A=
=0A=
sa_filter->add_constraints(constraint_list, ACE_TRY_ENV);=0A=
ACE_CHECK;=0A=
=0A=
supplier_admin_->add_filter(sa_filter.in(), ACE_TRY_ENV);=0A=
ACE_CHECK;=0A=
*/=0A=
}=0A=
=0A=
void=0A=
SupplierClient::create_supplier(CORBA::Environment &ACE_TRY_ENV)=0A=
{=0A=
ACE_NEW_THROW_EX(supplier,=0A=
Supplier_StructuredPushSupplier("supplier"),=0A=
CORBA::NO_MEMORY());=0A=
=0A=
supplier->connect(supplier_admin_.in(), ACE_TRY_ENV);=0A=
ACE_CHECK;=0A=
}=0A=
=0A=
void=0A=
SupplierClient::send_events(CORBA::Environment &ACE_TRY_ENV)=0A=
{=0A=
CosNotification::StructuredEvent event;=0A=
=0A=
event.header.fixed_header.event_type.domain_name =3D =
CORBA::string_dup("*");=0A=
=0A=
event.header.fixed_header.event_type.type_name =3D =
CORBA::string_dup("*");=0A=
=0A=
event.header.fixed_header.event_name =3D =
CORBA::string_dup("myevent");=0A=
=0A=
event.header.variable_header.length(1);=0A=
=0A=
event.filterable_data.length(3);=0A=
=0A=
event.filterable_data[0].name =3D CORBA::string_dup("threshold");=0A=
=0A=
event.filterable_data[1].name =3D =
CORBA::string_dup("temperature");=0A=
=0A=
event.filterable_data[1].value <<=3D(CORBA::Long)70;=0A=
=0A=
event.filterable_data[2].name =3D CORBA::string_dup("pressure");=0A=
=0A=
event.filterable_data[2].value <<=3D(CORBA::Long)80;=0A=
=0A=
event.filterable_data[0].value <<=3D(CORBA::Long)4;=0A=
=0A=
event.remainder_of_body <<=3D(CORBA::Long)4;=0A=
=0A=
while (1)=0A=
{=0A=
int i =3D 0;=0A=
=0A=
char c;=0A=
=0A=
cout << "Send an event [y|n]: ";=0A=
=0A=
cin >> c;=0A=
=0A=
if (c =3D=3D 'y')=0A=
{=0A=
event.filterable_data[0].value <<=3D(CORBA::Long)i;=0A=
=0A=
event.remainder_of_body <<=3D(CORBA::Long)i++;=0A=
=0A=
supplier->send_event(event, ACE_TRY_ENV);=0A=
=0A=
ACE_CHECK;=0A=
}=0A=
=0A=
else=0A=
break;=0A=
}=0A=
}=0A=
=0A=
=0A=
Supplier_StructuredPushSupplier::Supplier_StructuredPushSupplier(=0A=
const char* =
my_name) :=0A=
my_name_(my_name)=0A=
{=0A=
}=0A=
=0A=
Supplier_StructuredPushSupplier::~Supplier_StructuredPushSupplier()=0A=
{=0A=
}=0A=
=0A=
void=0A=
Supplier_StructuredPushSupplier::connect(=0A=
CosNotifyChannelAdmin::SupplierAdmin_ptr =
supplier_admin, =0A=
CORBA::Environment &ACE_TRY_ENV)=0A=
{=0A=
CosNotifyComm::StructuredPushSupplier_var objref =3D =
this->_this(ACE_TRY_ENV);=0A=
ACE_CHECK;=0A=
=0A=
CosNotifyChannelAdmin::ProxyConsumer_var proxyconsumer =3D=0A=
supplier_admin->obtain_notification_push_consumer(=0A=
CosNotifyChannelAdmin::STRUCTURED_EVENT, =0A=
proxy_consumer_id_, ACE_TRY_ENV);=0A=
ACE_CHECK;=0A=
=0A=
ACE_ASSERT(!CORBA::is_nil(proxyconsumer.in()));=0A=
=0A=
this->proxy_consumer_ =3D=0A=
CosNotifyChannelAdmin::StructuredProxyPushConsumer::_narrow(=0A=
proxyconsumer.in(), =0A=
ACE_TRY_ENV);=0A=
ACE_CHECK;=0A=
=0A=
ACE_ASSERT(!CORBA::is_nil(proxy_consumer_.in()));=0A=
=0A=
proxy_consumer_->connect_structured_push_supplier(objref.in(),=0A=
ACE_TRY_ENV);=0A=
ACE_CHECK;=0A=
}=0A=
=0A=
void=0A=
Supplier_StructuredPushSupplier::disconnect(CORBA::Environment =
&ACE_TRY_ENV)=0A=
{=0A=
ACE_ASSERT(!CORBA::is_nil(this->proxy_consumer_.in()));=0A=
=0A=
=
this->proxy_consumer_->disconnect_structured_push_consumer(ACE_TRY_ENV);=
=0A=
}=0A=
=0A=
void=0A=
Supplier_StructuredPushSupplier::subscription_change(=0A=
const CosNotification::EventTypeSeq & =
/*added*/, =0A=
const CosNotification::EventTypeSeq & =
/*removed */, =0A=
CORBA::Environment & /*ACE_TRY_ENV*/)=0A=
ACE_THROW_SPEC((CORBA::SystemException, =
CosNotifyComm::InvalidEventType))=0A=
{=0A=
//No-Op.=0A=
}=0A=
=0A=
void=0A=
Supplier_StructuredPushSupplier::send_event(const =
CosNotification::StructuredEvent& event, CORBA::Environment =
&ACE_TRY_ENV)=0A=
{=0A=
ACE_ASSERT(!CORBA::is_nil(this->proxy_consumer_.in()));=0A=
=0A=
ACE_DEBUG((LM_DEBUG,=0A=
"%s is sending an event \n", my_name_.fast_rep()));=0A=
=0A=
proxy_consumer_->push_structured_event(event, ACE_TRY_ENV);=0A=
ACE_CHECK;=0A=
}=0A=
=0A=
void=0A=
Supplier_StructuredPushSupplier::disconnect_structured_push_supplier(=0A=
CORBA::Environment =
&/*ACE_TRY_ENV*/)=0A=
ACE_THROW_SPEC((CORBA::SystemException))=0A=
{=0A=
// No-Op.=0A=
}=0A=
------_=_NextPart_000_01C121E1.33F1FE20--
: ------_=_NextPart_000_01C121E1.33F1FE20
: Content-Type: text/plain;
: charset="iso-8859-1"
: Does anyone have any idea why when a call is made to the
: subscription_change() method that is a member of the ConsumerAdmin
: interface it would block until a few events are sent in to the
: channel by a supplier?
Hi Everybody,
I'm experiencing a similar problem with the 1.1.18 Notification
Service on linux 2.2.19 and win 2000 . In my java client,
subscription_change often (4/5 times) hangs indefinately. If I kill
the client and restart it, the subscription_change goes ok but the
Notification Service is put in some incorrect state. Notifications
take a minimum of 1100 ms to an upwards of 20 seconds to propagate
from one supplier to one consumer. Also, "Exception dispatching
structured event" is printed for every event dispatched from
Notify_StructuredProxyPushSupplier_i.cpp line 82. Beneath this line is
a comment "// misbehaving client, ignore for now". What does the
comment mean? If the subscription_change goes ok the first time, no
problems are encountered.
I've also having problems with ConsumerAdmin destroy(). The method
never returns. The LifeCycle test works perfectly though. No test
checks if ConsumerAdmin can shutdown and implicitly their
proxies. SupplierAdmin destroy() seems to work.
Is the -colocated_ec command line option for
orbsvcs/tests/Notify/performance/Throughput working? This segfaults
everytime I run it. Thanks - Ethan