40 using namespace graphlab;
46 template<
typename G,
typename U>
49 template<
typename G,
typename U>
60 static jlong createCore (JNIEnv *env, jobject obj,
int argc,
char **argv){
79 (*jni_core)().parse_options(argc, argv);
83 return (
long) jni_core;
91 JNIEXPORT jlong JNICALL
92 Java_org_graphlab_Core_createCore__
93 (JNIEnv *env, jobject obj){
94 return createCore(env, obj, 0, NULL);
97 JNIEXPORT jlong JNICALL
98 Java_org_graphlab_Core_createCore__Ljava_lang_String_2
99 (JNIEnv *env, jobject obj, jstring command_line_args){
102 const char *cstr = NULL;
103 cstr = env->GetStringUTFChars(command_line_args, NULL);
110 snprintf(buffer, 1024,
"x %s", cstr);
111 env->ReleaseStringUTFChars(command_line_args, cstr);
115 if (0 != wordexp(buffer, &we_result, 0))
return 0;
118 jlong ptr = createCore(env, obj, we_result.we_wordc, we_result.we_wordv);
121 wordfree(&we_result);
126 JNIEXPORT
void JNICALL
127 Java_org_graphlab_Core_destroyCore
128 (JNIEnv *env, jobject obj, jlong ptr){
130 if (NULL == env || 0 == ptr){
133 "java/lang/IllegalArgumentException",
134 "ptr must not be null.");
145 JNIEXPORT
void JNICALL
146 Java_org_graphlab_Core_resizeGraph
147 (JNIEnv *env, jobject obj, jlong ptr, jint count){
149 if (NULL == env || 0 == ptr){
152 "java/lang/IllegalArgumentException",
153 "ptr must not be null.");
158 (*jni_core)().graph().resize(count);
162 JNIEXPORT
void JNICALL
163 Java_org_graphlab_Core_addVertex
164 (JNIEnv *env, jobject obj, jlong ptr,
165 jobject app_vertex, jint vertex_id){
167 if (NULL == env || 0 == ptr){
170 "java/lang/IllegalArgumentException",
171 "ptr must not be null.");
178 (*jni_core)().graph()
183 JNIEXPORT
void JNICALL
184 Java_org_graphlab_Core_addEdge
185 (JNIEnv *env, jobject obj, jlong ptr,
186 jint source, jint target, jobject app_edge){
188 if (NULL == env || 0 == ptr){
191 "java/lang/IllegalArgumentException",
192 "ptr must not be null.");
199 (*jni_core)().graph().add_edge(source, target,
proxy_edge(env, app_edge));
203 JNIEXPORT jdouble JNICALL
204 Java_org_graphlab_Core_start
205 (JNIEnv *env, jobject obj, jlong ptr){
207 if (NULL == env || 0 == ptr){
210 "java/lang/IllegalArgumentException",
211 "ptr must not be null.");
216 (*jni_core)().engine().get_options().print();
218 double runtime = (*jni_core)().start();
223 JNIEXPORT jlong JNICALL
224 Java_org_graphlab_Core_lastUpdateCount
225 (JNIEnv *env, jobject obj, jlong ptr){
227 if (NULL == env || 0 == ptr){
230 "java/lang/IllegalArgumentException",
231 "ptr must not be null.");
236 return (*jni_core)().engine().last_update_count();
240 JNIEXPORT
void JNICALL
241 Java_org_graphlab_Core_addGlobalConst
242 (JNIEnv *env, jobject obj, jlong ptr, jstring key, jobject to_store){
244 if (NULL == env || 0 == ptr){
247 "java/lang/IllegalArgumentException",
248 "ptr must not be null.");
255 const char * key_str = env->GetStringUTFChars(key, NULL);
257 (*jni_core)().add_global_const(std::string(key_str),
java_any(env, to_store));
260 env->ReleaseStringUTFChars(key, key_str);
266 JNIEXPORT
void JNICALL
267 Java_org_graphlab_Core_addGlobal
268 (JNIEnv *env, jobject obj, jlong ptr, jstring key, jobject to_store){
270 if (NULL == env || 0 == ptr){
273 "java/lang/IllegalArgumentException",
274 "ptr must not be null.");
281 const char * key_str = env->GetStringUTFChars(key, NULL);
284 (*jni_core)().add_global(std::string(key_str), a);
287 env->ReleaseStringUTFChars(key, key_str);
293 JNIEXPORT
void JNICALL
294 Java_org_graphlab_Core_setGlobal
295 (JNIEnv *env, jobject obj, jlong ptr, jstring key, jobject to_store){
297 if (NULL == env || 0 == ptr){
300 "java/lang/IllegalArgumentException",
301 "ptr must not be null.");
308 const char * key_str = env->GetStringUTFChars(key, NULL);
311 (*jni_core)().set_global(std::string(key_str), a);
314 env->ReleaseStringUTFChars(key, key_str);
321 JNIEXPORT jobject JNICALL
322 Java_org_graphlab_Core_getGlobal
323 (JNIEnv *env, jobject obj, jlong ptr, jstring key){
325 if (NULL == env || 0 == ptr){
328 "java/lang/IllegalArgumentException",
329 "ptr must not be null.");
336 const char * key_str = env->GetStringUTFChars(key, NULL);
338 java_any stored = (*jni_core)().get_global<java_any>(std::string(key_str));
341 env->ReleaseStringUTFChars(key, key_str);
343 return env->NewLocalRef(stored.
obj());
347 JNIEXPORT
void JNICALL
348 Java_org_graphlab_Core_setNCpus
349 (JNIEnv * env, jobject obj, jlong ptr, jlong ncpus) {
351 if (NULL == env || 0 == ptr){
354 "java/lang/IllegalArgumentException",
355 "ptr must not be null.");
360 (*jni_core)().set_ncpus(ncpus);
364 JNIEXPORT
void JNICALL
365 Java_org_graphlab_Core_setSchedulerType
366 (JNIEnv * env, jobject obj, jlong ptr, jstring scheduler_str) {
368 if (NULL == env || 0 == ptr){
371 "java/lang/IllegalArgumentException",
372 "ptr must not be null.");
376 const char *str = env->GetStringUTFChars(scheduler_str, NULL);
377 if (NULL == str)
return;
380 (*jni_core)().set_scheduler_type(std::string(str));
381 env->ReleaseStringUTFChars(scheduler_str, str);
385 JNIEXPORT
void JNICALL
386 Java_org_graphlab_Core_setScopeType
387 (JNIEnv * env, jobject obj, jlong ptr, jstring scope_str) {
389 if (NULL == env || 0 == ptr){
392 "java/lang/IllegalArgumentException",
393 "ptr must not be null.");
397 const char *str = env->GetStringUTFChars(scope_str, NULL);
398 if (NULL == str)
return;
401 (*jni_core)().set_scope_type(std::string(str));
402 env->ReleaseStringUTFChars(scope_str, str);
406 JNIEXPORT
void JNICALL
407 Java_org_graphlab_Core_schedule
408 (JNIEnv * env, jobject obj,
409 jlong core_ptr, jobject updater, jint vertex_id){
411 if (NULL == env || 0 == core_ptr){
414 "java/lang/IllegalArgumentException",
415 "core_ptr must not be null.");
423 (*jni_core)().schedule(vertex_id,
proxy_updater(env, updater));
427 JNIEXPORT
void JNICALL
428 Java_org_graphlab_Core_scheduleAll
429 (JNIEnv * env, jobject obj,
430 jlong core_ptr, jobject updater) {
432 if (NULL == env || 0 == core_ptr){
435 "java/lang/IllegalArgumentException",
436 "core_ptr and updater_ptr must not be null.");
448 JNIEXPORT
void JNICALL
449 Java_org_graphlab_Core_addAggregator
450 (JNIEnv * env, jobject obj,
451 jlong core_ptr, jstring key, jobject aggregator,
454 if (NULL == env || 0 == core_ptr){
457 "java/lang/IllegalArgumentException",
458 "core_ptr and updater_ptr must not be null.");
466 const char * key_str = env->GetStringUTFChars(key, NULL);
467 (*jni_core)().add_aggregator(std::string(key_str),
470 env->ReleaseStringUTFChars(key, key_str);
474 JNIEXPORT
void JNICALL
475 Java_org_graphlab_Core_aggregateNow
476 (JNIEnv * env, jobject obj,
477 jlong core_ptr, jstring key){
479 if (NULL == env || 0 == core_ptr){
482 "java/lang/IllegalArgumentException",
483 "core_ptr and updater_ptr must not be null.");
491 const char * key_str = env->GetStringUTFChars(key, NULL);
492 (*jni_core)().aggregate_now(std::string(key_str));
493 env->ReleaseStringUTFChars(key, key_str);