Package edu.rit.pj

Class CommRequest

java.lang.Object
edu.rit.pj.CommRequest

public class CommRequest extends Object
Class CommRequest provides an object for doing a non-blocking message passing operation in a PJ cluster parallel program. A non-blocking message passing operation in class Comm immediately returns a CommRequest object while performing the message passing operation in a separate thread. This allows the calling thread to do other work while the message passing operation is in progress. When the calling thread needs to wait for the message passing operation to finish, the calling thread calls the CommRequest object's waitForFinish() method.
Version:
18-Sep-2007
Author:
Alan Kaminsky
  • Constructor Details

    • CommRequest

      public CommRequest()
      Construct a new CommRequest object.
  • Method Details

    • isFinished

      public boolean isFinished() throws IOException
      Determine if the message passing operation associated with this CommRequest object has finished.

      Note: If the isFinished() method is called on a newly-created CommRequest object that has not been passed to or returned from a communicator's non-blocking send or receive method, the isFinished() method immediately returns true.

      Returns:
      False if the message passing operation has not finished, true if the message passing operation has finished successfully.
      Throws:
      IOException - Thrown if the message passing operation has finished and an I/O error occurred.
      IOException - if any.
    • waitForFinish

      public CommStatus waitForFinish() throws IOException
      Wait for the message passing operation associated with this CommRequest object to finish. If the message passing operation involved a receive, a CommStatus object is returned giving the results of the receive, otherwise null is returned.

      For a receive operation, the returned status object gives the actual rank of the process that sent the message, the actual message tag that was received, and the actual number of data items in the message. If the actual number of data items in the message is less than the length of the receive buffer, nothing is stored into the extra data items at the end of the buffer. If the actual number of data items in the message is greater than the length of the receive buffer, the extra data items at the end of the message are discarded.

      Note: If the waitForFinish() method is called on a newly-created CommRequest object that has not been passed to or returned from a communicator's non-blocking send or receive method, the waitForFinish() method immediately returns null.

      Returns:
      Status object for a receive operation, otherwise null.
      Throws:
      IOException - Thrown if an I/O error occurred.
      IOException - if any.