source: XMLIO_V2/dev/dev_rv/src/xmlio/main_server.cpp @ 277

Last change on this file since 277 was 277, checked in by hozdoba, 10 years ago
File size: 2.3 KB
Line 
1// XmlIOServer
2#include "xmlioserver.hpp"
3
4#include "attribute_template_impl.hpp"
5#include "group_template_impl.hpp"
6
7#include "client.hpp"
8#include "server.hpp"
9extern "C"
10{
11   void xios_dtreatment_start(tree::CContext * context_hdl, int filetype, int comm_client_server, int comm_server);
12   void xios_set_timestep(double ts_year, double ts_month,  double ts_day,
13                          double ts_hour, double ts_minute, double ts_second);
14   void xios_write_data_k83(const char * fieldid, int fieldid_size, double * data_k8, int data_Xsize, int data_Ysize, int data_Zsize);
15   void xios_update_calendar(int step);
16}
17// Point d'entrée du programme principal
18
19int main (int argc, char ** argv, char ** UNUSED (env))
20{
21   try
22   {
23      MPIComm comm_client, comm_client_server, comm_server;
24      CXIOSManager::Initialise (CXIOSManager::CLIENT_SERVER, &argc, &argv);
25      if (CMPIManager::GetCommRank() == 0)
26      {         
27         CMPIManager ::DispatchClient(true, comm_client, comm_client_server,  comm_server);
28         CXIOSManager::RunServer("Nemo", comm_client_server, comm_server); 
29         CServer::CreateServer(comm_client_server)->run();
30      }
31      else
32      {
33         ARRAY_CREATE(data, double, 3, [20][30][20]);
34         
35         CMPIManager ::DispatchClient(false, comm_client, comm_client_server,  comm_server);
36         CTreeManager::ParseFile("iodef.xml");
37         CTreeManager::SetCurrentContextId("context1");
38         boost::shared_ptr<CContext> context =
39             CObjectFactory::GetObject<CContext>("context1");
40         xios_set_timestep(0, 0, 0, 1, 0, 0);
41         xios_dtreatment_start(context.get(), 0, comm_client_server, -1);
42
43         for (int i = 0; i < 200; i++)
44         {
45            xios_update_calendar(i);
46            for (int i = 0, l=0; i < 20; i++)
47               for (int j = 0; j < 30; j++)
48                  for (int k = 0; k < 20; k++, l++)   
49                     (*data)[i][j][k] = l*10+i;
50            xios_write_data_k83("champ1", 6, data->data(), 20, 30, 20);
51         }
52         CClient::GetClient()->finalize();
53      }
54      CXIOSManager::Finalize ();
55         
56   }
57   catch (CException & exc)
58   {
59      std::cerr << exc.getMessage () << std::endl;
60      CMPIManager::Finalize ();
61      return (EXIT_FAILURE);
62   }
63   return (EXIT_SUCCESS);
64}
65
Note: See TracBrowser for help on using the repository browser.