Example #1
0
	bool AbstractToJObject (value inValue, jobject &outObject) {
		
		JNIObject *jniobj = 0;
		
		if (AbstractToObject (inValue, jniobj)) {
			
			outObject = jniobj->GetJObject ();
			return true;
			
		}
		
		static int id__jobject = -1;
		
		if (id__jobject < 0) {
			
			id__jobject = val_id ("__jobject");
			
		}
		
		value jobj = val_field (inValue, id__jobject);
		
		if (val_is_null (jobj)) {
			
			return false;
			
		}
		
		return AbstractToJObject (jobj, outObject);
		
	}
Example #2
0
bool AbstractToJObject(value inValue, jobject &outObject)
{
   HaxeJavaLink *link = 0;
   if (AbstractToObject(inValue,link))
   {
      outObject = link->GetJObject();
      return true;
   }

   JNIObject *jniobj = 0;
   if (AbstractToObject(inValue,jniobj))
   {
      outObject = jniobj->GetJObject();
      return true;
   }

   static int id__jobject = -1;
   if (id__jobject<0)
      id__jobject =  val_id("__jobject");

   value jobj = val_field(inValue,id__jobject);
   if (val_is_null(jobj))
      return false;

   return AbstractToJObject(jobj,outObject);
}
static jbyteArray android_net_wifi_readKernelLog(JNIEnv *env, jclass cls) {
    JNIHelper helper(env);
    ALOGV("Reading kernel logs");

    int size = klogctl(/* SYSLOG_ACTION_SIZE_BUFFER */ 10, 0, 0);
    if (size < 1) {
        ALOGD("no kernel logs");
        return helper.newByteArray(0).detach();
    }

    char *buf = (char *)malloc(size);
    if (buf == NULL) {
        ALOGD("can't allocate temporary storage");
        return helper.newByteArray(0).detach();
    }

    int read = klogctl(/* SYSLOG_ACTION_READ_ALL */ 3, buf, size);
    if (read < 0) {
        ALOGD("can't read logs - %d", read);
        free(buf);
        return helper.newByteArray(0).detach();
    } else {
        ALOGV("read %d bytes", read);
    }

    if (read != size) {
        ALOGV("read %d bytes, expecting %d", read, size);
    }

    JNIObject<jbyteArray> result = helper.newByteArray(read);
    if (result.isNull()) {
        ALOGD("can't allocate array");
        free(buf);
        return result.detach();
    }

    helper.setByteArrayRegion(result, 0, read, (jbyte*)buf);
    free(buf);
    return result.detach();
}