Changeset 312 for XIOS/trunk/src/fortran/icdata.cpp
- Timestamp:
- 02/14/12 15:36:14 (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS/trunk/src/fortran/icdata.cpp
r300 r312 84 84 } 85 85 86 87 void cxios_dtreatment_start() 88 { 89 using namespace xmlioserver::tree; 90 using namespace xmlioserver; 91 try 92 { 93 MPI_Comm comm_client_server=comm::CMPIManager::GetCommClientServer() ; 94 MPI_Comm comm_server=comm::CMPIManager::GetCommServer() ; 95 96 boost::shared_ptr<CContext> context = 97 CObjectFactory::GetObject<CContext>(CObjectFactory::GetCurrentContextId()); 98 99 StdOStringStream oss; 100 oss << StdString("def_client_next.") 101 << CMPIManager::GetCommRank(CMPIManager::GetCommClient()); 102 CTreeManager::PrintTreeToFile(oss.str()); 103 oss.str(""); 104 boost::shared_ptr<CDataTreatment> dt(new CDataTreatment (context)); 105 context->setDataTreatment(dt); 106 107 oss << StdString("def_client_end.") 108 << CMPIManager::GetCommRank(CMPIManager::GetCommClient()); 109 CTreeManager::PrintTreeToFile(oss.str()); 110 111 if ( !comm::CMPIManager::IsConnected() ) 112 { 113 MPI_Request request = 0; 114 StdOStringStream ostrs; 115 116 CTreeManager::ToBinary(ostrs); 117 CLinearBuffer lbuffer(ostrs.str().size()+CBuffer::getDataHeaderSize()); 118 lbuffer.appendString(ostrs.str()); 119 CMPIManager::SendLinearBuffer(comm_client_server, 0, lbuffer, request); 120 CMPIManager::Wait(request); // Pas encore en mode RPC 121 122 123 CXIOSManager::RunClient(false, CMPIManager::GetCommClient()); 124 CClient::CreateClient(CMPIManager::GetCommClientServer()); 125 } 126 else 127 { 128 dt->createDataOutput<CNc4DataOutput>(CMPIManager::GetCommClient()); 129 } 130 } 131 catch (CException & exc) 132 { 133 std::cerr << exc.getMessage() << std::endl; 134 exit (EXIT_FAILURE); 135 } 136 } 137 138 void cxios_dtreatment_end(void) 139 { 140 try 141 { 142 boost::shared_ptr<xmlioserver::tree::CContext> context = 143 xmlioserver::CObjectFactory::GetObject<xmlioserver::tree::CContext> 144 (CObjectFactory::GetCurrentContextId()); 145 boost::shared_ptr<xmlioserver::data::CDataTreatment> dtreat = context->getDataTreatment(); 146 dtreat->finalize(); 147 148 // CMPIManager::Finalize(); 149 } 150 catch (CException & exc) 151 { 152 std::cerr << exc.getMessage() << std::endl; 153 exit (EXIT_FAILURE); 154 } 155 } 156 157 // ---------------------- Finalize du serveur ------------------------- 158 159 void cxios_finalize_ioserver(void) 160 { 161 try 162 { 163 CMPIManager::Finalize(); 164 } 165 catch (CException & exc) 166 { 167 std::cerr << exc.getMessage() << std::endl; 168 exit (EXIT_FAILURE); 169 } 170 } 171 172 // ---------------------- Initialisation du serveur ------------------------- 173 174 void cxios_init_ioserver(MPIComm * f_comm_client, MPIComm * f_comm_parent) 175 { 176 try 177 { 178 MPI_Comm comm_client_server, comm_server,comm_client,comm_parent; 179 xmlioserver::CTreeManager::ParseFile("iodef.xml"); 180 CTreeManager::SetCurrentContextId(StdString("xios")); 181 CMPIManager::InitialiseClient(NULL, NULL); 182 comm_parent=MPI_Comm_f2c(*f_comm_parent) ; 183 CMPIManager::DispatchClient(false, comm_client, comm_client_server, comm_server,comm_parent); 184 *f_comm_client=MPI_Comm_c2f(comm_client) ; 185 } 186 catch (CException & exc) 187 { 188 std::cerr << exc.getMessage() << std::endl; 189 exit (EXIT_FAILURE); 190 } 191 } 86 192 87 193 88 // ---------------------- Ecriture des données ------------------------------
Note: See TracChangeset
for help on using the changeset viewer.