aboutsummaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
authorJakob Odersky <jodersky@gmail.com>2013-05-21 19:30:04 +0200
committerJakob Odersky <jodersky@gmail.com>2013-05-21 19:30:04 +0200
commit15b42451d124564b9ccf4a6365d2f50f7f3896c9 (patch)
tree48025113c45e4b54b2c1911203530cabef088990 /src/main
parent60cac1f48d76329fa94034cea84499fb93337953 (diff)
downloadakka-serial-15b42451d124564b9ccf4a6365d2f50f7f3896c9.tar.gz
akka-serial-15b42451d124564b9ccf4a6365d2f50f7f3896c9.tar.bz2
akka-serial-15b42451d124564b9ccf4a6365d2f50f7f3896c9.zip
extract native libraries
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/com/github/jodersky/flow/NativeSerial.java2
-rw-r--r--src/main/scala/com/github/jodersky/flow/NativeLoader.scala35
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