diff options
Diffstat (limited to 'java/src/com/zerotier/one/DataStore.java')
-rw-r--r-- | java/src/com/zerotier/one/DataStore.java | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/java/src/com/zerotier/one/DataStore.java b/java/src/com/zerotier/one/DataStore.java new file mode 100644 index 00000000..d15b2d3d --- /dev/null +++ b/java/src/com/zerotier/one/DataStore.java @@ -0,0 +1,73 @@ +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; + + public DataStore(DataStoreFileProvider provider) { + this._provider = provider; + } + + @Override + public int onDataStorePut(String name, byte[] buffer, boolean secure) { + System.out.println("Writing File: " + name); + try { + FileOutputStream fos = _provider.getOutputFileStream(name); + fos.write(buffer); + fos.close(); + return 0; + } catch (FileNotFoundException fnf) { + fnf.printStackTrace(); + return -1; + } catch (IOException io) { + io.printStackTrace(); + return -2; + } + } + + @Override + public int onDelete(String name) { + System.out.println("Deleting File: " + name); + try { + _provider.deleteFile(name); + return 0; + } catch (IOException ex) { + ex.printStackTrace(); + return -1; + } + } + + @Override + public long onDataStoreGet(String name, byte[] out_buffer, + long bufferIndex, long[] out_objectSize) { + System.out.println("Reading File: " + name); + 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) { + // Can't read a file that doesn't exist! + out_objectSize[0] = 0; + return 0; + } catch (IOException io) { + io.printStackTrace(); + return -2; + } + } + + +} |