diff options
author | Grant Limberg <glimberg@gmail.com> | 2015-05-02 17:32:12 -0700 |
---|---|---|
committer | Grant Limberg <glimberg@gmail.com> | 2015-05-02 17:32:12 -0700 |
commit | a9307693a691a193f6d55cc6fa635b4b585e87e4 (patch) | |
tree | f2aa8ba071194833f5b1676f8fc56972cd62e84b /java | |
parent | 742c59a7c7ca1bcd47984e6db868d6e42580811e (diff) | |
download | infinitytier-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.java | 40 | ||||
-rw-r--r-- | java/src/com/zerotier/one/DataStore.java | 65 | ||||
-rw-r--r-- | java/src/com/zerotier/one/DataStoreFileProvider.java | 12 | ||||
-rw-r--r-- | java/src/com/zerotier/one/JavaFileProvider.java | 38 |
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); + } + } +} |