summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimon Rettberg2015-07-08 16:07:32 +0200
committerSimon Rettberg2015-07-08 16:07:32 +0200
commit05c4a596363601e7aa2157409eda9be1ec087c57 (patch)
treef6b5c1f18d31a9016f8cadcb147ac512ffcb6c14
parentMake master server address configurable; dynamic retrying, controlled by call... (diff)
downloadmaster-sync-shared-05c4a596363601e7aa2157409eda9be1ec087c57.tar.gz
master-sync-shared-05c4a596363601e7aa2157409eda9be1ec087c57.tar.xz
master-sync-shared-05c4a596363601e7aa2157409eda9be1ec087c57.zip
Thrift api
-rw-r--r--src/main/java/org/openslx/bwlp/thrift/iface/SatelliteServer.java36
-rw-r--r--src/main/java/org/openslx/bwlp/thrift/iface/TransferStatus.java (renamed from src/main/java/org/openslx/bwlp/thrift/iface/UploadStatus.java)58
-rw-r--r--src/main/java/org/openslx/thrifthelper/TransferStatusWrapper.java71
-rw-r--r--src/main/thrift/bwlp.thrift6
4 files changed, 121 insertions, 50 deletions
diff --git a/src/main/java/org/openslx/bwlp/thrift/iface/SatelliteServer.java b/src/main/java/org/openslx/bwlp/thrift/iface/SatelliteServer.java
index 4c6196f..f15b0ad 100644
--- a/src/main/java/org/openslx/bwlp/thrift/iface/SatelliteServer.java
+++ b/src/main/java/org/openslx/bwlp/thrift/iface/SatelliteServer.java
@@ -44,7 +44,7 @@ public class SatelliteServer {
public void cancelUpload(String uploadToken) throws org.apache.thrift.TException;
- public UploadStatus queryUploadStatus(String uploadToken) throws TInvalidTokenException, org.apache.thrift.TException;
+ public TransferStatus queryUploadStatus(String uploadToken) throws TInvalidTokenException, org.apache.thrift.TException;
public TransferInformation requestDownload(String userToken, String imageVersionId) throws TAuthorizationException, org.apache.thrift.TException;
@@ -278,7 +278,7 @@ public class SatelliteServer {
return;
}
- public UploadStatus queryUploadStatus(String uploadToken) throws TInvalidTokenException, org.apache.thrift.TException
+ public TransferStatus queryUploadStatus(String uploadToken) throws TInvalidTokenException, org.apache.thrift.TException
{
send_queryUploadStatus(uploadToken);
return recv_queryUploadStatus();
@@ -291,7 +291,7 @@ public class SatelliteServer {
sendBase("queryUploadStatus", args);
}
- public UploadStatus recv_queryUploadStatus() throws TInvalidTokenException, org.apache.thrift.TException
+ public TransferStatus recv_queryUploadStatus() throws TInvalidTokenException, org.apache.thrift.TException
{
queryUploadStatus_result result = new queryUploadStatus_result();
receiveBase(result, "queryUploadStatus");
@@ -1200,7 +1200,7 @@ public class SatelliteServer {
prot.writeMessageEnd();
}
- public UploadStatus getResult() throws TInvalidTokenException, org.apache.thrift.TException {
+ public TransferStatus getResult() throws TInvalidTokenException, org.apache.thrift.TException {
if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
throw new IllegalStateException("Method call not finished!");
}
@@ -3147,7 +3147,7 @@ public class SatelliteServer {
}
}
- public static class queryUploadStatus<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, queryUploadStatus_args, UploadStatus> {
+ public static class queryUploadStatus<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, queryUploadStatus_args, TransferStatus> {
public queryUploadStatus() {
super("queryUploadStatus");
}
@@ -3156,10 +3156,10 @@ public class SatelliteServer {
return new queryUploadStatus_args();
}
- public AsyncMethodCallback<UploadStatus> getResultHandler(final AsyncFrameBuffer fb, final int seqid) {
+ public AsyncMethodCallback<TransferStatus> getResultHandler(final AsyncFrameBuffer fb, final int seqid) {
final org.apache.thrift.AsyncProcessFunction fcall = this;
- return new AsyncMethodCallback<UploadStatus>() {
- public void onComplete(UploadStatus o) {
+ return new AsyncMethodCallback<TransferStatus>() {
+ public void onComplete(TransferStatus o) {
queryUploadStatus_result result = new queryUploadStatus_result();
result.success = o;
try {
@@ -3199,7 +3199,7 @@ public class SatelliteServer {
return false;
}
- public void start(I iface, queryUploadStatus_args args, org.apache.thrift.async.AsyncMethodCallback<UploadStatus> resultHandler) throws TException {
+ public void start(I iface, queryUploadStatus_args args, org.apache.thrift.async.AsyncMethodCallback<TransferStatus> resultHandler) throws TException {
iface.queryUploadStatus(args.uploadToken,resultHandler);
}
}
@@ -8185,7 +8185,7 @@ public class SatelliteServer {
schemes.put(TupleScheme.class, new queryUploadStatus_resultTupleSchemeFactory());
}
- public UploadStatus success; // required
+ public TransferStatus success; // required
public TInvalidTokenException ex1; // required
/** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
@@ -8254,7 +8254,7 @@ public class SatelliteServer {
static {
Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
tmpMap.put(_Fields.SUCCESS, new org.apache.thrift.meta_data.FieldMetaData("success", org.apache.thrift.TFieldRequirementType.DEFAULT,
- new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, UploadStatus.class)));
+ new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, TransferStatus.class)));
tmpMap.put(_Fields.EX1, new org.apache.thrift.meta_data.FieldMetaData("ex1", org.apache.thrift.TFieldRequirementType.DEFAULT,
new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRUCT)));
metaDataMap = Collections.unmodifiableMap(tmpMap);
@@ -8265,7 +8265,7 @@ public class SatelliteServer {
}
public queryUploadStatus_result(
- UploadStatus success,
+ TransferStatus success,
TInvalidTokenException ex1)
{
this();
@@ -8278,7 +8278,7 @@ public class SatelliteServer {
*/
public queryUploadStatus_result(queryUploadStatus_result other) {
if (other.isSetSuccess()) {
- this.success = new UploadStatus(other.success);
+ this.success = new TransferStatus(other.success);
}
if (other.isSetEx1()) {
this.ex1 = new TInvalidTokenException(other.ex1);
@@ -8295,11 +8295,11 @@ public class SatelliteServer {
this.ex1 = null;
}
- public UploadStatus getSuccess() {
+ public TransferStatus getSuccess() {
return this.success;
}
- public queryUploadStatus_result setSuccess(UploadStatus success) {
+ public queryUploadStatus_result setSuccess(TransferStatus success) {
this.success = success;
return this;
}
@@ -8349,7 +8349,7 @@ public class SatelliteServer {
if (value == null) {
unsetSuccess();
} else {
- setSuccess((UploadStatus)value);
+ setSuccess((TransferStatus)value);
}
break;
@@ -8541,7 +8541,7 @@ public class SatelliteServer {
switch (schemeField.id) {
case 0: // SUCCESS
if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
- struct.success = new UploadStatus();
+ struct.success = new TransferStatus();
struct.success.read(iprot);
struct.setSuccessIsSet(true);
} else {
@@ -8620,7 +8620,7 @@ public class SatelliteServer {
TTupleProtocol iprot = (TTupleProtocol) prot;
BitSet incoming = iprot.readBitSet(2);
if (incoming.get(0)) {
- struct.success = new UploadStatus();
+ struct.success = new TransferStatus();
struct.success.read(iprot);
struct.setSuccessIsSet(true);
}
diff --git a/src/main/java/org/openslx/bwlp/thrift/iface/UploadStatus.java b/src/main/java/org/openslx/bwlp/thrift/iface/TransferStatus.java
index 54b07ef..ee881ae 100644
--- a/src/main/java/org/openslx/bwlp/thrift/iface/UploadStatus.java
+++ b/src/main/java/org/openslx/bwlp/thrift/iface/TransferStatus.java
@@ -32,15 +32,15 @@ import java.util.Arrays;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-public class UploadStatus implements org.apache.thrift.TBase<UploadStatus, UploadStatus._Fields>, java.io.Serializable, Cloneable, Comparable<UploadStatus> {
- private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("UploadStatus");
+public class TransferStatus implements org.apache.thrift.TBase<TransferStatus, TransferStatus._Fields>, java.io.Serializable, Cloneable, Comparable<TransferStatus> {
+ private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("TransferStatus");
private static final org.apache.thrift.protocol.TField BLOCK_STATUS_FIELD_DESC = new org.apache.thrift.protocol.TField("blockStatus", org.apache.thrift.protocol.TType.STRING, (short)1);
private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
static {
- schemes.put(StandardScheme.class, new UploadStatusStandardSchemeFactory());
- schemes.put(TupleScheme.class, new UploadStatusTupleSchemeFactory());
+ schemes.put(StandardScheme.class, new TransferStatusStandardSchemeFactory());
+ schemes.put(TupleScheme.class, new TransferStatusTupleSchemeFactory());
}
public ByteBuffer blockStatus; // required
@@ -110,13 +110,13 @@ public class UploadStatus implements org.apache.thrift.TBase<UploadStatus, Uploa
tmpMap.put(_Fields.BLOCK_STATUS, new org.apache.thrift.meta_data.FieldMetaData("blockStatus", org.apache.thrift.TFieldRequirementType.DEFAULT,
new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING , true)));
metaDataMap = Collections.unmodifiableMap(tmpMap);
- org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(UploadStatus.class, metaDataMap);
+ org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(TransferStatus.class, metaDataMap);
}
- public UploadStatus() {
+ public TransferStatus() {
}
- public UploadStatus(
+ public TransferStatus(
ByteBuffer blockStatus)
{
this();
@@ -126,15 +126,15 @@ public class UploadStatus implements org.apache.thrift.TBase<UploadStatus, Uploa
/**
* Performs a deep copy on <i>other</i>.
*/
- public UploadStatus(UploadStatus other) {
+ public TransferStatus(TransferStatus other) {
if (other.isSetBlockStatus()) {
this.blockStatus = org.apache.thrift.TBaseHelper.copyBinary(other.blockStatus);
;
}
}
- public UploadStatus deepCopy() {
- return new UploadStatus(this);
+ public TransferStatus deepCopy() {
+ return new TransferStatus(this);
}
@Override
@@ -151,12 +151,12 @@ public class UploadStatus implements org.apache.thrift.TBase<UploadStatus, Uploa
return blockStatus;
}
- public UploadStatus setBlockStatus(byte[] blockStatus) {
+ public TransferStatus setBlockStatus(byte[] blockStatus) {
setBlockStatus(blockStatus == null ? (ByteBuffer)null : ByteBuffer.wrap(blockStatus));
return this;
}
- public UploadStatus setBlockStatus(ByteBuffer blockStatus) {
+ public TransferStatus setBlockStatus(ByteBuffer blockStatus) {
this.blockStatus = blockStatus;
return this;
}
@@ -215,12 +215,12 @@ public class UploadStatus implements org.apache.thrift.TBase<UploadStatus, Uploa
public boolean equals(Object that) {
if (that == null)
return false;
- if (that instanceof UploadStatus)
- return this.equals((UploadStatus)that);
+ if (that instanceof TransferStatus)
+ return this.equals((TransferStatus)that);
return false;
}
- public boolean equals(UploadStatus that) {
+ public boolean equals(TransferStatus that) {
if (that == null)
return false;
@@ -242,7 +242,7 @@ public class UploadStatus implements org.apache.thrift.TBase<UploadStatus, Uploa
}
@Override
- public int compareTo(UploadStatus other) {
+ public int compareTo(TransferStatus other) {
if (!getClass().equals(other.getClass())) {
return getClass().getName().compareTo(other.getClass().getName());
}
@@ -276,7 +276,7 @@ public class UploadStatus implements org.apache.thrift.TBase<UploadStatus, Uploa
@Override
public String toString() {
- StringBuilder sb = new StringBuilder("UploadStatus(");
+ StringBuilder sb = new StringBuilder("TransferStatus(");
boolean first = true;
sb.append("blockStatus:");
@@ -311,15 +311,15 @@ public class UploadStatus implements org.apache.thrift.TBase<UploadStatus, Uploa
}
}
- private static class UploadStatusStandardSchemeFactory implements SchemeFactory {
- public UploadStatusStandardScheme getScheme() {
- return new UploadStatusStandardScheme();
+ private static class TransferStatusStandardSchemeFactory implements SchemeFactory {
+ public TransferStatusStandardScheme getScheme() {
+ return new TransferStatusStandardScheme();
}
}
- private static class UploadStatusStandardScheme extends StandardScheme<UploadStatus> {
+ private static class TransferStatusStandardScheme extends StandardScheme<TransferStatus> {
- public void read(org.apache.thrift.protocol.TProtocol iprot, UploadStatus struct) throws org.apache.thrift.TException {
+ public void read(org.apache.thrift.protocol.TProtocol iprot, TransferStatus struct) throws org.apache.thrift.TException {
org.apache.thrift.protocol.TField schemeField;
iprot.readStructBegin();
while (true)
@@ -348,7 +348,7 @@ public class UploadStatus implements org.apache.thrift.TBase<UploadStatus, Uploa
struct.validate();
}
- public void write(org.apache.thrift.protocol.TProtocol oprot, UploadStatus struct) throws org.apache.thrift.TException {
+ public void write(org.apache.thrift.protocol.TProtocol oprot, TransferStatus struct) throws org.apache.thrift.TException {
struct.validate();
oprot.writeStructBegin(STRUCT_DESC);
@@ -363,16 +363,16 @@ public class UploadStatus implements org.apache.thrift.TBase<UploadStatus, Uploa
}
- private static class UploadStatusTupleSchemeFactory implements SchemeFactory {
- public UploadStatusTupleScheme getScheme() {
- return new UploadStatusTupleScheme();
+ private static class TransferStatusTupleSchemeFactory implements SchemeFactory {
+ public TransferStatusTupleScheme getScheme() {
+ return new TransferStatusTupleScheme();
}
}
- private static class UploadStatusTupleScheme extends TupleScheme<UploadStatus> {
+ private static class TransferStatusTupleScheme extends TupleScheme<TransferStatus> {
@Override
- public void write(org.apache.thrift.protocol.TProtocol prot, UploadStatus struct) throws org.apache.thrift.TException {
+ public void write(org.apache.thrift.protocol.TProtocol prot, TransferStatus struct) throws org.apache.thrift.TException {
TTupleProtocol oprot = (TTupleProtocol) prot;
BitSet optionals = new BitSet();
if (struct.isSetBlockStatus()) {
@@ -385,7 +385,7 @@ public class UploadStatus implements org.apache.thrift.TBase<UploadStatus, Uploa
}
@Override
- public void read(org.apache.thrift.protocol.TProtocol prot, UploadStatus struct) throws org.apache.thrift.TException {
+ public void read(org.apache.thrift.protocol.TProtocol prot, TransferStatus struct) throws org.apache.thrift.TException {
TTupleProtocol iprot = (TTupleProtocol) prot;
BitSet incoming = iprot.readBitSet(1);
if (incoming.get(0)) {
diff --git a/src/main/java/org/openslx/thrifthelper/TransferStatusWrapper.java b/src/main/java/org/openslx/thrifthelper/TransferStatusWrapper.java
new file mode 100644
index 0000000..5a28461
--- /dev/null
+++ b/src/main/java/org/openslx/thrifthelper/TransferStatusWrapper.java
@@ -0,0 +1,71 @@
+package org.openslx.thrifthelper;
+
+public class TransferStatusWrapper
+{
+
+ public static enum BlockStatus {
+ COMPLETE, MISSING, UPLOADING, QUEUED_FOR_COPYING, COPYING;
+ }
+
+ // 0 = complete, 1 = missing, 2 = uploading, 3 = queued for copying, 4 = copying
+ private byte[] blocks = null;
+
+ public TransferStatusWrapper(byte[] blocks) {
+ this.blocks = blocks;
+ }
+
+ public void setBlocks(byte[] blocks) {
+ this.blocks = blocks;
+ }
+
+ public boolean isComplete() {
+ for (byte block : blocks) {
+ if (block != 0)
+ return false;
+ }
+ return true;
+ }
+
+ public float getComplete() {
+ int done = 0;
+ for (byte block : blocks) {
+ if (block == 0) {
+ done++;
+ }
+ }
+ return ((float)done / (float)blocks.length);
+ }
+
+ public float getPercentComplete() {
+ return getComplete() * 100f;
+ }
+
+ public byte[] getBlocks() {
+ return this.blocks;
+ }
+
+ public boolean isEmpty() {
+ return blocks == null || blocks.length == 0;
+ }
+
+ public int getBlockCount() {
+ return blocks.length;
+ }
+
+ public BlockStatus get(int index) {
+ switch (blocks[index]) {
+ case 0:
+ return BlockStatus.COMPLETE;
+ case 1:
+ return BlockStatus.MISSING;
+ case 2:
+ return BlockStatus.UPLOADING;
+ case 3:
+ return BlockStatus.QUEUED_FOR_COPYING;
+ case 4:
+ return BlockStatus.COPYING;
+ }
+ return null;
+ }
+
+}
diff --git a/src/main/thrift/bwlp.thrift b/src/main/thrift/bwlp.thrift
index 76a0630..0f4217a 100644
--- a/src/main/thrift/bwlp.thrift
+++ b/src/main/thrift/bwlp.thrift
@@ -282,8 +282,8 @@ struct TransferInformation {
}
// Used to tell status of an upload. The blockStatus is one byte per 16MB block,
-// 0 = complete, 1 = missing, 2 = uploading, 3 = queued for copying, 4 = copying
-struct UploadStatus {
+// 0 = complete, 1 = missing, 2 = uploading, 3 = queued for copying, 4 = copying
+struct TransferStatus {
1: binary blockStatus,
}
@@ -330,7 +330,7 @@ service SatelliteServer {
TransferInformation requestImageVersionUpload(1: Token userToken, 2: UUID imageBaseId, 3: i64 fileSize, 4: list<binary> blockHashes)
throws (1:TTransferRejectedException rejection, 2:TAuthorizationException authError),
void cancelUpload(1: Token uploadToken),
- UploadStatus queryUploadStatus(1: Token uploadToken)
+ TransferStatus queryUploadStatus(1: Token uploadToken)
throws (1:TInvalidTokenException ex1),
TransferInformation requestDownload(1: Token userToken, 2: UUID imageVersionId)