diff options
author | Jakob Odersky <jodersky@gmail.com> | 2013-05-21 19:30:04 +0200 |
---|---|---|
committer | Jakob Odersky <jodersky@gmail.com> | 2013-05-21 19:30:04 +0200 |
commit | 15b42451d124564b9ccf4a6365d2f50f7f3896c9 (patch) | |
tree | 48025113c45e4b54b2c1911203530cabef088990 /src | |
parent | 60cac1f48d76329fa94034cea84499fb93337953 (diff) | |
download | akka-serial-15b42451d124564b9ccf4a6365d2f50f7f3896c9.tar.gz akka-serial-15b42451d124564b9ccf4a6365d2f50f7f3896c9.tar.bz2 akka-serial-15b42451d124564b9ccf4a6365d2f50f7f3896c9.zip |
extract native libraries
Diffstat (limited to 'src')
-rw-r--r-- | src/main/java/com/github/jodersky/flow/NativeSerial.java | 2 | ||||
-rw-r--r-- | src/main/scala/com/github/jodersky/flow/NativeLoader.scala | 35 |
2 files changed, 36 insertions, 1 deletions
diff --git a/src/main/java/com/github/jodersky/flow/NativeSerial.java b/src/main/java/com/github/jodersky/flow/NativeSerial.java index 10a82c9..f5d708e 100644 --- a/src/main/java/com/github/jodersky/flow/NativeSerial.java +++ b/src/main/java/com/github/jodersky/flow/NativeSerial.java @@ -3,7 +3,7 @@ package com.github.jodersky.flow; public class NativeSerial { static { - System.loadLibrary("flow"); + NativeLoader.load(); } final static int E_PERMISSION = -1; diff --git a/src/main/scala/com/github/jodersky/flow/NativeLoader.scala b/src/main/scala/com/github/jodersky/flow/NativeLoader.scala new file mode 100644 index 0000000..91b3fd8 --- /dev/null +++ b/src/main/scala/com/github/jodersky/flow/NativeLoader.scala @@ -0,0 +1,35 @@ +package com.github.jodersky.flow + +import java.io.File +import java.io.FileOutputStream + +object NativeLoader { + + def load = { + val os = System.getProperty("os.name").toLowerCase + val arch = System.getProperty("os.arch").toLowerCase + + val in = NativeLoader.getClass().getResourceAsStream("/native/" + os + "/" + arch + "/" + "libflow.so") + val temp = File.createTempFile("flow" + os + arch, ".so"); + temp.deleteOnExit() + val out = new FileOutputStream(temp); + + try { + var read: Int = 0; ; + val buffer = new Array[Byte](4096); + do { + read = in.read(buffer) + if (read != -1) { + out.write(buffer, 0, read); + } + } while (read != -1) + } finally { + in.close() + out.close + } + + System.load(temp.getAbsolutePath()) + + } + +}
\ No newline at end of file |