PaCO++
0.05
|
#include <PaCO++_src.h>
Public Member Functions | |
virtual void | finish ()=0 |
virtual CORBA::Short | getClientId ()=0 |
virtual PaCO::ConnectionInfos * | getConnectionInfos () |
virtual char * | getReturn () |
InterfaceManager_impl (CORBA::ORB_ptr current_orb) | |
virtual void | return_ok (const CORBA::Short client_id) |
virtual void | setConnectionInfos () |
virtual void | setNewNode (const char *node, const CORBA::Short rank) |
virtual void | setReturn (const char *ref) |
void | setReturn (int rtn) |
virtual void | setTopo (const PaCO::PacoTopology_t &topo) |
virtual void | setTotalNode (CORBA::Short totalNode) |
virtual void | setWorkNode (CORBA::Short totalNode) |
virtual void | updateContexts ()=0 |
virtual | ~InterfaceManager_impl () |
Protected Attributes | |
CORBA::Short | _current_uid |
PaCO::ConnectionInfos | _informations |
PaCO::ConnectionInfos | _informations_temp |
PaCO::ConnectionInfos::_nodes_seq | _nodes |
CORBA::ORB_ptr | _orb |
int | _rtn |
CORBA::Short | _totalNode |
CORBA::Short | _totalNodeReceived |
CORBA::Short | _workNode |
string | return_str |
PaCO::PacoTopology_t | serveur_topo |
Definition at line 17 of file PaCO++_src.h.
InterfaceManager_impl::InterfaceManager_impl | ( | CORBA::ORB_ptr | current_orb | ) |
Definition at line 41 of file PaCO++_src.cc.
References _current_uid, _orb, _rtn, _totalNode, _totalNodeReceived, and _workNode.
{ _orb = current_orb; _current_uid = 0; _totalNode = -1; _workNode = -1; _totalNodeReceived = 0; _rtn = 0; // normal }
InterfaceManager_impl::~InterfaceManager_impl | ( | ) | [virtual] |
Definition at line 51 of file PaCO++_src.cc.
{}
virtual void InterfaceManager_impl::finish | ( | ) | [pure virtual] |
Referenced by setConnectionInfos(), and setNewNode().
virtual CORBA::Short InterfaceManager_impl::getClientId | ( | ) | [pure virtual] |
PaCO::ConnectionInfos * InterfaceManager_impl::getConnectionInfos | ( | ) | [virtual] |
Definition at line 251 of file PaCO++_src.cc.
References _current_uid, _informations, and PaCO::ConnectionInfos::request_uid.
{ // cerr << "In "<<__FUNCTION__ << ":"<<(void*)this<<endl; _current_uid++; _informations.request_uid = _current_uid; PaCO::ConnectionInfos* retour = new PaCO::ConnectionInfos(_informations); // cerr << "Out "<<__FUNCTION__ << ":"<<(void*)this<<endl; return retour; }
char * InterfaceManager_impl::getReturn | ( | ) | [virtual] |
Definition at line 151 of file PaCO++_src.cc.
References return_str.
{ // cerr << " Return string : " << return_str << endl; char * p = new char[return_str.length()+1]; return_str.copy(p,string::npos); p[return_str.length()]=0; // return (char *) return_str.c_str(); return p; }
void InterfaceManager_impl::return_ok | ( | const CORBA::Short | client_id | ) | [virtual] |
Definition at line 168 of file PaCO++_src.cc.
References _nodes, _orb, and _workNode.
{ CORBA::ULong i; CORBA::Object_var object; PaCO::InterfaceParallel_var interface; CORBA::ULong lgth; if (_workNode == -1) { lgth = _nodes.length();} else { lgth = _workNode;} cerr << "Adding a new client !!!!" << endl; // cerr << "WARNING : in this version PaCO++ only plays with the last client !" << endl; for (i = 0; i<lgth; i++) { //cerr << "Init work node : " << i << endl; object = _orb->string_to_object(_nodes[i]); interface = PaCO::InterfaceParallel::_narrow(object); interface->connect_return_object(client_id); } }
void InterfaceManager_impl::setConnectionInfos | ( | ) | [virtual] |
Definition at line 188 of file PaCO++_src.cc.
References _informations, _nodes, _orb, _rtn, _workNode, finish(), and PaCO::ConnectionInfos::serveur_topo.
Referenced by setNewNode().
{ if (_rtn == 1) cerr << "Return Proxy : Deploy the parallel CORBA object" << endl; else cerr << "Deploy the parallel CORBA object" << endl; // Initialize the nodes CORBA::Object_var object; PaCO::InterfaceParallel_var interface; if (_workNode == -1) { if (_rtn == 1) cerr << "Return Proxy : Deploying all the nodes" << endl; else cerr << "Deploying all the nodes" << endl; for ( CORBA::ULong i = 0; i<_nodes.length(); i++) { if (_rtn == 1) cerr << "Return Proxy : Deploying node : " << i << endl; else cerr << "Deploying node : " << i << endl; object = _orb->string_to_object(_nodes[i]); interface = PaCO::InterfaceParallel::_narrow(object); interface->init_InterfaceParallel(i,_nodes.length(), _informations.serveur_topo); if (_rtn == 0) { cerr << "Exception handling part..." << endl; PaCO::InterfaceParallel::ref ref_nodes; ref_nodes.length(_nodes.length()); for (CORBA::ULong j = 0; j<_nodes.length(); j++) { ref_nodes[j] = _nodes[j]; } interface->setRef(ref_nodes); cerr << "Exception handling part...done" << endl; } } } else { cerr << "Deploying " << _workNode << " nodes" << endl; for ( CORBA::Long i = 0; i<_workNode; i++) { cerr << "Deploying node : " << i << endl; object = _orb->string_to_object(_nodes[i]); interface = PaCO::InterfaceParallel::_narrow(object); interface->init_InterfaceParallel(i,_nodes.length(), _informations.serveur_topo); } } if (_rtn == 0) { // connecting the client to the interface manager cerr << "Finishing...\n"; this->finish(); cerr << "Finishing...done\n"; } }
void InterfaceManager_impl::setNewNode | ( | const char * | node, |
const CORBA::Short | rank | ||
) | [virtual] |
Definition at line 88 of file PaCO++_src.cc.
References _informations, _informations_temp, _nodes, _rtn, _totalNode, _totalNodeReceived, finish(), PaCO::ConnectionInfos::nodes, PaCO::ConnectionInfos::serveur_topo, and setConnectionInfos().
{ try { //CORBA::Object_var object = _orb->string_to_object(node); //PaCO::InterfaceParallel_var interface = PaCO::InterfaceParallel::_narrow(object); // CORBA::Short rank = interface->getDeployRank(); if (_rtn == 1) cerr << "Return Proxy : Adding node : " << rank << endl; else cerr << "Adding node : " << rank << endl; // _informations_temp.nodes[_totalNodeReceived] = node; _informations_temp.nodes[rank] = node; _totalNodeReceived++; if (_totalNodeReceived == _totalNode) { if (_rtn == 1) cerr << "Return Proxy : All the node are registered" << endl; else cerr << "All the node are registered" << endl; _nodes = _informations_temp.nodes; _informations.nodes = _nodes; _informations.serveur_topo = _informations_temp.serveur_topo; if (_rtn == 1) { // connection for the server side this->finish(); } _totalNodeReceived = 0; setConnectionInfos(); } } catch (const CORBA::Exception & e) { cerr << " Node : " << node << endl; cerr << " InterfaceManager_impl::setNewNode : Exception : " << e << endl; } }
void InterfaceManager_impl::setReturn | ( | const char * | ref | ) | [virtual] |
Definition at line 132 of file PaCO++_src.cc.
References _nodes, _orb, _workNode, and return_str.
{ return_str = (char *) ref; // Now we have to give this reference to all the nodes CORBA::ULong i; CORBA::Object_var object; PaCO::InterfaceParallel_var interface; CORBA::ULong lgth; if (_workNode == -1) { lgth = _nodes.length();} else { lgth = _workNode;} for (i = 0; i<lgth; i++) { object = _orb->string_to_object(_nodes[i]); interface = PaCO::InterfaceParallel::_narrow(object); interface->refReturnObject(return_str.c_str()); } }
void InterfaceManager_impl::setReturn | ( | int | rtn | ) |
void InterfaceManager_impl::setTopo | ( | const PaCO::PacoTopology_t & | topo | ) | [virtual] |
obsolete
Definition at line 75 of file PaCO++_src.cc.
References serveur_topo, setTotalNode(), and PaCO::PacoTopology_s::total.
{ serveur_topo = topo; setTotalNode(topo.total); }
void InterfaceManager_impl::setTotalNode | ( | CORBA::Short | totalNode | ) | [virtual] |
Definition at line 60 of file PaCO++_src.cc.
References _informations, _informations_temp, _totalNode, PaCO::ConnectionInfos::nodes, PaCO::ConnectionInfos::serveur_topo, PaCO::PacoTopology_s::total, and updateContexts().
Referenced by setTopo().
{ if (totalNode > 0) { _totalNode = totalNode; // Init de _informations_temp; _informations_temp.nodes.length(_totalNode); _informations_temp.serveur_topo.total = _totalNode; _informations.nodes.length(_totalNode); _informations.serveur_topo.total= _totalNode; } updateContexts(); }
void InterfaceManager_impl::setWorkNode | ( | CORBA::Short | totalNode | ) | [virtual] |
virtual void InterfaceManager_impl::updateContexts | ( | ) | [pure virtual] |
Referenced by setTotalNode().
CORBA::Short InterfaceManager_impl::_current_uid [protected] |
Definition at line 48 of file PaCO++_src.h.
Referenced by getConnectionInfos(), and InterfaceManager_impl().
Definition at line 52 of file PaCO++_src.h.
Referenced by getConnectionInfos(), setConnectionInfos(), setNewNode(), and setTotalNode().
Definition at line 53 of file PaCO++_src.h.
Referenced by setNewNode(), and setTotalNode().
PaCO::ConnectionInfos::_nodes_seq InterfaceManager_impl::_nodes [protected] |
Definition at line 47 of file PaCO++_src.h.
Referenced by return_ok(), setConnectionInfos(), setNewNode(), and setReturn().
CORBA::ORB_ptr InterfaceManager_impl::_orb [protected] |
Definition at line 46 of file PaCO++_src.h.
Referenced by InterfaceManager_impl(), return_ok(), setConnectionInfos(), and setReturn().
int InterfaceManager_impl::_rtn [protected] |
Definition at line 56 of file PaCO++_src.h.
Referenced by InterfaceManager_impl(), setConnectionInfos(), setNewNode(), and setReturn().
CORBA::Short InterfaceManager_impl::_totalNode [protected] |
Definition at line 49 of file PaCO++_src.h.
Referenced by InterfaceManager_impl(), setNewNode(), and setTotalNode().
CORBA::Short InterfaceManager_impl::_totalNodeReceived [protected] |
Definition at line 50 of file PaCO++_src.h.
Referenced by InterfaceManager_impl(), and setNewNode().
CORBA::Short InterfaceManager_impl::_workNode [protected] |
Definition at line 51 of file PaCO++_src.h.
Referenced by InterfaceManager_impl(), return_ok(), setConnectionInfos(), setReturn(), and setWorkNode().
string InterfaceManager_impl::return_str [protected] |
Definition at line 55 of file PaCO++_src.h.
Referenced by getReturn(), and setReturn().
Definition at line 54 of file PaCO++_src.h.
Referenced by setTopo().