2 #include "SALOMEDispatcher.hxx"
8 using namespace YACS::BASES;
9 using namespace YACS::ENGINE;
11 map< pair<int,string> , set<YACSGui_ORB::Observer_ptr> > SALOMEDispatcher::_observers;
12 SALOMEDispatcher* SALOMEDispatcher::_disp = 0;
14 SALOMEDispatcher::SALOMEDispatcher()
18 SALOMEDispatcher::~SALOMEDispatcher()
22 void SALOMEDispatcher::setSALOMEDispatcher()
24 cerr << "SALOMEDispatcher::setSALOMEDispatcher" << endl;
25 _disp=new SALOMEDispatcher();
26 YACS::ENGINE::Dispatcher::setDispatcher(_disp);
29 SALOMEDispatcher* SALOMEDispatcher::getSALOMEDispatcher()
34 void SALOMEDispatcher::dispatch(Node* object, const std::string& event)
36 cerr << "SALOMEDispatcher::dispatch " << event << " " << object->getNumId() << endl;
37 CORBA::Long numId = object->getNumId();
38 typedef set<YACSGui_ORB::Observer_ptr>::iterator jt;
39 std::pair<int,std::string> key(numId, event);
40 for(jt iter = _observers[key].begin(); iter!=_observers[key].end(); iter++)
42 if (! CORBA::is_nil(*iter))
44 cerr << "numId, event " << numId << " " << event << endl;
45 (*iter)->notifyObserver(numId, event.c_str());
48 cerr << "************************** dispatch on a CORBA::nil *******************************" <<endl;
52 void SALOMEDispatcher::addObserver(YACSGui_ORB::Observer_ptr observer,
56 _observers[std::pair<int,std::string>(numid,event)].insert(YACSGui_ORB::Observer::_duplicate(observer));