1
1

Merge pull request #759 from nrgraham23/status_java_bindings

Java bindings for Status methods
Этот коммит содержится в:
Howard Pritchard 2015-07-29 10:36:56 -06:00
родитель 6c7875f701 efe69c89a7
Коммит 569764cd98
2 изменённых файлов: 75 добавлений и 0 удалений

Просмотреть файл

@ -109,6 +109,28 @@ JNIEXPORT jint JNICALL Java_mpi_Status_getElements(
return count;
}
JNIEXPORT jint JNICALL Java_mpi_Status_setElements(
JNIEnv *env, jobject jthis, jint source, jint tag,
jint error, jint cancelled, jlong ucount, jlong jType, int count)
{
MPI_Status stat;
getStatus(&stat, source, tag, error, cancelled, ucount);
MPI_Datatype datatype = (MPI_Datatype)jType;
int rc = MPI_Status_set_elements(&stat, datatype, count);
ompi_java_exceptionCheck(env, rc);
return stat._ucount;
}
JNIEXPORT void JNICALL Java_mpi_Status_setCancelled(
JNIEnv *env, jobject jthis, jint source, jint tag,
jint error, jint cancelled, jlong ucount, int flag)
{
MPI_Status stat;
getStatus(&stat, source, tag, error, cancelled, ucount);
int rc = MPI_Status_set_cancelled(&stat, flag);
ompi_java_exceptionCheck(env, rc);
}
jobject ompi_java_status_new(JNIEnv *env, MPI_Status *status)
{
jlongArray jData = (*env)->NewLongArray(env, 6);

Просмотреть файл

@ -137,6 +137,59 @@ public final class Status
int source, int tag, int error,
int cancelled, long ucount, long datatype) throws MPIException;
/**
* Sets the number of basic elements for this status object.
* <p>Java binding of the MPI operation {@code MPI_STATUS_SET_ELEMENTS}.
* @param datatype datatype used by receive operation
* @param count number of elements to associate with the status
* @throws MPIException Signals that an MPI exception of some sort has occurred.
*/
public void setElements(Datatype datatype, int count) throws MPIException
{
MPI.check();
int i = 0;
int source = (int)data[i++];
int tag = (int)data[i++];
int error = (int)data[i++];
int cancelled = (int)data[i++];
long ucount = data[i++];
data[4] = setElements(source, tag, error, cancelled, ucount, datatype.handle, count);
}
private native int setElements(
int source, int tag, int error,
int cancelled, long ucount, long datatype, int count) throws MPIException;
/**
* Sets the cancelled flag.
* <p>Java binding of the MPI operation {@code MPI_STATUS_SET_CANCELLED}.
* @param flag if true indicates request was cancelled
* @throws MPIException Signals that an MPI exception of some sort has occurred.
*/
public void setCancelled(boolean flag) throws MPIException
{
MPI.check();
int i = 0;
int source = (int)data[i++];
int tag = (int)data[i++];
int error = (int)data[i++];
int cancelled = (int)data[i++];
long ucount = data[i++];
if(flag) {
setCancelled(source, tag, error, cancelled, ucount, 1);
data[3] = 1;
} else {
setCancelled(source, tag, error, cancelled, ucount, 0);
data[3] = 0;
}
}
private native void setCancelled(
int source, int tag, int error,
int cancelled, long ucount, int flag) throws MPIException;
/**
* Returns the "source" of message.
* <p>Java binding of the MPI value {@code MPI_SOURCE}.