ZeroTierOne/java/src/com/zerotier/one/DataStore.java
2015-05-23 18:29:16 -07:00

73 lines
1.8 KiB
Java

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;
}
}
}