Avoid use Status member in Request.
This commit was SVN r31287.
Этот коммит содержится в:
родитель
71bdb8c439
Коммит
845818de59
@ -40,7 +40,8 @@ typedef struct {
|
||||
jfieldID OpCommute;
|
||||
jmethodID OpCall;
|
||||
jfieldID ReqHandle;
|
||||
jfieldID ReqStatus;
|
||||
jclass StatusClass;
|
||||
jfieldID StatusData;
|
||||
jclass ExceptionClass;
|
||||
jmethodID ExceptionInit;
|
||||
jclass IntegerClass;
|
||||
@ -108,8 +109,9 @@ int ompi_java_attrDelete(void *attrVal);
|
||||
MPI_Op ompi_java_op_getHandle(
|
||||
JNIEnv *env, jobject jOp, jlong hOp, int baseType);
|
||||
|
||||
jlongArray ompi_java_status_new(
|
||||
JNIEnv *env, MPI_Status *status);
|
||||
jobject ompi_java_status_new(JNIEnv *env, MPI_Status *status);
|
||||
jobject ompi_java_status_newIndex(JNIEnv *env, MPI_Status *status, int index);
|
||||
|
||||
void ompi_java_status_set(
|
||||
JNIEnv *env, jlongArray jData, MPI_Status *status);
|
||||
void ompi_java_status_setIndex(
|
||||
|
@ -715,14 +715,14 @@ JNIEXPORT jint JNICALL Java_mpi_Comm_packSize(
|
||||
return size;
|
||||
}
|
||||
|
||||
JNIEXPORT jlongArray JNICALL Java_mpi_Comm_iProbe(
|
||||
JNIEXPORT jobject JNICALL Java_mpi_Comm_iProbe(
|
||||
JNIEnv *env, jobject jthis, jlong comm, jint source, jint tag)
|
||||
{
|
||||
int flag;
|
||||
MPI_Status status;
|
||||
int rc = MPI_Iprobe(source, tag, (MPI_Comm)comm, &flag, &status);
|
||||
ompi_java_exceptionCheck(env, rc);
|
||||
return !flag ? NULL : ompi_java_status_new(env, &status);
|
||||
return flag ? ompi_java_status_new(env, &status) : NULL;
|
||||
}
|
||||
|
||||
JNIEXPORT void JNICALL Java_mpi_Comm_probe(
|
||||
|
@ -395,7 +395,8 @@ void ompi_java_findClasses(JNIEnv *env)
|
||||
ompi_java.DistGraphNeighborsClass = ompi_java_findClass(
|
||||
env, "mpi/DistGraphNeighbors");
|
||||
|
||||
ompi_java.ExceptionClass = ompi_java_findClass(env, "mpi/MPIException");
|
||||
ompi_java.StatusClass = ompi_java_findClass(env, "mpi/Status");
|
||||
ompi_java.ExceptionClass = ompi_java_findClass(env, "mpi/MPIException");
|
||||
|
||||
ompi_java.ExceptionInit = (*env)->GetMethodID(
|
||||
env, ompi_java.ExceptionClass,
|
||||
@ -425,6 +426,7 @@ void ompi_java_deleteClasses(JNIEnv *env)
|
||||
(*env)->DeleteGlobalRef(env, ompi_java.ShiftParmsClass);
|
||||
(*env)->DeleteGlobalRef(env, ompi_java.GraphParmsClass);
|
||||
(*env)->DeleteGlobalRef(env, ompi_java.DistGraphNeighborsClass);
|
||||
(*env)->DeleteGlobalRef(env, ompi_java.StatusClass);
|
||||
(*env)->DeleteGlobalRef(env, ompi_java.ExceptionClass);
|
||||
(*env)->DeleteGlobalRef(env, ompi_java.IntegerClass);
|
||||
(*env)->DeleteGlobalRef(env, ompi_java.LongClass);
|
||||
|
@ -46,7 +46,7 @@ JNIEXPORT jlong JNICALL Java_mpi_Message_mProbe(
|
||||
return (jlong)message;
|
||||
}
|
||||
|
||||
JNIEXPORT jlongArray JNICALL Java_mpi_Message_imProbe(
|
||||
JNIEXPORT jobject JNICALL Java_mpi_Message_imProbe(
|
||||
JNIEnv *env, jobject jthis, jint source, jint tag, jlong jComm)
|
||||
{
|
||||
MPI_Comm comm = (MPI_Comm)jComm;
|
||||
|
@ -58,7 +58,6 @@
|
||||
JNIEXPORT void JNICALL Java_mpi_Request_init(JNIEnv *env, jclass c)
|
||||
{
|
||||
ompi_java.ReqHandle = (*env)->GetFieldID(env, c, "handle", "J");
|
||||
ompi_java.ReqStatus = (*env)->GetFieldID(env, c, "status", "[J");
|
||||
}
|
||||
|
||||
static void setIndices(JNIEnv *env, jintArray indices, int *cIdx, int count)
|
||||
@ -84,35 +83,38 @@ static void setIndices(JNIEnv *env, jintArray indices, int *cIdx, int count)
|
||||
free(jIdx);
|
||||
}
|
||||
|
||||
static void setStatuses(JNIEnv *env, jobjectArray objReqs,
|
||||
MPI_Status *statuses, int count)
|
||||
static jobjectArray newStatuses(JNIEnv *env, MPI_Status *statuses, int count)
|
||||
{
|
||||
jobjectArray array = (*env)->NewObjectArray(env,
|
||||
count, ompi_java.StatusClass, NULL);
|
||||
int i;
|
||||
for(i = 0; i < count; i++)
|
||||
{
|
||||
/* Copy final native status to Java statuses. */
|
||||
jobject rq = (*env)->GetObjectArrayElement(env, objReqs, i);
|
||||
jobject st = (*env)->GetObjectField(env, rq, ompi_java.ReqStatus);
|
||||
ompi_java_status_set(env, st, statuses + i);
|
||||
jobject st = ompi_java_status_new(env, statuses + i);
|
||||
(*env)->SetObjectArrayElement(env, array, i, st);
|
||||
(*env)->DeleteLocalRef(env, st);
|
||||
(*env)->DeleteLocalRef(env, rq);
|
||||
}
|
||||
|
||||
return array;
|
||||
}
|
||||
|
||||
static void setStatusesIndices(
|
||||
JNIEnv *env, jobjectArray objReqs,
|
||||
MPI_Status *statuses, int *indices, int count)
|
||||
static jobjectArray newStatusesIndices(
|
||||
JNIEnv *env, MPI_Status *statuses, int *indices, int count)
|
||||
{
|
||||
if(count < 0)
|
||||
return NULL;
|
||||
|
||||
jobjectArray array = (*env)->NewObjectArray(env,
|
||||
count, ompi_java.StatusClass, NULL);
|
||||
int i;
|
||||
for(i = 0; i < count; i++)
|
||||
{
|
||||
/* Copy final native status to Java statuses. */
|
||||
jobject rq = (*env)->GetObjectArrayElement(env, objReqs, i);
|
||||
jobject st = (*env)->GetObjectField(env, rq, ompi_java.ReqStatus);
|
||||
ompi_java_status_setIndex(env, st, statuses + i, indices[i]);
|
||||
jobject st = ompi_java_status_newIndex(env, statuses + i, indices[i]);
|
||||
(*env)->SetObjectArrayElement(env, array, i, st);
|
||||
(*env)->DeleteLocalRef(env, st);
|
||||
(*env)->DeleteLocalRef(env, rq);
|
||||
}
|
||||
|
||||
return array;
|
||||
}
|
||||
|
||||
JNIEXPORT jlong JNICALL Java_mpi_Request_getNull(JNIEnv *env, jclass clazz)
|
||||
@ -157,8 +159,8 @@ JNIEXPORT jlong JNICALL Java_mpi_Request_waitFor(
|
||||
return (jlong)req;
|
||||
}
|
||||
|
||||
JNIEXPORT jboolean JNICALL Java_mpi_Request_testStatus(
|
||||
JNIEnv *env, jobject jthis, jlong handle, jlongArray jStatus)
|
||||
JNIEXPORT jobject JNICALL Java_mpi_Request_testStatus(
|
||||
JNIEnv *env, jobject jthis, jlong handle)
|
||||
{
|
||||
MPI_Request req = (MPI_Request)handle;
|
||||
int flag;
|
||||
@ -166,12 +168,7 @@ JNIEXPORT jboolean JNICALL Java_mpi_Request_testStatus(
|
||||
int rc = MPI_Test(&req, &flag, &status);
|
||||
ompi_java_exceptionCheck(env, rc);
|
||||
(*env)->SetLongField(env, jthis, ompi_java.ReqHandle, (jlong)req);
|
||||
|
||||
if(!flag)
|
||||
return JNI_FALSE;
|
||||
|
||||
ompi_java_status_set(env, jStatus, &status);
|
||||
return JNI_TRUE;
|
||||
return flag ? ompi_java_status_new(env, &status) : NULL;
|
||||
}
|
||||
|
||||
JNIEXPORT jboolean JNICALL Java_mpi_Request_test(
|
||||
@ -215,8 +212,8 @@ JNIEXPORT jint JNICALL Java_mpi_Request_waitAny(
|
||||
return index;
|
||||
}
|
||||
|
||||
JNIEXPORT jboolean JNICALL Java_mpi_Request_testAnyStatus(
|
||||
JNIEnv *env, jclass clazz, jlongArray requests, jobject jStatus)
|
||||
JNIEXPORT jobject JNICALL Java_mpi_Request_testAnyStatus(
|
||||
JNIEnv *env, jclass clazz, jlongArray requests)
|
||||
{
|
||||
int count = (*env)->GetArrayLength(env, requests);
|
||||
jlong* jReq;
|
||||
@ -227,12 +224,7 @@ JNIEXPORT jboolean JNICALL Java_mpi_Request_testAnyStatus(
|
||||
int rc = MPI_Testany(count, cReq, &index, &flag, &status);
|
||||
ompi_java_exceptionCheck(env, rc);
|
||||
ompi_java_releasePtrArray(env, requests, jReq, (void**)cReq);
|
||||
|
||||
if(!flag)
|
||||
return JNI_FALSE;
|
||||
|
||||
ompi_java_status_setIndex(env, jStatus, &status, index);
|
||||
return JNI_TRUE;
|
||||
return flag ? ompi_java_status_newIndex(env, &status, index) : NULL;
|
||||
}
|
||||
|
||||
JNIEXPORT jint JNICALL Java_mpi_Request_testAny(
|
||||
@ -250,8 +242,8 @@ JNIEXPORT jint JNICALL Java_mpi_Request_testAny(
|
||||
return index;
|
||||
}
|
||||
|
||||
JNIEXPORT void JNICALL Java_mpi_Request_waitAllStatus(
|
||||
JNIEnv *env, jclass clazz, jlongArray requests, jobjectArray objReqs)
|
||||
JNIEXPORT jobjectArray JNICALL Java_mpi_Request_waitAllStatus(
|
||||
JNIEnv *env, jclass clazz, jlongArray requests)
|
||||
{
|
||||
int count = (*env)->GetArrayLength(env, requests);
|
||||
jlong* jReq;
|
||||
@ -261,8 +253,9 @@ JNIEXPORT void JNICALL Java_mpi_Request_waitAllStatus(
|
||||
int rc = MPI_Waitall(count, cReq, statuses);
|
||||
ompi_java_exceptionCheck(env, rc);
|
||||
ompi_java_releasePtrArray(env, requests, jReq, (void**)cReq);
|
||||
setStatuses(env, objReqs, statuses, count);
|
||||
jobjectArray jStatuses = newStatuses(env, statuses, count);
|
||||
free(statuses);
|
||||
return jStatuses;
|
||||
}
|
||||
|
||||
JNIEXPORT void JNICALL Java_mpi_Request_waitAll(
|
||||
@ -277,8 +270,8 @@ JNIEXPORT void JNICALL Java_mpi_Request_waitAll(
|
||||
ompi_java_releasePtrArray(env, requests, jReq, (void**)cReq);
|
||||
}
|
||||
|
||||
JNIEXPORT int JNICALL Java_mpi_Request_testAllStatus(
|
||||
JNIEnv *env, jclass clazz, jlongArray requests, jobjectArray objReqs)
|
||||
JNIEXPORT jobjectArray JNICALL Java_mpi_Request_testAllStatus(
|
||||
JNIEnv *env, jclass clazz, jlongArray requests)
|
||||
{
|
||||
int count = (*env)->GetArrayLength(env, requests);
|
||||
jlong* jReq;
|
||||
@ -289,12 +282,9 @@ JNIEXPORT int JNICALL Java_mpi_Request_testAllStatus(
|
||||
int rc = MPI_Testall(count, cReq, &flag, statuses);
|
||||
ompi_java_exceptionCheck(env, rc);
|
||||
ompi_java_releasePtrArray(env, requests, jReq, (void**)cReq);
|
||||
|
||||
if(flag)
|
||||
setStatuses(env, objReqs, statuses, count);
|
||||
|
||||
jobjectArray jStatuses = flag ? newStatuses(env, statuses, count) : NULL;
|
||||
free(statuses);
|
||||
return flag ? count : -1;
|
||||
return jStatuses;
|
||||
}
|
||||
|
||||
JNIEXPORT jboolean JNICALL Java_mpi_Request_testAll(
|
||||
@ -311,8 +301,8 @@ JNIEXPORT jboolean JNICALL Java_mpi_Request_testAll(
|
||||
return flag ? JNI_TRUE : JNI_FALSE;
|
||||
}
|
||||
|
||||
JNIEXPORT jint JNICALL Java_mpi_Request_waitSomeStatus(
|
||||
JNIEnv *env, jclass clazz, jlongArray requests, jobjectArray objReqs)
|
||||
JNIEXPORT jobjectArray JNICALL Java_mpi_Request_waitSomeStatus(
|
||||
JNIEnv *env, jclass clazz, jlongArray requests)
|
||||
{
|
||||
int incount = (*env)->GetArrayLength(env, requests);
|
||||
jlong* jReq;
|
||||
@ -324,10 +314,10 @@ JNIEXPORT jint JNICALL Java_mpi_Request_waitSomeStatus(
|
||||
int rc = MPI_Waitsome(incount, cReq, &outcount, indices, statuses);
|
||||
ompi_java_exceptionCheck(env, rc);
|
||||
ompi_java_releasePtrArray(env, requests, jReq, (void**)cReq);
|
||||
setStatusesIndices(env, objReqs, statuses, indices, outcount);
|
||||
jobjectArray jStatuses = newStatusesIndices(env, statuses, indices, outcount);
|
||||
free(statuses);
|
||||
free(indices);
|
||||
return outcount;
|
||||
return jStatuses;
|
||||
}
|
||||
|
||||
JNIEXPORT jintArray JNICALL Java_mpi_Request_waitSome(
|
||||
@ -354,8 +344,8 @@ JNIEXPORT jintArray JNICALL Java_mpi_Request_waitSome(
|
||||
return jindices;
|
||||
}
|
||||
|
||||
JNIEXPORT int JNICALL Java_mpi_Request_testSomeStatus(
|
||||
JNIEnv *env, jclass clazz, jlongArray requests, jobjectArray objReqs)
|
||||
JNIEXPORT jobjectArray JNICALL Java_mpi_Request_testSomeStatus(
|
||||
JNIEnv *env, jclass clazz, jlongArray requests)
|
||||
{
|
||||
int incount = (*env)->GetArrayLength(env, requests);
|
||||
jlong* jReq;
|
||||
@ -367,10 +357,10 @@ JNIEXPORT int JNICALL Java_mpi_Request_testSomeStatus(
|
||||
int rc = MPI_Testsome(incount, cReq, &outcount, indices, statuses);
|
||||
ompi_java_exceptionCheck(env, rc);
|
||||
ompi_java_releasePtrArray(env, requests, jReq, (void**)cReq);
|
||||
setStatusesIndices(env, objReqs, statuses, indices, outcount);
|
||||
jobjectArray jStatuses = newStatusesIndices(env, statuses, indices, outcount);
|
||||
free(statuses);
|
||||
free(indices);
|
||||
return outcount;
|
||||
return jStatuses;
|
||||
}
|
||||
|
||||
JNIEXPORT jintArray JNICALL Java_mpi_Request_testSome(
|
||||
|
@ -66,6 +66,11 @@ static void getStatus(MPI_Status *status, jint source, jint tag,
|
||||
status->_ucount = ucount;
|
||||
}
|
||||
|
||||
JNIEXPORT void JNICALL Java_mpi_Status_init(JNIEnv *env, jclass clazz)
|
||||
{
|
||||
ompi_java.StatusData = (*env)->GetFieldID(env, clazz, "data", "[J");
|
||||
}
|
||||
|
||||
JNIEXPORT jint JNICALL Java_mpi_Status_getCount(
|
||||
JNIEnv *env, jobject jthis, jint source, jint tag,
|
||||
jint error, jint cancelled, jlong ucount, jlong jType)
|
||||
@ -104,11 +109,22 @@ JNIEXPORT jint JNICALL Java_mpi_Status_getElements(
|
||||
return count;
|
||||
}
|
||||
|
||||
jlongArray ompi_java_status_new(JNIEnv *env, MPI_Status *status)
|
||||
jobject ompi_java_status_new(JNIEnv *env, MPI_Status *status)
|
||||
{
|
||||
jlongArray jData = (*env)->NewLongArray(env, 6);
|
||||
ompi_java_status_set(env, jData, status);
|
||||
return jData;
|
||||
jobject jStatus = (*env)->AllocObject(env, ompi_java.StatusClass);
|
||||
(*env)->SetObjectField(env, jStatus, ompi_java.StatusData, jData);
|
||||
return jStatus;
|
||||
}
|
||||
|
||||
jobject ompi_java_status_newIndex(JNIEnv *env, MPI_Status *status, int index)
|
||||
{
|
||||
jlongArray jData = (*env)->NewLongArray(env, 6);
|
||||
ompi_java_status_setIndex(env, jData, status, index);
|
||||
jobject jStatus = (*env)->AllocObject(env, ompi_java.StatusClass);
|
||||
(*env)->SetObjectField(env, jStatus, ompi_java.StatusData, jData);
|
||||
return jStatus;
|
||||
}
|
||||
|
||||
void ompi_java_status_set(JNIEnv *env, jlongArray jData, MPI_Status *status)
|
||||
|
@ -894,11 +894,10 @@ private native int packSize(long comm, int incount, long type)
|
||||
public final Status iProbe(int source, int tag) throws MPIException
|
||||
{
|
||||
MPI.check();
|
||||
long[] status = iProbe(handle, source, tag);
|
||||
return status == null ? null : new Status(status);
|
||||
return iProbe(handle, source, tag);
|
||||
}
|
||||
|
||||
private native long[] iProbe(long comm, int source, int tag)
|
||||
private native Status iProbe(long comm, int source, int tag)
|
||||
throws MPIException;
|
||||
|
||||
/**
|
||||
|
@ -100,11 +100,10 @@ private native long mProbe(int source, int tag, long comm, long[] status)
|
||||
public Status imProbe(int source, int tag, Comm comm) throws MPIException
|
||||
{
|
||||
MPI.check();
|
||||
long[] status = imProbe(source, tag, comm.handle);
|
||||
return status == null ? null : new Status(status);
|
||||
return imProbe(source, tag, comm.handle);
|
||||
}
|
||||
|
||||
private native long[] imProbe(int source, int tag, long comm)
|
||||
private native Status imProbe(int source, int tag, long comm)
|
||||
throws MPIException;
|
||||
|
||||
/**
|
||||
|
@ -66,12 +66,6 @@ package mpi;
|
||||
*/
|
||||
public class Request implements Freeable
|
||||
{
|
||||
// Auxiliary status data.
|
||||
// It's used to avoid creating status objects in the C side.
|
||||
// It also avoids setting objects attributes in the C side.
|
||||
// Calling java methods and setting object attributes from C is very slow.
|
||||
private long[] status = Status.newData();
|
||||
|
||||
protected long handle;
|
||||
|
||||
static
|
||||
@ -134,8 +128,9 @@ public final boolean isNull()
|
||||
public final Status waitStatus() throws MPIException
|
||||
{
|
||||
MPI.check();
|
||||
handle = waitStatus(handle, status);
|
||||
return newStatus();
|
||||
Status status = new Status();
|
||||
handle = waitStatus(handle, status.data);
|
||||
return status;
|
||||
}
|
||||
|
||||
private native long waitStatus(long request, long[] stat) throws MPIException;
|
||||
@ -166,11 +161,10 @@ private native long waitFor(long request) throws MPIException;
|
||||
public final Status testStatus() throws MPIException
|
||||
{
|
||||
MPI.check();
|
||||
return testStatus(handle, status) ? newStatus() : null;
|
||||
return testStatus(handle);
|
||||
}
|
||||
|
||||
private native boolean testStatus(long request, long[] status)
|
||||
throws MPIException;
|
||||
private native Status testStatus(long request) throws MPIException;
|
||||
|
||||
/**
|
||||
* Returns true if the operation identified by the request
|
||||
@ -205,10 +199,10 @@ public static Status waitAnyStatus(Request[] requests) throws MPIException
|
||||
{
|
||||
MPI.check();
|
||||
long[] r = getHandles(requests);
|
||||
long[] status = Status.newData();
|
||||
waitAnyStatus(r, status);
|
||||
Status status = new Status();
|
||||
waitAnyStatus(r, status.data);
|
||||
setHandles(requests, r);
|
||||
return new Status(status);
|
||||
return status;
|
||||
}
|
||||
|
||||
private static native void waitAnyStatus(long[] requests, long[] status)
|
||||
@ -252,20 +246,12 @@ public static Status testAnyStatus(Request[] requests) throws MPIException
|
||||
{
|
||||
MPI.check();
|
||||
long[] r = getHandles(requests);
|
||||
long[] status = requests.length==0 ? Status.newData() : requests[0].status;
|
||||
boolean completed = testAnyStatus(r, status);
|
||||
Status status = testAnyStatus(r);
|
||||
setHandles(requests, r);
|
||||
|
||||
if(!completed)
|
||||
return null;
|
||||
else if(requests.length == 0)
|
||||
return new Status(status);
|
||||
else
|
||||
return requests[0].newStatus();
|
||||
return status;
|
||||
}
|
||||
|
||||
private static native boolean testAnyStatus(long[] requests, long[] status)
|
||||
throws MPIException;
|
||||
private static native Status testAnyStatus(long[] requests) throws MPIException;
|
||||
|
||||
/**
|
||||
* Tests for completion of either one or none of the operations
|
||||
@ -303,12 +289,12 @@ public static Status[] waitAllStatus(Request[] requests) throws MPIException
|
||||
{
|
||||
MPI.check();
|
||||
long[] r = getHandles(requests);
|
||||
waitAllStatus(r, requests);
|
||||
Status[] status = waitAllStatus(r);
|
||||
setHandles(requests, r);
|
||||
return newStatuses(requests, requests.length);
|
||||
return status;
|
||||
}
|
||||
|
||||
private static native void waitAllStatus(long[] requests, Request[] objReqs)
|
||||
private static native Status[] waitAllStatus(long[] requests)
|
||||
throws MPIException;
|
||||
|
||||
/**
|
||||
@ -343,12 +329,12 @@ public static Status[] testAllStatus(Request[] requests) throws MPIException
|
||||
{
|
||||
MPI.check();
|
||||
long[] r = getHandles(requests);
|
||||
int count = testAllStatus(r, requests);
|
||||
Status[] status = testAllStatus(r);
|
||||
setHandles(requests, r);
|
||||
return newStatuses(requests, count);
|
||||
return status;
|
||||
}
|
||||
|
||||
private static native int testAllStatus(long[] requests, Request[] objReqs)
|
||||
private static native Status[] testAllStatus(long[] requests)
|
||||
throws MPIException;
|
||||
|
||||
/**
|
||||
@ -389,12 +375,12 @@ public static Status[] waitSomeStatus(Request[] requests) throws MPIException
|
||||
{
|
||||
MPI.check();
|
||||
long[] r = getHandles(requests);
|
||||
int count = waitSomeStatus(r, requests);
|
||||
Status[] status = waitSomeStatus(r);
|
||||
setHandles(requests, r);
|
||||
return newStatuses(requests, count);
|
||||
return status;
|
||||
}
|
||||
|
||||
private static native int waitSomeStatus(long[] requests, Request[] objReqs)
|
||||
private static native Status[] waitSomeStatus(long[] requests)
|
||||
throws MPIException;
|
||||
|
||||
/**
|
||||
@ -433,12 +419,12 @@ public static Status[] testSomeStatus(Request[] requests) throws MPIException
|
||||
{
|
||||
MPI.check();
|
||||
long[] r = getHandles(requests);
|
||||
int count = testSomeStatus(r, requests);
|
||||
Status[] status = testSomeStatus(r);
|
||||
setHandles(requests, r);
|
||||
return newStatuses(requests, count);
|
||||
return status;
|
||||
}
|
||||
|
||||
private static native int testSomeStatus(long[] requests, Request[] objReqs)
|
||||
private static native Status[] testSomeStatus(long[] requests)
|
||||
throws MPIException;
|
||||
|
||||
/**
|
||||
@ -477,24 +463,4 @@ protected static void setHandles(Request[] r, long[] h)
|
||||
r[i].handle = h[i];
|
||||
}
|
||||
|
||||
private static Status[] newStatuses(Request[] r, int count)
|
||||
{
|
||||
if(count < 0)
|
||||
return null;
|
||||
|
||||
Status[] s = new Status[count];
|
||||
|
||||
for(int i = 0; i < count; i++)
|
||||
s[i] = r[i].newStatus();
|
||||
|
||||
return s;
|
||||
}
|
||||
|
||||
private Status newStatus()
|
||||
{
|
||||
Status s = new Status(status);
|
||||
status = Status.newData();
|
||||
return s;
|
||||
}
|
||||
|
||||
} // Request
|
||||
|
@ -52,6 +52,13 @@ public final class Status
|
||||
{
|
||||
protected final long[] data;
|
||||
|
||||
static
|
||||
{
|
||||
init();
|
||||
}
|
||||
|
||||
private static native void init();
|
||||
|
||||
/**
|
||||
* Status objects must be created only by the MPI methods.
|
||||
*/
|
||||
@ -60,23 +67,6 @@ protected Status()
|
||||
data = new long[6];
|
||||
}
|
||||
|
||||
/**
|
||||
* Status objects must be created only by the MPI methods.
|
||||
*/
|
||||
protected Status(long[] data)
|
||||
{
|
||||
assert data.length == 6;
|
||||
this.data = data;
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates the status data.
|
||||
*/
|
||||
protected static long[] newData()
|
||||
{
|
||||
return new long[6];
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the number of received entries.
|
||||
* <p>Java binding of the MPI operation {@code MPI_GET_COUNT}.
|
||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user