Search in sources :

Example 1 with NodeRequestSdkVerifyTopic

use of org.fisco.bcos.channel.protocol.NodeRequestSdkVerifyTopic in project web3sdk by FISCO-BCOS.

the class Service method checkTopicVerify.

public void checkTopicVerify(ChannelHandlerContext ctx, TopicVerifyMessage message) throws IOException {
    SocketChannel socketChannel = (SocketChannel) ctx.channel();
    logger.info("get rand value request ChannelResponse seq:{} msgtype:{} address:{} port:{}", message.getSeq(), message.getType(), socketChannel.remoteAddress().getAddress().getHostAddress(), socketChannel.remoteAddress().getPort());
    logger.info("get rand value request :{} length:{}", Arrays.toString(message.getData()), message.getLength());
    sendResponse2Node(ctx, message);
    String content = new String(message.getData());
    logger.info("content:{} content:{}", content, Arrays.toString(content.getBytes()));
    NodeRequestSdkVerifyTopic nodeRequestSdkVerifyTopic = ObjectMapperFactory.getObjectMapper().readValue(content, NodeRequestSdkVerifyTopic.class);
    String topic = nodeRequestSdkVerifyTopic.getTopic();
    String topicForCert = nodeRequestSdkVerifyTopic.getTopicForCert();
    String nodeid = nodeRequestSdkVerifyTopic.getNodeId();
    logger.info("topic:{} topicForCert:{} nodeid:{}", topic, topicForCert, nodeid);
    ChannelRequest request = new ChannelRequest();
    request.setToTopic(topicForCert);
    request.setMessageID(newSeq());
    request.setTimeout(5000);
    request.setType((short) ChannelMessageType.AMOP_REQUEST.getType());
    String randValue = UUID.randomUUID().toString().replaceAll("-", "");
    TopicVerifyReqProtocol topicVerifyProtocol = new TopicVerifyReqProtocol();
    topicVerifyProtocol.setRandValue(randValue);
    topicVerifyProtocol.setTopic(topic);
    String jsonStr = ObjectMapperFactory.getObjectMapper().writeValueAsString(topicVerifyProtocol);
    logger.info("generate rand value jsonStr:{} topic:{} messageid:{}", jsonStr, request.getToTopic(), message.getSeq());
    byte[] bytes = topicVerify.getByteBuffByString(request.getToTopic(), jsonStr);
    request.setContent(bytes);
    asyncSendChannelMessage2(request, new ChannelResponseCallback2() {

        @Override
        public void onResponseMessage(ChannelResponse response) {
            logger.info("get response messageid:{}", response.getMessageID());
            try {
                checkSignForAmop(topic, String.valueOf(randValue), nodeid, ctx, response);
            } catch (IOException e) {
                logger.error("check sign for amop failed:{}", e);
            }
        }
    });
}
Also used : SocketChannel(io.netty.channel.socket.SocketChannel) NodeRequestSdkVerifyTopic(org.fisco.bcos.channel.protocol.NodeRequestSdkVerifyTopic) ChannelRequest(org.fisco.bcos.channel.dto.ChannelRequest) TopicVerifyReqProtocol(org.fisco.bcos.channel.protocol.TopicVerifyReqProtocol) ChannelResponse(org.fisco.bcos.channel.dto.ChannelResponse) IOException(java.io.IOException)

Aggregations

SocketChannel (io.netty.channel.socket.SocketChannel)1 IOException (java.io.IOException)1 ChannelRequest (org.fisco.bcos.channel.dto.ChannelRequest)1 ChannelResponse (org.fisco.bcos.channel.dto.ChannelResponse)1 NodeRequestSdkVerifyTopic (org.fisco.bcos.channel.protocol.NodeRequestSdkVerifyTopic)1 TopicVerifyReqProtocol (org.fisco.bcos.channel.protocol.TopicVerifyReqProtocol)1