diff options
author | Simon Rettberg | 2015-07-08 16:07:32 +0200 |
---|---|---|
committer | Simon Rettberg | 2015-07-08 16:07:32 +0200 |
commit | 05c4a596363601e7aa2157409eda9be1ec087c57 (patch) | |
tree | f6b5c1f18d31a9016f8cadcb147ac512ffcb6c14 /src | |
parent | Make master server address configurable; dynamic retrying, controlled by call... (diff) | |
download | master-sync-shared-05c4a596363601e7aa2157409eda9be1ec087c57.tar.gz master-sync-shared-05c4a596363601e7aa2157409eda9be1ec087c57.tar.xz master-sync-shared-05c4a596363601e7aa2157409eda9be1ec087c57.zip |
Thrift api
Diffstat (limited to 'src')
-rw-r--r-- | src/main/java/org/openslx/bwlp/thrift/iface/SatelliteServer.java | 36 | ||||
-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.java | 71 | ||||
-rw-r--r-- | src/main/thrift/bwlp.thrift | 6 |
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) |