Changeset 1554 for XIOS/dev/dev_ym/XIOS_ONE_SIDED/src/node
- Timestamp:
- 06/28/18 18:03:28 (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS/dev/dev_ym/XIOS_ONE_SIDED/src/node/context.cpp
r1542 r1554 404 404 { 405 405 client->checkBuffers(); 406 bool hasTmpBufferedEvent = client->hasTemporarilyBufferedEvent(); 407 if (hasTmpBufferedEvent) 408 hasTmpBufferedEvent = !client->sendTemporarilyBufferedEvent(); 409 // Don't process events if there is a temporarily buffered event 410 return server->eventLoop(!hasTmpBufferedEvent || !enableEventsProcessing); 406 return server->eventLoop(true); 411 407 } 412 408 else if (CServer::serverLevel == 1) 413 409 { 414 if (!finalized) 415 client->checkBuffers(); 410 if (!finalized) client->checkBuffers(); 416 411 bool serverFinished = true; 417 if (!finalized) 418 serverFinished = server->eventLoop(enableEventsProcessing); 412 if (!finalized) serverFinished = server->eventLoop(enableEventsProcessing); 419 413 bool serverPrimFinished = true; 420 414 for (int i = 0; i < clientPrimServer.size(); ++i) 421 415 { 422 if (!finalized) 423 clientPrimServer[i]->checkBuffers(); 424 if (!finalized) 425 serverPrimFinished *= serverPrimServer[i]->eventLoop(enableEventsProcessing); 416 if (!finalized) clientPrimServer[i]->checkBuffers(); 417 if (!finalized) serverPrimFinished *= serverPrimServer[i]->eventLoop(enableEventsProcessing); 426 418 } 427 419 return ( serverFinished && serverPrimFinished); … … 456 448 { 457 449 ++countChildCtx_; 458 450 451 info(100)<<"DEBUG: context "<<getId()<<" Send client finalize"<<endl ; 459 452 client->finalize(); 460 while (client->havePendingRequests()) 461 client->checkBuffers(); 462 453 info(100)<<"DEBUG: context "<<getId()<<" Client finalize sent"<<endl ; 454 while (client->havePendingRequests()) client->checkBuffers(); 455 client->releaseBuffers(); 456 457 info(100)<<"DEBUG: context "<<getId()<<" no pending request ok"<<endl ; 463 458 while (!server->hasFinished()) 464 459 server->eventLoop(); 465 460 info(100)<<"DEBUG: context "<<getId()<<" server has finished"<<endl ; 466 461 if (hasServer) // Mode attache 467 462 { … … 472 467 473 468 //! Deallocate client buffers 474 client->releaseBuffers();475 469 // client->releaseBuffers(); 470 info(100)<<"DEBUG: context "<<getId()<<" release client ok"<<endl ; 476 471 //! Free internally allocated communicators 477 472 for (std::list<MPI_Comm>::iterator it = comms.begin(); it != comms.end(); ++it) … … 488 483 if (countChildCtx_ == 0) 489 484 for (int i = 0; i < clientPrimServer.size(); ++i) 485 { 490 486 clientPrimServer[i]->finalize(); 487 bool bufferReleased; 488 do 489 { 490 clientPrimServer[i]->checkBuffers(); 491 bufferReleased = !clientPrimServer[i]->havePendingRequests(); 492 } while (!bufferReleased); 493 clientPrimServer[i]->releaseBuffers(); 494 } 495 491 496 492 497 // (Last) context finalized message received … … 494 499 { 495 500 // Blocking send of context finalize message to its client (e.g. primary server or model) 496 info(100)<<"DEBUG: context "<<getId()<<" Send client finalize <<"<<endl ;501 info(100)<<"DEBUG: context "<<getId()<<" Send client finalize"<<endl ; 497 502 client->finalize(); 503 info(100)<<"DEBUG: context "<<getId()<<" Client finalize sent"<<endl ; 498 504 bool bufferReleased; 499 505 do … … 502 508 bufferReleased = !client->havePendingRequests(); 503 509 } while (!bufferReleased); 510 client->releaseBuffers(); 504 511 finalized = true; 505 512 info(100)<<"DEBUG: context "<<getId()<<" bufferRelease OK"<<endl ; 513 506 514 closeAllFile(); // Just move to here to make sure that server-level 1 can close files 507 515 if (hasServer && !hasClient) … … 512 520 513 521 //! Deallocate client buffers 514 client->releaseBuffers(); 522 // client->releaseBuffers(); 523 info(100)<<"DEBUG: context "<<getId()<<" client release"<<endl ; 524 525 /* 515 526 for (int i = 0; i < clientPrimServer.size(); ++i) 516 527 clientPrimServer[i]->releaseBuffers(); 517 528 */ 518 529 //! Free internally allocated communicators 519 530 for (std::list<MPI_Comm>::iterator it = comms.begin(); it != comms.end(); ++it)
Note: See TracChangeset
for help on using the changeset viewer.