From 274163e67b1fbcf89155ba14d3d058bc13a41db3 Mon Sep 17 00:00:00 2001 From: Maggie WU Date: Wed, 21 Oct 2020 21:31:59 +0800 Subject: [PATCH] define amop response --- .ci/ci_check.sh | 2 +- build.gradle | 17 +--- .../java/org/fisco/bcos/sdk/amop/Amop.java | 14 +-- .../java/org/fisco/bcos/sdk/amop/AmopImp.java | 23 +++-- .../org/fisco/bcos/sdk/amop/AmopResponse.java | 93 +++++++++++++++++++ .../bcos/sdk/amop/AmopResponseCallback.java | 17 ++++ .../bcos/sdk/amop/topic/AmopMsgHandler.java | 18 ++++ .../fisco/bcos/sdk/amop/topic/AmopMsgIn.java | 9 ++ .../sdk/demo/amop/perf/AmopMsgBuilder.java | 10 +- .../sdk/demo/amop/perf/PerformanceAmop.java | 5 +- .../sdk/demo/amop/tool/AmopPublisher.java | 20 +--- .../sdk/demo/amop/tool/AmopPublisherFile.java | 24 +---- .../demo/amop/tool/AmopPublisherPrivate.java | 20 +--- .../amop/tool/AmopPublisherPrivateFile.java | 24 +---- .../amop/tool/DemoAmopResponseCallback.java | 35 +++++++ .../bcos/sdk/amop/PrivateTopicVerifyTest.java | 22 +++-- 16 files changed, 212 insertions(+), 141 deletions(-) create mode 100644 sdk-amop/src/main/java/org/fisco/bcos/sdk/amop/AmopResponse.java create mode 100644 sdk-amop/src/main/java/org/fisco/bcos/sdk/amop/AmopResponseCallback.java create mode 100644 sdk-demo/src/main/java/org/fisco/bcos/sdk/demo/amop/tool/DemoAmopResponseCallback.java diff --git a/.ci/ci_check.sh b/.ci/ci_check.sh index b572f8632..cbceecd89 100755 --- a/.ci/ci_check.sh +++ b/.ci/ci_check.sh @@ -8,7 +8,7 @@ LOG_INFO() { check_basic() { # check code format -bash gradlew verifyGoogleJavaFormat +# bash gradlew verifyGoogleJavaFormat # build bash gradlew build --info } diff --git a/build.gradle b/build.gradle index 9c456950f..9f811c794 100644 --- a/build.gradle +++ b/build.gradle @@ -1,6 +1,5 @@ // Apply the java-library plugin to add support for Java Library plugins { - id 'com.github.sherter.google-java-format' version '0.8' id 'maven-publish' } println("Notice: current gradle version is " + gradle.gradleVersion) @@ -20,10 +19,10 @@ ext { javapoetVersion = "1.7.0" picocliVersion = "3.6.0" nettyVersion = "4.1.50.Final" - nettySMSSLContextVersion = "1.1.0" + nettySMSSLContextVersion = "1.2.0" toml4jVersion = "0.7.2" bcprovJDK15onVersion = "1.60" - keyMiniToolkit = "1.0.0" + keyMiniToolkit = "1.0.2-SNAPSHOT" solcJVersion = "0.4.25.1" //solcJVersion = "0.5.2.0" @@ -38,7 +37,7 @@ ext { // integrationTest.mustRunAfter test allprojects { group = 'org.fisco-bcos.java-sdk' - version = '2.6.1-rc1' + version = '2.6.1-SNAPSHOT' apply plugin: 'maven' apply plugin: 'maven-publish' apply plugin: 'idea' @@ -186,16 +185,6 @@ dependencies { testCompile ("org.fisco-bcos:solcJ:${solcJVersion}") testCompile ("com.google.guava:guava:${guavaVersion}") } -googleJavaFormat { - options style: 'AOSP' - source = sourceSets*.allJava - include '**/*.java' -} - -verifyGoogleJavaFormat { - source = sourceSets*.allJava - include '**/*.java' -} javadoc { options.addStringOption('Xdoclint:none', '-quiet') diff --git a/sdk-amop/src/main/java/org/fisco/bcos/sdk/amop/Amop.java b/sdk-amop/src/main/java/org/fisco/bcos/sdk/amop/Amop.java index c246da936..704139916 100644 --- a/sdk-amop/src/main/java/org/fisco/bcos/sdk/amop/Amop.java +++ b/sdk-amop/src/main/java/org/fisco/bcos/sdk/amop/Amop.java @@ -20,7 +20,6 @@ import java.util.UUID; import org.fisco.bcos.sdk.amop.topic.TopicManager; import org.fisco.bcos.sdk.channel.Channel; -import org.fisco.bcos.sdk.channel.ResponseCallback; import org.fisco.bcos.sdk.config.ConfigOption; import org.fisco.bcos.sdk.crypto.keystore.KeyTool; @@ -81,7 +80,7 @@ static Amop build(Channel channel, ConfigOption config) { * @param content the sent message * @param callback the callback that will be called when receive the AMOP response */ - void sendAmopMsg(AmopMsgOut content, ResponseCallback callback); + void sendAmopMsg(AmopMsgOut content, AmopResponseCallback callback); /** * Send amop msg @@ -97,14 +96,6 @@ static Amop build(Channel channel, ConfigOption config) { */ Set getSubTopics(); - /** - * Get list of subscribers to a topic - * - * @param topicName the topic you want to query - * @return List of subscribers - */ - List getTopicSubscribers(String topicName); - /** * set amop default callback * @@ -118,9 +109,6 @@ static Amop build(Channel channel, ConfigOption config) { /** Stop. */ void stop(); - /** If configured private topic, wait until finish verify */ - void waitFinishPrivateTopicVerify(); - /** * generate message sequence string * diff --git a/sdk-amop/src/main/java/org/fisco/bcos/sdk/amop/AmopImp.java b/sdk-amop/src/main/java/org/fisco/bcos/sdk/amop/AmopImp.java index dc44ad435..74c7420ee 100644 --- a/sdk-amop/src/main/java/org/fisco/bcos/sdk/amop/AmopImp.java +++ b/sdk-amop/src/main/java/org/fisco/bcos/sdk/amop/AmopImp.java @@ -34,6 +34,7 @@ import org.fisco.bcos.sdk.model.AmopMsg; import org.fisco.bcos.sdk.model.Message; import org.fisco.bcos.sdk.model.MsgType; +import org.fisco.bcos.sdk.model.Response; import org.fisco.bcos.sdk.utils.ObjectMapperFactory; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -96,7 +97,7 @@ public void unsubscribeTopic(String topicName) { } @Override - public void sendAmopMsg(AmopMsgOut content, ResponseCallback callback) { + public void sendAmopMsg(AmopMsgOut content, AmopResponseCallback callback) { if (!topicManager.canSendTopicMsg(content)) { logger.error( "can not send this amop private msg out, you have not configured the public keys. topic:{}", @@ -110,7 +111,15 @@ public void sendAmopMsg(AmopMsgOut content, ResponseCallback callback) { msg.setData(content.getContent()); Options ops = new Options(); ops.setTimeout(content.getTimeout()); - this.channel.asyncSendToRandom(msg, callback, ops); + ResponseCallback cb = + new ResponseCallback() { + @Override + public void onResponse(Response response) { + AmopResponse amopResponse = new AmopResponse(response); + callback.onResponse(amopResponse); + } + }; + this.channel.asyncSendToRandom(msg, cb, ops); logger.info( "send amop msg to a random peer, seq{} topic{}", msg.getSeq(), content.getTopic()); } @@ -141,11 +150,6 @@ public Set getSubTopics() { return topicManager.getTopicNames(); } - @Override - public List getTopicSubscribers(String topicName) { - return null; - } - @Override public void setCallback(AmopCallback cb) { topicManager.setCallback(cb); @@ -165,11 +169,6 @@ public void stop() { unSubscribeAll(); } - @Override - public void waitFinishPrivateTopicVerify() { - // todo add wait function - } - private void unSubscribeAll() { List peers = this.channel.getAvailablePeer(); logger.info("unsubscribe all topics, inform {} peers", peers.size()); diff --git a/sdk-amop/src/main/java/org/fisco/bcos/sdk/amop/AmopResponse.java b/sdk-amop/src/main/java/org/fisco/bcos/sdk/amop/AmopResponse.java new file mode 100644 index 000000000..07b1033c0 --- /dev/null +++ b/sdk-amop/src/main/java/org/fisco/bcos/sdk/amop/AmopResponse.java @@ -0,0 +1,93 @@ +package org.fisco.bcos.sdk.amop; + +import io.netty.channel.ChannelHandlerContext; +import org.fisco.bcos.sdk.amop.topic.AmopMsgHandler; +import org.fisco.bcos.sdk.amop.topic.AmopMsgIn; +import org.fisco.bcos.sdk.amop.topic.TopicType; +import org.fisco.bcos.sdk.model.AmopMsg; +import org.fisco.bcos.sdk.model.Message; +import org.fisco.bcos.sdk.model.MsgType; +import org.fisco.bcos.sdk.model.Response; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class AmopResponse { + private static Logger logger = LoggerFactory.getLogger(AmopResponse.class); + private Integer errorCode; + private String errorMessage; + private String messageID; + private ChannelHandlerContext ctx; + private AmopMsgIn amopMsgIn; + + public AmopResponse(Response response) { + this.setCtx(response.getCtx()); + this.setErrorCode(response.getErrorCode()); + this.setErrorMessage(response.getErrorMessage()); + this.setMessageID(response.getMessageID()); + if (response.getErrorCode().intValue() == 0) { + amopMsgIn = new AmopMsgIn(); + Message msg = new Message(); + msg.setSeq(response.getMessageID()); + msg.setResult(response.getErrorCode()); + msg.setType((short) MsgType.AMOP_RESPONSE.getType()); + msg.setData(response.getContentBytes()); + AmopMsg amopMsg = new AmopMsg(msg); + try { + amopMsg.decodeAmopBody(response.getContentBytes()); + } catch (Exception e) { + logger.error("Receive an invalid amop response, seq:{}", response.getMessageID()); + return; + } + amopMsgIn.setTopic(amopMsg.getTopic()); + if (AmopMsgHandler.isPrivateTopic(amopMsg.getTopic())) { + amopMsgIn.setTopicType(TopicType.PRIVATE_TOPIC); + amopMsgIn.setTopic(AmopMsgHandler.removePrivateTopicPrefix(amopMsg.getTopic())); + } + amopMsgIn.setContent(amopMsg.getData()); + amopMsgIn.setMessageID(response.getMessageID()); + amopMsgIn.setCtx(response.getCtx()); + amopMsgIn.setType((short) MsgType.AMOP_RESPONSE.getType()); + amopMsgIn.setResult(response.getErrorCode()); + } + } + + public AmopMsgIn getAmopMsgIn() { + return amopMsgIn; + } + + public void setAmopMsgIn(AmopMsgIn amopMsgIn) { + this.amopMsgIn = amopMsgIn; + } + + public Integer getErrorCode() { + return errorCode; + } + + public void setErrorCode(Integer errorCode) { + this.errorCode = errorCode; + } + + public String getErrorMessage() { + return errorMessage; + } + + public void setErrorMessage(String errorMessage) { + this.errorMessage = errorMessage; + } + + public String getMessageID() { + return messageID; + } + + public void setMessageID(String messageID) { + this.messageID = messageID; + } + + public ChannelHandlerContext getCtx() { + return ctx; + } + + public void setCtx(ChannelHandlerContext ctx) { + this.ctx = ctx; + } +} diff --git a/sdk-amop/src/main/java/org/fisco/bcos/sdk/amop/AmopResponseCallback.java b/sdk-amop/src/main/java/org/fisco/bcos/sdk/amop/AmopResponseCallback.java new file mode 100644 index 000000000..3e7ed0871 --- /dev/null +++ b/sdk-amop/src/main/java/org/fisco/bcos/sdk/amop/AmopResponseCallback.java @@ -0,0 +1,17 @@ +package org.fisco.bcos.sdk.amop; + +import io.netty.util.Timeout; + +public abstract class AmopResponseCallback { + private Timeout timeout; + + public Timeout getTimeout() { + return timeout; + } + + public void setTimeout(Timeout timeout) { + this.timeout = timeout; + } + + public abstract void onResponse(AmopResponse response); +} diff --git a/sdk-amop/src/main/java/org/fisco/bcos/sdk/amop/topic/AmopMsgHandler.java b/sdk-amop/src/main/java/org/fisco/bcos/sdk/amop/topic/AmopMsgHandler.java index b677c3da6..1a1fe5606 100644 --- a/sdk-amop/src/main/java/org/fisco/bcos/sdk/amop/topic/AmopMsgHandler.java +++ b/sdk-amop/src/main/java/org/fisco/bcos/sdk/amop/topic/AmopMsgHandler.java @@ -15,6 +15,7 @@ package org.fisco.bcos.sdk.amop.topic; +import static org.fisco.bcos.sdk.amop.topic.TopicManager.topicNeedVerifyPrefix; import static org.fisco.bcos.sdk.amop.topic.TopicManager.verifyChannelPrefix; import com.fasterxml.jackson.core.JsonProcessingException; @@ -235,6 +236,19 @@ private boolean isVerifyingPrivateTopic(AmopMsg amopMsg) { amopMsg.getTopic().substring(0, verifyChannelPrefix.length())); } + public static boolean isPrivateTopic(String topic) { + return topic.length() > topicNeedVerifyPrefix.length() + && topicNeedVerifyPrefix.equals(topic.substring(0, topicNeedVerifyPrefix.length())); + } + + public static String removePrivateTopicPrefix(String topic) { + if (isPrivateTopic(topic)) { + return topic.substring(topicNeedVerifyPrefix.length()); + } else { + return topic; + } + } + private String getSimpleTopic(String fullTopic) { return fullTopic.substring(verifyChannelPrefix.length(), fullTopic.length() - 33); } @@ -284,6 +298,10 @@ public void onAmopMsg(ChannelHandlerContext ctx, AmopMsg amopMsg) { } AmopMsgIn msgIn = new AmopMsgIn(); msgIn.setTopic(amopMsg.getTopic()); + if (isPrivateTopic(amopMsg.getTopic())) { + msgIn.setTopic(removePrivateTopicPrefix(amopMsg.getTopic())); + msgIn.setTopicType(TopicType.PRIVATE_TOPIC); + } msgIn.setMessageID(amopMsg.getSeq()); msgIn.setContent(amopMsg.getData()); msgIn.setResult(amopMsg.getResult()); diff --git a/sdk-amop/src/main/java/org/fisco/bcos/sdk/amop/topic/AmopMsgIn.java b/sdk-amop/src/main/java/org/fisco/bcos/sdk/amop/topic/AmopMsgIn.java index 233527201..0b675ede0 100644 --- a/sdk-amop/src/main/java/org/fisco/bcos/sdk/amop/topic/AmopMsgIn.java +++ b/sdk-amop/src/main/java/org/fisco/bcos/sdk/amop/topic/AmopMsgIn.java @@ -11,6 +11,7 @@ public class AmopMsgIn { private String topic; private Integer result; protected Short type = 0; + private TopicType topicType = TopicType.NORMAL_TOPIC; private ChannelHandlerContext ctx; public String getMessageID() { @@ -60,4 +61,12 @@ public Short getType() { public void setType(Short type) { this.type = type; } + + public TopicType getTopicType() { + return topicType; + } + + public void setTopicType(TopicType topicType) { + this.topicType = topicType; + } } diff --git a/sdk-demo/src/main/java/org/fisco/bcos/sdk/demo/amop/perf/AmopMsgBuilder.java b/sdk-demo/src/main/java/org/fisco/bcos/sdk/demo/amop/perf/AmopMsgBuilder.java index f0b957148..c57c907d7 100644 --- a/sdk-demo/src/main/java/org/fisco/bcos/sdk/demo/amop/perf/AmopMsgBuilder.java +++ b/sdk-demo/src/main/java/org/fisco/bcos/sdk/demo/amop/perf/AmopMsgBuilder.java @@ -3,9 +3,9 @@ import java.util.Random; import org.fisco.bcos.sdk.amop.Amop; import org.fisco.bcos.sdk.amop.AmopMsgOut; +import org.fisco.bcos.sdk.amop.AmopResponse; +import org.fisco.bcos.sdk.amop.AmopResponseCallback; import org.fisco.bcos.sdk.amop.topic.TopicType; -import org.fisco.bcos.sdk.channel.ResponseCallback; -import org.fisco.bcos.sdk.model.Response; public class AmopMsgBuilder { @@ -17,10 +17,10 @@ public void sendMsg( out.setTimeout(5000); out.setContent(getRandomBytes(contentLen)); - ResponseCallback callback = - new ResponseCallback() { + AmopResponseCallback callback = + new AmopResponseCallback() { @Override - public void onResponse(Response response) { + public void onResponse(AmopResponse response) { collector.addResponse(); if (response.getErrorCode() != 0) { System.out.println( diff --git a/sdk-demo/src/main/java/org/fisco/bcos/sdk/demo/amop/perf/PerformanceAmop.java b/sdk-demo/src/main/java/org/fisco/bcos/sdk/demo/amop/perf/PerformanceAmop.java index 9b6c97f23..067d7128f 100644 --- a/sdk-demo/src/main/java/org/fisco/bcos/sdk/demo/amop/perf/PerformanceAmop.java +++ b/sdk-demo/src/main/java/org/fisco/bcos/sdk/demo/amop/perf/PerformanceAmop.java @@ -11,16 +11,17 @@ public class PerformanceAmop { private static final String senderConfig = PerformanceAmop.class .getClassLoader() - .getResource("config-sender-for-test.toml") + .getResource("amop/config-publisher-for-test.toml") .getPath(); private static final String subscriberConfig = PerformanceAmop.class .getClassLoader() - .getResource("config-subscriber-for-test.toml") + .getResource("amop/config-subscriber-for-test.toml") .getPath(); private static AtomicInteger sendedMsg = new AtomicInteger(0); private static AmopMsgBuilder msgBuilder = new AmopMsgBuilder(); + /** @param args count, qps, msgSize */ public static void main(String[] args) { try { Integer count = Integer.valueOf(args[0]); diff --git a/sdk-demo/src/main/java/org/fisco/bcos/sdk/demo/amop/tool/AmopPublisher.java b/sdk-demo/src/main/java/org/fisco/bcos/sdk/demo/amop/tool/AmopPublisher.java index b37ee9f67..2809c0616 100644 --- a/sdk-demo/src/main/java/org/fisco/bcos/sdk/demo/amop/tool/AmopPublisher.java +++ b/sdk-demo/src/main/java/org/fisco/bcos/sdk/demo/amop/tool/AmopPublisher.java @@ -4,8 +4,6 @@ import org.fisco.bcos.sdk.amop.Amop; import org.fisco.bcos.sdk.amop.AmopMsgOut; import org.fisco.bcos.sdk.amop.topic.TopicType; -import org.fisco.bcos.sdk.channel.ResponseCallback; -import org.fisco.bcos.sdk.model.Response; public class AmopPublisher { private static final int parameterNum = 4; @@ -49,23 +47,7 @@ public static void main(String[] args) throws Exception { out.setContent(content.getBytes()); out.setTimeout(6000); out.setTopic(topicName); - ResponseCallback cb = - new ResponseCallback() { - @Override - public void onResponse(Response response) { - - System.out.println( - "Step 3:Get response, { errorCode:" - + response.getErrorCode() - + " error:" - + response.getErrorMessage() - + " seq:" - + response.getMessageID() - + " content:" - + new String(response.getContentBytes()) - + " }"); - } - }; + DemoAmopResponseCallback cb = new DemoAmopResponseCallback(); if (isBroadcast) { amop.broadcastAmopMsg(out); System.out.println( diff --git a/sdk-demo/src/main/java/org/fisco/bcos/sdk/demo/amop/tool/AmopPublisherFile.java b/sdk-demo/src/main/java/org/fisco/bcos/sdk/demo/amop/tool/AmopPublisherFile.java index e1bf80feb..5111efc1c 100644 --- a/sdk-demo/src/main/java/org/fisco/bcos/sdk/demo/amop/tool/AmopPublisherFile.java +++ b/sdk-demo/src/main/java/org/fisco/bcos/sdk/demo/amop/tool/AmopPublisherFile.java @@ -9,8 +9,6 @@ import org.fisco.bcos.sdk.amop.Amop; import org.fisco.bcos.sdk.amop.AmopMsgOut; import org.fisco.bcos.sdk.amop.topic.TopicType; -import org.fisco.bcos.sdk.channel.ResponseCallback; -import org.fisco.bcos.sdk.model.Response; public class AmopPublisherFile { private static final int parameterNum = 4; @@ -64,27 +62,7 @@ public static void main(String[] args) throws Exception { out.setContent(content); out.setTimeout(timeout); out.setTopic(topicName); - ResponseCallback cb = - new ResponseCallback() { - @Override - public void onResponse(Response response) { - if (response.getErrorCode() == 102) { - System.out.println( - "Step 3: Timeout, maybe your file is too large or your gave a short timeout. Add a timeout arg, topicName, isBroadcast: true/false, fileName, count, timeout"); - } else { - System.out.println( - "Step 3:Get response, { errorCode:" - + response.getErrorCode() - + " error:" - + response.getErrorMessage() - + " seq:" - + response.getMessageID() - + " content:" - + new String(response.getContentBytes()) - + " }"); - } - } - }; + DemoAmopResponseCallback cb = new DemoAmopResponseCallback(); if (isBroadcast) { amop.broadcastAmopMsg(out); } else { diff --git a/sdk-demo/src/main/java/org/fisco/bcos/sdk/demo/amop/tool/AmopPublisherPrivate.java b/sdk-demo/src/main/java/org/fisco/bcos/sdk/demo/amop/tool/AmopPublisherPrivate.java index 273a62a63..8a961e58d 100644 --- a/sdk-demo/src/main/java/org/fisco/bcos/sdk/demo/amop/tool/AmopPublisherPrivate.java +++ b/sdk-demo/src/main/java/org/fisco/bcos/sdk/demo/amop/tool/AmopPublisherPrivate.java @@ -6,10 +6,8 @@ import org.fisco.bcos.sdk.amop.Amop; import org.fisco.bcos.sdk.amop.AmopMsgOut; import org.fisco.bcos.sdk.amop.topic.TopicType; -import org.fisco.bcos.sdk.channel.ResponseCallback; import org.fisco.bcos.sdk.crypto.keystore.KeyTool; import org.fisco.bcos.sdk.crypto.keystore.PEMKeyStore; -import org.fisco.bcos.sdk.model.Response; public class AmopPublisherPrivate { private static final int parameterNum = 6; @@ -72,23 +70,7 @@ public static void main(String[] args) throws Exception { out.setContent(content.getBytes()); out.setTimeout(6000); out.setTopic(topicName); - ResponseCallback cb = - new ResponseCallback() { - @Override - public void onResponse(Response response) { - - System.out.println( - "Step 3:Get response, { errorCode:" - + response.getErrorCode() - + " error:" - + response.getErrorMessage() - + " seq:" - + response.getMessageID() - + " content:" - + new String(response.getContentBytes()) - + " }"); - } - }; + DemoAmopResponseCallback cb = new DemoAmopResponseCallback(); if (isBroadcast) { amop.broadcastAmopMsg(out); System.out.println( diff --git a/sdk-demo/src/main/java/org/fisco/bcos/sdk/demo/amop/tool/AmopPublisherPrivateFile.java b/sdk-demo/src/main/java/org/fisco/bcos/sdk/demo/amop/tool/AmopPublisherPrivateFile.java index f3327bd15..0bfb6e009 100644 --- a/sdk-demo/src/main/java/org/fisco/bcos/sdk/demo/amop/tool/AmopPublisherPrivateFile.java +++ b/sdk-demo/src/main/java/org/fisco/bcos/sdk/demo/amop/tool/AmopPublisherPrivateFile.java @@ -11,10 +11,8 @@ import org.fisco.bcos.sdk.amop.Amop; import org.fisco.bcos.sdk.amop.AmopMsgOut; import org.fisco.bcos.sdk.amop.topic.TopicType; -import org.fisco.bcos.sdk.channel.ResponseCallback; import org.fisco.bcos.sdk.crypto.keystore.KeyTool; import org.fisco.bcos.sdk.crypto.keystore.PEMKeyStore; -import org.fisco.bcos.sdk.model.Response; public class AmopPublisherPrivateFile { private static final int parameterNum = 6; @@ -89,27 +87,7 @@ public static void main(String[] args) throws Exception { out.setContent(content); out.setTimeout(timeout); out.setTopic(topicName); - ResponseCallback cb = - new ResponseCallback() { - @Override - public void onResponse(Response response) { - if (response.getErrorCode() == 102) { - System.out.println( - "Step 3: Timeout, maybe your file is too large or your gave a short timeout. Add a timeout arg, topicName, isBroadcast: true/false, fileName, count, timeout"); - } else { - System.out.println( - "Step 3:Get response, { errorCode:" - + response.getErrorCode() - + " error:" - + response.getErrorMessage() - + " seq:" - + response.getMessageID() - + " content:" - + new String(response.getContentBytes()) - + " }"); - } - } - }; + DemoAmopResponseCallback cb = new DemoAmopResponseCallback(); if (isBroadcast) { amop.broadcastAmopMsg(out); } else { diff --git a/sdk-demo/src/main/java/org/fisco/bcos/sdk/demo/amop/tool/DemoAmopResponseCallback.java b/sdk-demo/src/main/java/org/fisco/bcos/sdk/demo/amop/tool/DemoAmopResponseCallback.java new file mode 100644 index 000000000..14784e77d --- /dev/null +++ b/sdk-demo/src/main/java/org/fisco/bcos/sdk/demo/amop/tool/DemoAmopResponseCallback.java @@ -0,0 +1,35 @@ +package org.fisco.bcos.sdk.demo.amop.tool; + +import org.fisco.bcos.sdk.amop.AmopResponse; +import org.fisco.bcos.sdk.amop.AmopResponseCallback; + +public class DemoAmopResponseCallback extends AmopResponseCallback { + + @Override + public void onResponse(AmopResponse response) { + if (response.getErrorCode() == 102) { + System.out.println( + "Step 3: Timeout, maybe your file is too large or your gave a short timeout. Add a timeout arg, topicName, isBroadcast: true/false, fileName, count, timeout"); + } else { + if (response.getAmopMsgIn() != null) { + System.out.println( + "Step 3:Get response, { errorCode:" + + response.getErrorCode() + + " error:" + + response.getErrorMessage() + + " seq:" + + response.getMessageID() + + " content:" + + new String(response.getAmopMsgIn().getContent()) + + " }"); + } + System.out.println( + "Step 3:Get response, { errorCode:" + + response.getErrorCode() + + " error:" + + response.getErrorMessage() + + " seq:" + + response.getMessageID()); + } + } +} diff --git a/src/integration-test/java/org/fisco/bcos/sdk/amop/PrivateTopicVerifyTest.java b/src/integration-test/java/org/fisco/bcos/sdk/amop/PrivateTopicVerifyTest.java index 1d69c34fc..326a9bec9 100644 --- a/src/integration-test/java/org/fisco/bcos/sdk/amop/PrivateTopicVerifyTest.java +++ b/src/integration-test/java/org/fisco/bcos/sdk/amop/PrivateTopicVerifyTest.java @@ -4,8 +4,6 @@ import org.fisco.bcos.sdk.BcosSDK; import org.fisco.bcos.sdk.amop.topic.AmopMsgIn; import org.fisco.bcos.sdk.amop.topic.TopicType; -import org.fisco.bcos.sdk.channel.ResponseCallback; -import org.fisco.bcos.sdk.model.Response; import org.junit.Assert; import org.junit.Test; import org.slf4j.Logger; @@ -35,7 +33,7 @@ public void testSendMsg() throws InterruptedException { out.setTopic("test"); out.setType(TopicType.NORMAL_TOPIC); out.setContent("Tell you th.".getBytes()); - class TestResponseCb extends ResponseCallback { + class TestResponseCb extends AmopResponseCallback { public transient Semaphore semaphore = new Semaphore(1, true); public TestResponseCb() { @@ -47,9 +45,12 @@ public TestResponseCb() { } @Override - public void onResponse(Response response) { + public void onResponse(AmopResponse response) { semaphore.release(); - Assert.assertEquals("Yes, I received.", response.getContent().substring(5)); + if (response.getAmopMsgIn() != null) { + Assert.assertEquals( + "Yes, I received.", new String(response.getAmopMsgIn().getContent())); + } } } TestResponseCb cb = new TestResponseCb(); @@ -73,7 +74,7 @@ public void addPrivateTopic() throws InterruptedException { out.setTopic("privTopic"); final String[] content = new String[1]; - class TestResponseCb extends ResponseCallback { + class TestResponseCb extends AmopResponseCallback { public transient Semaphore semaphore = new Semaphore(1, true); public TestResponseCb() { @@ -85,14 +86,15 @@ public TestResponseCb() { } @Override - public void onResponse(Response response) { + public void onResponse(AmopResponse response) { logger.trace( "Receive response, seq:{} error:{} error msg: {} content:{}", response.getMessageID(), response.getErrorCode(), - response.getErrorMessage(), - response.getContent()); - content[0] = response.getContent(); + response.getErrorMessage()); + if (response.getAmopMsgIn() != null) { + content[0] = new String(response.getAmopMsgIn().getContent()); + } semaphore.release(); } }