void CIMListenerIndicationDispatcherRep::deliverIndication(String url, CIMInstance instance, ContentLanguageList contentLangs) { // go thru all consumers and broadcast the result; // should be run in seperate thread AutoPtr<Iterator> it( _consumers->iterator() ); while(it->hasNext()==true) { CIMIndicationConsumer* consumer = static_cast<CIMIndicationConsumer*>(it->next()); CIMListenerIndicationDispatchEvent* event = new CIMListenerIndicationDispatchEvent(consumer, url, instance, contentLangs); ThreadStatus rtn = _thread_pool->allocate_and_awaken( event,deliver_routine); if (rtn != PEGASUS_THREAD_OK) { PEG_TRACE_CSTRING( TRC_SERVER, Tracer::LEVEL1, "Could not allocate thread to deliver event." " Instead using current thread."); delete event; throw Exception(MessageLoaderParms( "Listener.CIMListenerIndicationDispatcher." "CANNOT_ALLOCATE_THREAD", "Not enough threads to allocate a worker to deliver the" " event.")); } } }