You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mnemonic.apache.org by ga...@apache.org on 2016/07/09 01:11:29 UTC
incubator-mnemonic git commit: MNEMONIC-55: A Print Computing Service
Repository: incubator-mnemonic
Updated Branches:
refs/heads/master 9f24eccea -> 56e086cf8
MNEMONIC-55: A Print Computing Service
Project: http://git-wip-us.apache.org/repos/asf/incubator-mnemonic/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-mnemonic/commit/56e086cf
Tree: http://git-wip-us.apache.org/repos/asf/incubator-mnemonic/tree/56e086cf
Diff: http://git-wip-us.apache.org/repos/asf/incubator-mnemonic/diff/56e086cf
Branch: refs/heads/master
Commit: 56e086cf8c2393a898f49426272ec4450344a094
Parents: 9f24ecc
Author: Wang, Gang(Gary) <ga...@intel.com>
Authored: Fri Jul 8 14:50:37 2016 -0700
Committer: Wang, Gang(Gary) <ga...@intel.com>
Committed: Fri Jul 8 18:01:30 2016 -0700
----------------------------------------------------------------------
build-tools/mnemonic-checkstyle.xml | 4 +-
.../src/main/native/common.c | 45 ++++++++++++++++++
.../src/main/native/common.h | 20 ++++++++
...computingservice_internal_PrintServiceImpl.c | 50 ++++++++++++++++++--
.../DurableNodeValueNGPrintTest.java | 21 ++++----
.../service/computingservice/Person.java | 10 ++--
.../main/java/org/apache/mnemonic/Utils.java | 4 +-
7 files changed, 134 insertions(+), 20 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-mnemonic/blob/56e086cf/build-tools/mnemonic-checkstyle.xml
----------------------------------------------------------------------
diff --git a/build-tools/mnemonic-checkstyle.xml b/build-tools/mnemonic-checkstyle.xml
index 9c84c59..e6b40ab 100644
--- a/build-tools/mnemonic-checkstyle.xml
+++ b/build-tools/mnemonic-checkstyle.xml
@@ -101,7 +101,9 @@
<module name="OperatorWrap"/>
<module name="ParenPad"/>
<module name="TypecastParenPad"/>
- <module name="WhitespaceAfter"/>
+ <module name="WhitespaceAfter">
+ <property name="tokens" value="COMMA, SEMI"/>
+ </module>
<module name="WhitespaceAround"/>
http://git-wip-us.apache.org/repos/asf/incubator-mnemonic/blob/56e086cf/mnemonic-computing-services/mnemonic-utilities-service/src/main/native/common.c
----------------------------------------------------------------------
diff --git a/mnemonic-computing-services/mnemonic-utilities-service/src/main/native/common.c b/mnemonic-computing-services/mnemonic-utilities-service/src/main/native/common.c
index 82387d8..0516743 100644
--- a/mnemonic-computing-services/mnemonic-utilities-service/src/main/native/common.c
+++ b/mnemonic-computing-services/mnemonic-utilities-service/src/main/native/common.c
@@ -303,4 +303,49 @@ inline long to_p(JNIEnv* env, struct NValueInfo *nvinfo, void *e) {
return -1L;
}
+void iterMatrix(JNIEnv* env, struct NValueInfo *nvinfo, size_t dims[], long hdls[],
+ size_t dimidx, valueHandler valhandler) {
+ void *addr = NULL;
+ long curoff = (nvinfo->frames + dimidx)->nextoff;
+ long curnloff = (nvinfo->frames + dimidx)->nlvloff;
+ long curnlsz = (nvinfo->frames + dimidx)->nlvlsz;
+ if (dimidx < nvinfo->framessz - 1) {
+ while(0L != hdls[dimidx]) {
+ hdls[dimidx + 1] = *(long*)(to_e(env, nvinfo, hdls[dimidx]) + curnloff);
+ iterMatrix(env, nvinfo, dims, hdls, dimidx + 1, valhandler);
+ hdls[dimidx] = *(long*)(to_e(env, nvinfo, hdls[dimidx]) + curoff);
+ ++dims[dimidx];
+ }
+ dims[dimidx] = 0;
+ } else {
+ if (-1L != curoff) {
+ while(0L != hdls[dimidx]) {
+ addr = to_e(env, nvinfo, hdls[dimidx]) + curnloff;
+ valhandler(env, dims, dimidx + 1, addr, curnlsz, nvinfo->dtype);
+ hdls[dimidx] = *(long*)(to_e(env, nvinfo, hdls[dimidx]) + curoff);
+ ++dims[dimidx];
+ }
+ dims[dimidx] = 0;
+ } else {
+ addr = to_e(env, nvinfo, hdls[dimidx]) + curnloff;
+ valhandler(env, dims, dimidx, addr, curnlsz, nvinfo->dtype);
+ }
+ }
+}
+
+int handleValueInfo(JNIEnv* env, struct NValueInfo *nvinfo, valueHandler valhandler) {
+ if (NULL == nvinfo->frames || 0 == nvinfo->framessz) {
+ return -1;
+ }
+ size_t dims[nvinfo->framessz];
+ long hdls[nvinfo->framessz];
+ size_t i, di = 0;
+ for (i = 0; i < nvinfo->framessz; ++i) {
+ dims[i] = 0;
+ hdls[i] = 0L;
+ }
+ hdls[di] = nvinfo->handler;
+ iterMatrix(env, nvinfo, dims, hdls, 0, valhandler);
+ return 0;
+}
http://git-wip-us.apache.org/repos/asf/incubator-mnemonic/blob/56e086cf/mnemonic-computing-services/mnemonic-utilities-service/src/main/native/common.h
----------------------------------------------------------------------
diff --git a/mnemonic-computing-services/mnemonic-utilities-service/src/main/native/common.h b/mnemonic-computing-services/mnemonic-utilities-service/src/main/native/common.h
index 75feef7..bef9ee4 100644
--- a/mnemonic-computing-services/mnemonic-utilities-service/src/main/native/common.h
+++ b/mnemonic-computing-services/mnemonic-utilities-service/src/main/native/common.h
@@ -36,6 +36,19 @@ extern "C" {
#include <pthread.h>
#include <jni.h>
+#define DURABLE_BOOLEAN 1
+#define DURABLE_CHARACTER 2
+#define DURABLE_BYTE 3
+#define DURABLE_SHORT 4
+#define DURABLE_INTEGER 5
+#define DURABLE_LONG 6
+#define DURABLE_FLOAT 7
+#define DURABLE_DOUBLE 8
+#define DURABLE_STRING 9
+#define DURABLE_DURABLE 10
+#define DURABLE_BUFFER 11
+#define DURABLE_CHUNK 12
+
void throw(JNIEnv* env, const char* msg);
void* addr_from_java(jlong addr);
@@ -64,17 +77,24 @@ struct NValueInfo {
int dtype;
};
+typedef void (*valueHandler)(JNIEnv* env, size_t dims[], size_t dimsz,
+ void *addr, size_t sz, int dtype);
+
struct NValueInfo **constructNValueInfos(JNIEnv* env,
jobjectArray vinfos, size_t *sz);
void destructNValueInfos(struct NValueInfo **nvalinfos, size_t sz);
+void printNValueInfos(struct NValueInfo **nvalinfos, size_t sz);
+
jlongArray constructJLongArray(JNIEnv* env, long arr[], size_t sz);
inline void *to_e(JNIEnv* env, struct NValueInfo *nvinfo, long p);
inline long to_p(JNIEnv* env, struct NValueInfo *nvinfo, void *e);
+int handleValueInfo(JNIEnv* env, struct NValueInfo *nvinfo, valueHandler valhandler);
+
#ifdef __cplusplus
}
#endif
http://git-wip-us.apache.org/repos/asf/incubator-mnemonic/blob/56e086cf/mnemonic-computing-services/mnemonic-utilities-service/src/main/native/org_apache_mnemonic_service_computingservice_internal_PrintServiceImpl.c
----------------------------------------------------------------------
diff --git a/mnemonic-computing-services/mnemonic-utilities-service/src/main/native/org_apache_mnemonic_service_computingservice_internal_PrintServiceImpl.c b/mnemonic-computing-services/mnemonic-utilities-service/src/main/native/org_apache_mnemonic_service_computingservice_internal_PrintServiceImpl.c
index f3e72fb..e5adb19 100644
--- a/mnemonic-computing-services/mnemonic-utilities-service/src/main/native/org_apache_mnemonic_service_computingservice_internal_PrintServiceImpl.c
+++ b/mnemonic-computing-services/mnemonic-utilities-service/src/main/native/org_apache_mnemonic_service_computingservice_internal_PrintServiceImpl.c
@@ -22,6 +22,45 @@
** JNI implementations
*****************************************************************************/
+void valHandler(JNIEnv* env, size_t dims[], size_t dimsz,
+ void *addr, size_t sz, int dtype) {
+ size_t i;
+ if (0 == dims[dimsz - 1]) {
+ printf("\n");
+ }
+ for (i = 0; i < dimsz; ++i) {
+ printf("[%zu]", dims[i]);
+ }
+ switch(dtype) {
+ case DURABLE_BOOLEAN:
+ printf(" %s, ", (0 == *(char*)addr ? "T" : "F"));
+ break;
+ case DURABLE_CHARACTER:
+ printf(" %c, ", *(char*)addr);
+ break;
+ case DURABLE_BYTE:
+ printf(" %d, ", *(char*)addr);
+ break;
+ case DURABLE_SHORT:
+ printf(" %d, ", *(short*)addr);
+ break;
+ case DURABLE_INTEGER:
+ printf(" %d, ", *(int*)addr);
+ break;
+ case DURABLE_LONG:
+ printf(" %ld, ", *(long*)addr);
+ break;
+ case DURABLE_FLOAT:
+ printf(" %f, ", *(float*)addr);
+ break;
+ case DURABLE_DOUBLE:
+ printf(" %f, ", *(double*)addr);
+ break;
+ default:
+ printf(" (NA), ");
+ }
+}
+
JNIEXPORT
jlongArray JNICALL Java_org_apache_mnemonic_service_computingservice_internal_PrintServiceImpl_nperformPrint(JNIEnv* env,
jobject this, jobjectArray vinfos) {
@@ -34,10 +73,15 @@ jlongArray JNICALL Java_org_apache_mnemonic_service_computingservice_internal_Pr
}
size_t visz;
struct NValueInfo **nvinfos = constructNValueInfos(env, vinfos, &visz);
-
-
- printf("----Service Native Parameters----\n");
printNValueInfos(nvinfos, visz);
+ for(idx = 0; idx < visz; ++idx) {
+ printf("-- Value Matrix #%u --\n", idx);
+ if (NULL != nvinfos + idx) {
+ handleValueInfo(env, *(nvinfos + idx), valHandler);
+ } else {
+ printf("NULL\n");
+ }
+ }
ret = constructJLongArray(env, nret, retsz);
destructNValueInfos(nvinfos, visz);
http://git-wip-us.apache.org/repos/asf/incubator-mnemonic/blob/56e086cf/mnemonic-computing-services/mnemonic-utilities-service/src/test/java/org/apache/mnemonic/service/computingservice/DurableNodeValueNGPrintTest.java
----------------------------------------------------------------------
diff --git a/mnemonic-computing-services/mnemonic-utilities-service/src/test/java/org/apache/mnemonic/service/computingservice/DurableNodeValueNGPrintTest.java b/mnemonic-computing-services/mnemonic-utilities-service/src/test/java/org/apache/mnemonic/service/computingservice/DurableNodeValueNGPrintTest.java
index 99ef331..95dbab0 100644
--- a/mnemonic-computing-services/mnemonic-utilities-service/src/test/java/org/apache/mnemonic/service/computingservice/DurableNodeValueNGPrintTest.java
+++ b/mnemonic-computing-services/mnemonic-utilities-service/src/test/java/org/apache/mnemonic/service/computingservice/DurableNodeValueNGPrintTest.java
@@ -93,6 +93,9 @@ public class DurableNodeValueNGPrintTest {
person.setAge((short) m_rand.nextInt(50));
person.setName(String.format("Name: [%s]", Utils.genRandomString()), true);
nextnv.setItem(person, false);
+ if (i + 1 == elem_count) {
+ break;
+ }
newnv = DurableNodeValueFactory.create(m_act, listefproxies, listgftypes, false);
nextnv.setNext(newnv, false);
nextnv = newnv;
@@ -100,26 +103,28 @@ public class DurableNodeValueNGPrintTest {
Person<Long> eval;
DurableNodeValue<Person<Long>> iternv = firstnv;
+ System.out.printf(" -- Stage 1 Generated---\n");
while (null != iternv) {
- System.out.printf(" Stage 1 --->\n");
eval = iternv.getItem();
if (null != eval) {
- eval.testOutput();
+ eval.testOutputAge();
}
iternv = iternv.getNext();
}
+ System.out.printf("\n");
long handler = firstnv.getHandler();
DurableNodeValue<Person<Long>> firstnv2 = DurableNodeValueFactory.restore(m_act, listefproxies, listgftypes,
handler, false);
+ System.out.printf("--- Stage 2 Restored--- \n");
for (Person<Long> eval2 : firstnv2) {
- System.out.printf(" Stage 2 ---> \n");
if (null != eval2) {
- eval2.testOutput();
+ eval2.testOutputAge();
}
}
+ System.out.printf("\n");
GeneralComputingService gcsvr = Utils.getGeneralComputingService("print");
ValueInfo vinfo = new ValueInfo();
@@ -129,13 +134,10 @@ public class DurableNodeValueNGPrintTest {
long[][] fidinfostack = {{2L, 1L}, {0L, 1L}};
vinfo.handler = handler;
vinfo.transtable = m_act.getTranslateTable();
- vinfo.dtype = DurableType.INTEGER;
+ vinfo.dtype = DurableType.SHORT;
vinfo.frames = Utils.genNativeParamForm(objstack, fidinfostack);
ValueInfo[] vinfos = {vinfo};
gcsvr.perform(vinfos);
- System.out.printf("ObjStack: %s \n", Arrays.deepToString(objstack.toArray()));
- System.out.printf("FidStack: %s \n", Arrays.deepToString(fidinfostack));
- System.out.printf("ParamFrame: %s \n", Arrays.deepToString(vinfo.frames));
}
@@ -230,9 +232,6 @@ public class DurableNodeValueNGPrintTest {
vinfo.frames = Utils.genNativeParamForm(objstack, fidinfostack);
ValueInfo[] vinfos = {vinfo};
gcsvr.perform(vinfos);
- System.out.printf("ObjStack: %s \n", Arrays.deepToString(objstack.toArray()));
- System.out.printf("FidStack: %s \n", Arrays.deepToString(fidinfostack));
- System.out.printf("ParamFrame: %s \n", Arrays.deepToString(vinfo.frames));
// Assert.assert, expected);(plist, plist2);
http://git-wip-us.apache.org/repos/asf/incubator-mnemonic/blob/56e086cf/mnemonic-computing-services/mnemonic-utilities-service/src/test/java/org/apache/mnemonic/service/computingservice/Person.java
----------------------------------------------------------------------
diff --git a/mnemonic-computing-services/mnemonic-utilities-service/src/test/java/org/apache/mnemonic/service/computingservice/Person.java b/mnemonic-computing-services/mnemonic-utilities-service/src/test/java/org/apache/mnemonic/service/computingservice/Person.java
index b3f990d..6bc1725 100644
--- a/mnemonic-computing-services/mnemonic-utilities-service/src/test/java/org/apache/mnemonic/service/computingservice/Person.java
+++ b/mnemonic-computing-services/mnemonic-utilities-service/src/test/java/org/apache/mnemonic/service/computingservice/Person.java
@@ -57,10 +57,14 @@ public abstract class Person<E> implements Durable, Comparable<Person<E>> {
null == getMother() ? "No Recorded Mother" : "Has Recorded Mother");
}
+ public void testOutputAge() throws RetrieveDurableEntityError {
+ System.out.printf("(Person %s, Age: %d) ", getName(), getAge());
+ }
+
public int compareTo(Person<E> anotherPerson) {
int ret = 0;
if (0 == ret) {
- ret = getAge().compareTo(anotherPerson.getAge());
+ ret = ((Short)getAge()).compareTo(anotherPerson.getAge());
}
if (0 == ret) {
ret = getName().compareTo(anotherPerson.getName());
@@ -69,10 +73,10 @@ public abstract class Person<E> implements Durable, Comparable<Person<E>> {
}
@DurableGetter(Id = 1L)
- public abstract Short getAge();
+ public abstract short getAge();
@DurableSetter
- public abstract void setAge(Short age);
+ public abstract void setAge(short age);
@DurableGetter(Id = 2L)
public abstract String getName() throws RetrieveDurableEntityError;
http://git-wip-us.apache.org/repos/asf/incubator-mnemonic/blob/56e086cf/mnemonic-core/src/main/java/org/apache/mnemonic/Utils.java
----------------------------------------------------------------------
diff --git a/mnemonic-core/src/main/java/org/apache/mnemonic/Utils.java b/mnemonic-core/src/main/java/org/apache/mnemonic/Utils.java
index aace424..6e66cfd 100644
--- a/mnemonic-core/src/main/java/org/apache/mnemonic/Utils.java
+++ b/mnemonic-core/src/main/java/org/apache/mnemonic/Utils.java
@@ -425,8 +425,8 @@ public class Utils {
throw new IllegalArgumentException("the length of field id array is not exactly 2");
}
for (int idx = 0; idx < fidinfo.length; ++idx) {
- ret[idx * 2] = 0;
- ret[idx * 2 + 1] = 0;
+ ret[idx * 2] = -1L;
+ ret[idx * 2 + 1] = 0L;
fid = fidinfo[idx];
if (fid <= 0) {
if (allowfidnull && 0 == idx) {