summaryrefslogtreecommitdiff
path: root/java
diff options
context:
space:
mode:
authorGrant Limberg <glimberg@gmail.com>2015-05-02 17:32:12 -0700
committerGrant Limberg <glimberg@gmail.com>2015-05-02 17:32:12 -0700
commita9307693a691a193f6d55cc6fa635b4b585e87e4 (patch)
treef2aa8ba071194833f5b1676f8fc56972cd62e84b /java
parent742c59a7c7ca1bcd47984e6db868d6e42580811e (diff)
downloadinfinitytier-a9307693a691a193f6d55cc6fa635b4b585e87e4.tar.gz
infinitytier-a9307693a691a193f6d55cc6fa635b4b585e87e4.zip
Adding Data Store implementations for Android and normal Java
Diffstat (limited to 'java')
-rw-r--r--java/src/com/zerotier/one/AndroidFileProvider.java40
-rw-r--r--java/src/com/zerotier/one/DataStore.java65
-rw-r--r--java/src/com/zerotier/one/DataStoreFileProvider.java12
-rw-r--r--java/src/com/zerotier/one/JavaFileProvider.java38
4 files changed, 155 insertions, 0 deletions
diff --git a/java/src/com/zerotier/one/AndroidFileProvider.java b/java/src/com/zerotier/one/AndroidFileProvider.java
new file mode 100644
index 00000000..9979001a
--- /dev/null
+++ b/java/src/com/zerotier/one/AndroidFileProvider.java
@@ -0,0 +1,40 @@
+package com.zerotier.one;
+
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+
+import android.content.Context;
+
+public class AndroidFileProvider implements DataStoreFileProvider {
+ Context _ctx;
+
+ AndroidFileProvider(Context ctx) {
+ this._ctx = ctx;
+ }
+
+ @Override
+ public FileInputStream getInputFileStream(String name)
+ throws FileNotFoundException {
+ // TODO Auto-generated method stub
+ return _ctx.openFileInput(name);
+ }
+
+ @Override
+ public FileOutputStream getOutputFileStream(String name)
+ throws FileNotFoundException {
+ // TODO Auto-generated method stub
+ return _ctx.openFileOutput(name, Context.MODE_PRIVATE);
+ }
+
+ @Override
+ public void deleteFile(String name) throws IOException {
+ boolean success = _ctx.deleteFile(name);
+ if(!success)
+ {
+ throw new IOException("Unable to delete file.");
+ }
+ }
+
+}
diff --git a/java/src/com/zerotier/one/DataStore.java b/java/src/com/zerotier/one/DataStore.java
new file mode 100644
index 00000000..e711ab87
--- /dev/null
+++ b/java/src/com/zerotier/one/DataStore.java
@@ -0,0 +1,65 @@
+package com.zerotier.one;
+
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+
+import com.zerotier.sdk.DataStoreGetListener;
+import com.zerotier.sdk.DataStorePutListener;
+
+public class DataStore implements DataStoreGetListener, DataStorePutListener {
+
+ private DataStoreFileProvider _provider;
+
+ DataStore(DataStoreFileProvider provider) {
+ this._provider = provider;
+ }
+
+ @Override
+ public int onDataStorePut(String name, byte[] buffer, boolean secure) {
+ try {
+ FileOutputStream fos = _provider.getOutputFileStream(name);
+ fos.write(buffer);
+ fos.close();
+ return buffer.length;
+ } catch (FileNotFoundException fnf) {
+
+ } catch (IOException io) {
+
+ }
+ return 0;
+ }
+
+ @Override
+ public int onDelete(String name) {
+ try {
+ _provider.deleteFile(name);
+ return 0;
+ } catch (IOException ex) {
+ return -1;
+ }
+ }
+
+ @Override
+ public long onDataStoreGet(String name, byte[] out_buffer,
+ long bufferIndex, long[] out_objectSize) {
+ try {
+ FileInputStream fin = _provider.getInputFileStream(name);
+ out_objectSize[0] = fin.getChannel().size();
+ if(bufferIndex > 0)
+ {
+ fin.skip(bufferIndex);
+ }
+ int read = fin.read(out_buffer);
+ fin.close();
+ return read;
+ } catch (FileNotFoundException fnf) {
+ return -1;
+ } catch (IOException io) {
+ return -2;
+ }
+ }
+
+
+}
diff --git a/java/src/com/zerotier/one/DataStoreFileProvider.java b/java/src/com/zerotier/one/DataStoreFileProvider.java
new file mode 100644
index 00000000..ffe078eb
--- /dev/null
+++ b/java/src/com/zerotier/one/DataStoreFileProvider.java
@@ -0,0 +1,12 @@
+package com.zerotier.one;
+
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+
+public interface DataStoreFileProvider {
+ FileInputStream getInputFileStream(String name) throws FileNotFoundException;
+ FileOutputStream getOutputFileStream(String name) throws FileNotFoundException;
+ void deleteFile(String name) throws IOException;
+}
diff --git a/java/src/com/zerotier/one/JavaFileProvider.java b/java/src/com/zerotier/one/JavaFileProvider.java
new file mode 100644
index 00000000..73c98a9e
--- /dev/null
+++ b/java/src/com/zerotier/one/JavaFileProvider.java
@@ -0,0 +1,38 @@
+package com.zerotier.one;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+
+public class JavaFileProvider implements DataStoreFileProvider {
+ private String _path;
+
+ public JavaFileProvider(String path) {
+ this._path = path;
+ }
+
+ @Override
+ public FileInputStream getInputFileStream(String name)
+ throws FileNotFoundException {
+ File f = new File(_path + File.pathSeparator + name);
+ return new FileInputStream(f);
+ }
+
+ @Override
+ public FileOutputStream getOutputFileStream(String name)
+ throws FileNotFoundException {
+ File f = new File(_path + File.pathSeparator + name);
+ return new FileOutputStream(f);
+ }
+
+ @Override
+ public void deleteFile(String name) throws IOException {
+ File f = new File(_path + File.pathSeparator + name);
+ boolean success = f.delete();
+ if(!success) {
+ throw new IOException("Unable to delete file: " + _path + File.pathSeparator + name);
+ }
+ }
+}