Changeset 286 for XMLIO_V2/dev/common/src/xmlio/fortran/icdata.cpp
- Timestamp:
- 10/21/11 19:01:35 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
XMLIO_V2/dev/common/src/xmlio/fortran/icdata.cpp
r278 r286 5 5 #include <boost/multi_array.hpp> 6 6 #include <boost/shared_ptr.hpp> 7 #include <string> 8 #include <iostream> 9 7 10 8 11 #include "xmlioserver.hpp" 12 #include "oasis_cinterface.hpp" 9 13 10 14 #include "attribute_template_impl.hpp" … … 13 17 14 18 #include "icutil.hpp" 19 #include "mpi_manager.hpp" 20 #include "buffer.hpp" 15 21 16 22 extern "C" … … 26 32 // -------------------- Traitement des données ------------------------------ 27 33 28 void xios_dtreatment_start(XContextPtr context_hdl, XFileType filetype, int comm_client_server, int comm_server)34 void cxios_dtreatment_start() 29 35 { 30 36 using namespace xmlioserver::tree; … … 32 38 try 33 39 { 40 MPI_Comm comm_client_server=comm::CMPIManager::GetCommClientServer() ; 41 MPI_Comm comm_server=comm::CMPIManager::GetCommServer() ; 42 34 43 boost::shared_ptr<CContext> context = 35 CObjectFactory::GetObject<CContext>(context_hdl); 44 CObjectFactory::GetObject<CContext>(CObjectFactory::GetCurrentContextId()); 45 36 46 StdOStringStream oss; 37 47 oss << StdString("def_client_next.") 38 << CMPIManager::GetCommRank(CMPIManager::GetComm World());48 << CMPIManager::GetCommRank(CMPIManager::GetCommClient()); 39 49 CTreeManager::PrintTreeToFile(oss.str()); 40 50 oss.str(""); … … 43 53 44 54 oss << StdString("def_client_end.") 45 << CMPIManager::GetCommRank(CMPIManager::GetComm World());55 << CMPIManager::GetCommRank(CMPIManager::GetCommClient()); 46 56 CTreeManager::PrintTreeToFile(oss.str()); 47 57 48 if ( (comm_client_server != -1))58 if ( !comm::CMPIManager::IsConnected() ) 49 59 { 50 60 MPI_Request request = 0; 51 61 StdOStringStream ostrs; 62 /* 52 63 if (CMPIManager::GetCommRank(comm_client_server) == 1) 53 64 { 54 65 CTreeManager::ToBinary(ostrs); 55 CLinearBuffer lbuffer(ostrs.str().size()+13); 66 CLinearBuffer lbuffer(ostrs.str().size()+CBuffer::getDataHeaderSize()); 67 std::cout<<"lbuffer size "<<ostrs.str().size()<<std::endl ; 56 68 lbuffer.appendString(ostrs.str()); 57 69 CMPIManager::SendLinearBuffer(comm_client_server, 0, lbuffer, request); … … 61 73 { 62 74 CTreeManager::DomainsToBinary(ostrs); 63 CLinearBuffer lbuffer(ostrs.str().size()+13); 75 CLinearBuffer lbuffer(ostrs.str().size()+CBuffer::getDataHeaderSize()); 76 std::cout<<"lbuffer size "<<ostrs.str().size()<<std::endl ; 64 77 lbuffer.appendString(ostrs.str()); 65 78 CMPIManager::SendLinearBuffer(comm_client_server, 0, lbuffer, request); 66 79 CMPIManager::Wait(request); // Pas encore en mode RPC 67 80 } 68 CXIOSManager::RunClient(false, CMPIManager::GetCommWorld()); 69 CClient::CreateClient(comm_client_server); 81 */ 82 CTreeManager::ToBinary(ostrs); 83 CLinearBuffer lbuffer(ostrs.str().size()+CBuffer::getDataHeaderSize()); 84 lbuffer.appendString(ostrs.str()); 85 CMPIManager::SendLinearBuffer(comm_client_server, 0, lbuffer, request); 86 CMPIManager::Wait(request); // Pas encore en mode RPC 87 88 89 CXIOSManager::RunClient(false, CMPIManager::GetCommClient()); 90 CClient::CreateClient(CMPIManager::GetCommClientServer()); 70 91 } 71 92 else 72 93 { 73 dt->createDataOutput<CNc4DataOutput>(CMPIManager::GetComm World());94 dt->createDataOutput<CNc4DataOutput>(CMPIManager::GetCommClient()); 74 95 } 75 96 } … … 81 102 } 82 103 83 void xios_dtreatment_end(void) 104 void cxios_dtreatment_end(void) 105 { 106 try 107 { 108 boost::shared_ptr<xmlioserver::tree::CContext> context = 109 xmlioserver::CObjectFactory::GetObject<xmlioserver::tree::CContext> 110 (CObjectFactory::GetCurrentContextId()); 111 boost::shared_ptr<xmlioserver::data::CDataTreatment> dtreat = context->getDataTreatment(); 112 dtreat->finalize(); 113 114 // CMPIManager::Finalize(); 115 } 116 catch (CException & exc) 117 { 118 std::cerr << exc.getMessage() << std::endl; 119 exit (EXIT_FAILURE); 120 } 121 } 122 123 // ---------------------- Finalize du serveur ------------------------- 124 125 void cxios_finalize_ioserver(void) 84 126 { 85 127 try … … 92 134 exit (EXIT_FAILURE); 93 135 } 94 }136 } 95 137 96 138 // ---------------------- Initialisation du serveur ------------------------- 97 139 98 void xios_init_ioserver(MPIComm * comm_client) 99 { 100 try 101 { 102 MPIComm comm_client_server, comm_server; 103 CMPIManager::Initialise(NULL, NULL); 104 CMPIManager::DispatchClient(false, *comm_client, comm_client_server, comm_server); 140 void cxios_init_ioserver(MPIComm * f_comm_client, MPIComm * f_comm_parent) 141 { 142 try 143 { 144 MPI_Comm comm_client_server, comm_server,comm_client,comm_parent; 145 xmlioserver::CTreeManager::ParseFile("iodef.xml"); 146 CTreeManager::SetCurrentContextId(StdString("xios")); 147 CMPIManager::InitialiseClient(NULL, NULL); 148 comm_parent=MPI_Comm_f2c(*f_comm_parent) ; 149 CMPIManager::DispatchClient(false, comm_client, comm_client_server, comm_server,comm_parent); 150 *f_comm_client=MPI_Comm_c2f(comm_client) ; 105 151 } 106 152 catch (CException & exc) … … 113 159 // ---------------------- Ecriture des données ------------------------------ 114 160 115 void xios_write_data_k81(const char * fieldid, int fieldid_size, double * data_k8, int data_Xsize)161 void cxios_write_data_k81(const char * fieldid, int fieldid_size, double * data_k8, int data_Xsize) 116 162 { 117 163 std::string fieldid_str; … … 129 175 } 130 176 131 void xios_write_data_k82(const char * fieldid, int fieldid_size, double * data_k8, int data_Xsize, int data_Ysize)177 void cxios_write_data_k82(const char * fieldid, int fieldid_size, double * data_k8, int data_Xsize, int data_Ysize) 132 178 { 133 179 std::string fieldid_str; … … 145 191 } 146 192 147 void xios_write_data_k83(const char * fieldid, int fieldid_size, double * data_k8, int data_Xsize, int data_Ysize, int data_Zsize)193 void cxios_write_data_k83(const char * fieldid, int fieldid_size, double * data_k8, int data_Xsize, int data_Ysize, int data_Zsize) 148 194 { 149 195 std::string fieldid_str; … … 161 207 } 162 208 163 void xios_write_data_k41(const char * fieldid, int fieldid_size, float * data_k4, int data_Xsize)209 void cxios_write_data_k41(const char * fieldid, int fieldid_size, float * data_k4, int data_Xsize) 164 210 { 165 211 std::string fieldid_str; … … 177 223 } 178 224 179 void xios_write_data_k42(const char * fieldid, int fieldid_size, float * data_k4, int data_Xsize, int data_Ysize)225 void cxios_write_data_k42(const char * fieldid, int fieldid_size, float * data_k4, int data_Xsize, int data_Ysize) 180 226 { 181 227 std::string fieldid_str; … … 193 239 } 194 240 195 void xios_write_data_k43(const char * fieldid, int fieldid_size, float * data_k4, int data_Xsize, int data_Ysize, int data_Zsize)241 void cxios_write_data_k43(const char * fieldid, int fieldid_size, float * data_k4, int data_Xsize, int data_Ysize, int data_Zsize) 196 242 { 197 243 std::string fieldid_str;
Note: See TracChangeset
for help on using the changeset viewer.