Ignore:
Timestamp:
06/14/11 16:20:27 (13 years ago)
Author:
hozdoba
Message:
 
File:
1 edited

Legend:

Unmodified
Added
Removed
  • XMLIO_V2/dev/dev_rv/src/xmlio/server.cpp

    r199 r214  
    11#include "server.hpp" 
     2 
     3#include "tree_manager.hpp" 
     4#include "duration.hpp" 
     5#include "data_treatment.hpp" 
    26 
    37namespace xmlioserver { 
     
    1418    
    1519   ///-------------------------------------------------------------- 
     20 
     21   boost::shared_ptr<CServer> CServer::Server; 
     22 
     23   ///-------------------------------------------------------------- 
    1624    
    1725   const CBufferList & CServer::getBufferList(void) const  
    1826   { 
    1927      return (this->blist); 
    20    }    
     28   } 
     29 
     30   ///-------------------------------------------------------------- 
     31 
     32   boost::shared_ptr<CServer> CServer::CreateServer(MPIComm comm_client_server) 
     33   { 
     34      if (CServer::Server.get() != NULL) 
     35         CServer::Server = boost::shared_ptr<CServer>(new CServer(comm_client_server)); 
     36      return (CServer::GetServer()); 
     37   } 
     38 
     39   ///-------------------------------------------------------------- 
     40 
     41   boost::shared_ptr<CServer> CServer::GetServer(void) 
     42   { 
     43      return (CServer::Server); 
     44   } 
    2145    
    2246   //--------------------------------------------------------------- 
     
    7498                  this->updateCalendar(lbuffer); 
    7599                  continue; 
     100               case (2) : 
     101                  this->setTimestep(lbuffer); 
     102                  continue; 
    76103               default  : 
    77104                  ERROR("CServer::run(void)",  
     
    121148       comm::CMPIManager::Barrier(); 
    122149   }    
    123     
     150 
     151   //-------------------------------------------------------------- 
     152 
     153   void CServer::setTimestep(const std::vector<CLinearBuffer> & buffer)// manager 1, method 2 
     154   { 
     155      boost::shared_ptr<CContext> context = 
     156         CObjectFactory::GetObject<CContext>(CObjectFactory::GetCurrentContextId()); 
     157      boost::shared_ptr<data::CDataTreatment> dtreat = context->getDataTreatment(); 
     158 
     159      StdString durationstr; 
     160      for (StdSize i = 0; i < buffer.size(); i++) 
     161      { 
     162         StdString durationstr_ = buffer[i].getString(3); 
     163         if (durationstr.compare(durationstr_) != 0 && (i != 0)) 
     164         { 
     165            ERROR("CServer::setTimestep(const std::vector<CLinearBuffer> & buffer)", 
     166                  << "[ durationstr 1 = " << durationstr   << ", " 
     167                  << "[ durationstr 2 = " << durationstr_  << "] " 
     168                  << " Modification de timestep désynchronisé !"); 
     169         } 
     170         else durationstr = durationstr_; 
     171 
     172      } 
     173      std::cout << "setTimestep called " << durationstr << std::endl; 
     174      dtreat->set_timestep(date::CDuration::FromString(durationstr)); 
     175   } 
     176 
    124177   //-------------------------------------------------------------- 
    125178              
     
    141194      } 
    142195      std::cout << "setContext called " << contextId << std::endl; 
     196      CTreeManager::SetCurrentContextId(contextId); 
    143197   } 
    144198    
     
    147201   void CServer::updateCalendar(const std::vector<CLinearBuffer> & buffer) // manager 1, method 1 
    148202   { 
     203      boost::shared_ptr<CContext> context = 
     204         CObjectFactory::GetObject<CContext>(CObjectFactory::GetCurrentContextId()); 
     205      boost::shared_ptr<data::CDataTreatment> dtreat = context->getDataTreatment(); 
     206 
    149207      int timestep = -1; 
    150208      for (StdSize i = 0; i < buffer.size(); i++) 
     
    161219      } 
    162220      std::cout << "updateCalendar called " << timestep <<std::endl; 
     221      dtreat->update_calendar(timestep); 
    163222   } 
    164223    
     
    167226   void CServer::writeData(const std::vector<CLinearBuffer> & buffer, int prec)  // manager 2, method 0 - 1 
    168227   { 
    169       StdString fieldId; 
     228      boost::shared_ptr<CContext> context = 
     229         CObjectFactory::GetObject<CContext>(CObjectFactory::GetCurrentContextId()); 
     230      boost::shared_ptr<data::CDataTreatment> dtreat = context->getDataTreatment(); 
     231 
     232      StdString fieldId, fileId; 
    170233      for (StdSize i = 0; i < buffer.size(); i++) 
    171234      { 
    172235         StdString fieldId_ = buffer[i].getString(3); 
     236         StdString fileId_ = buffer[i].getString(4); 
     237 
    173238         if (fieldId.compare(fieldId_) != 0 && (i != 0)) 
    174239         {            
     
    178243                  << " Ecriture des données désynchronisée !"); 
    179244         } 
    180          else fieldId = fieldId_;          
     245         else fieldId = fieldId_; 
     246 
     247         if (fileId.compare(fileId_) != 0 && (i != 0)) 
     248         { 
     249            ERROR("CServer::writeData(const std::vector<CLinearBuffer> & buffer, int prec)", 
     250                  << "[fileId 1 = " << fileId   << ", " 
     251                  << " fileId 2 = " << fileId_  << "] " 
     252                  << " Ecriture des données désynchronisée !"); 
     253         } 
     254         else fileId = fileId_; 
    181255      } 
    182256       
     
    185259         std::deque<ARRAY(float, 1)> dataArray(buffer.size()); 
    186260         for (StdSize i = 0; i < buffer.size(); i++) 
    187             dataArray[i] = buffer[i].getFloatArray(4); 
    188  
     261            dataArray[i] = buffer[i].getFloatArray(5); 
    189262         std::cout << "writeData called (float) " << fieldId << ", " << dataArray[0] << std::endl; 
     263         // Jamais atteint car les données sont transférées en tant que double 
    190264         return; 
    191265      }       
     
    194268         std::deque<ARRAY(double, 1)> dataArray(buffer.size()); 
    195269         for (StdSize i = 0; i < buffer.size(); i++) 
    196             dataArray[i] = buffer[i].getDoubleArray(4); 
    197  
     270            dataArray[i] = buffer[i].getDoubleArray(5); 
    198271         std::cout << "writeData called (double) " << fieldId << ", " << dataArray[0]  << std::endl; 
     272         dtreat->write_data(fieldId, fileId, dataArray); 
    199273         return; 
    200274      }       
Note: See TracChangeset for help on using the changeset viewer.