public static RegisterBrokerBody decode(byte[] data, boolean compressed) throws IOException { if (!compressed) { return RegisterBrokerBody.decode(data, RegisterBrokerBody.class); int dataVersionLength = readInt(inflaterInputStream); byte[] dataVersionBytes = readBytes(inflaterInputStream, dataVersionLength); DataVersion dataVersion = DataVersion.decode(dataVersionBytes, DataVersion.class); RegisterBrokerBody registerBrokerBody = new RegisterBrokerBody(); registerBrokerBody.getTopicConfigSerializeWrapper().setDataVersion(dataVersion); ConcurrentMap<String, TopicConfig> topicConfigTable = registerBrokerBody.getTopicConfigSerializeWrapper().getTopicConfigTable(); int topicConfigNumber = readInt(inflaterInputStream); LOGGER.debug("{} topic configs to extract", topicConfigNumber); int topicConfigJsonLength = readInt(inflaterInputStream); byte[] buffer = readBytes(inflaterInputStream, topicConfigJsonLength); TopicConfig topicConfig = new TopicConfig(); String topicConfigJson = new String(buffer, MixAll.DEFAULT_CHARSET); int filterServerListJsonLength = readInt(inflaterInputStream); byte[] filterServerListBuffer = readBytes(inflaterInputStream, filterServerListJsonLength); String filterServerListJson = new String(filterServerListBuffer, MixAll.DEFAULT_CHARSET); List<String> filterServerList = new ArrayList<String>(); registerBrokerBody.setFilterServerList(filterServerList); long interval = System.currentTimeMillis() - start; if (interval > 50) {
requestHeader.setCompressed(compressed); RegisterBrokerBody requestBody = new RegisterBrokerBody(); requestBody.setTopicConfigSerializeWrapper(topicConfigWrapper); requestBody.setFilterServerList(filterServerList); final byte[] body = requestBody.encode(compressed); final int bodyCrc32 = UtilAll.crc32(body); requestHeader.setBodyCrc32(bodyCrc32);
RegisterBrokerBody registerBrokerBody = new RegisterBrokerBody(); registerBrokerBody = RegisterBrokerBody.decode(request.getBody(), requestHeader.isCompressed()); } catch (Exception e) { throw new RemotingCommandException("Failed to decode RegisterBrokerBody", e); registerBrokerBody.getTopicConfigSerializeWrapper().getDataVersion().setCounter(new AtomicLong(0)); registerBrokerBody.getTopicConfigSerializeWrapper().getDataVersion().setTimestamp(0); requestHeader.getBrokerId(), requestHeader.getHaServerAddr(), registerBrokerBody.getTopicConfigSerializeWrapper(), registerBrokerBody.getFilterServerList(), ctx.channel());
public static RegisterBrokerBody decode(byte[] data, boolean compressed) throws IOException { if (!compressed) { return RegisterBrokerBody.decode(data, RegisterBrokerBody.class); int dataVersionLength = readInt(inflaterInputStream); byte[] dataVersionBytes = readBytes(inflaterInputStream, dataVersionLength); DataVersion dataVersion = DataVersion.decode(dataVersionBytes, DataVersion.class); RegisterBrokerBody registerBrokerBody = new RegisterBrokerBody(); registerBrokerBody.getTopicConfigSerializeWrapper().setDataVersion(dataVersion); ConcurrentMap<String, TopicConfig> topicConfigTable = registerBrokerBody.getTopicConfigSerializeWrapper().getTopicConfigTable(); int topicConfigNumber = readInt(inflaterInputStream); LOGGER.debug("{} topic configs to extract", topicConfigNumber); int topicConfigJsonLength = readInt(inflaterInputStream); byte[] buffer = readBytes(inflaterInputStream, topicConfigJsonLength); TopicConfig topicConfig = new TopicConfig(); String topicConfigJson = new String(buffer, MixAll.DEFAULT_CHARSET); int filterServerListJsonLength = readInt(inflaterInputStream); byte[] filterServerListBuffer = readBytes(inflaterInputStream, filterServerListJsonLength); String filterServerListJson = new String(filterServerListBuffer, MixAll.DEFAULT_CHARSET); List<String> filterServerList = new ArrayList<String>(); registerBrokerBody.setFilterServerList(filterServerList); long interval = System.currentTimeMillis() - start; if (interval > 50) {
RemotingCommand request = RemotingCommand.createRequestCommand(RequestCode.REGISTER_BROKER, requestHeader); RegisterBrokerBody requestBody = new RegisterBrokerBody(); requestBody.setTopicConfigSerializeWrapper(topicConfigWrapper); requestBody.setFilterServerList(filterServerList); request.setBody(requestBody.encode()); if (oneway) { try {
long decodeCost = System.currentTimeMillis() - start; RegisterBrokerBody registerBrokerBody = new RegisterBrokerBody(); registerBrokerBody = RegisterBrokerBody.decode(request.getBody(), RegisterBrokerBody.class); decodeBodyCost = System.currentTimeMillis() - startDecodeBody; } else { registerBrokerBody.getTopicConfigSerializeWrapper().getDataVersion().setCounter(new AtomicLong(0)); registerBrokerBody.getTopicConfigSerializeWrapper().getDataVersion().setTimestamp(0); requestHeader.getMaxPhyOffset(), requestHeader.getTerm(), registerBrokerBody.getTopicConfigSerializeWrapper(), registerBrokerBody.getFilterServerList(), ctx.channel()); long registerCost = System.currentTimeMillis() - startRegister;
requestHeader.setCompressed(compressed); RegisterBrokerBody requestBody = new RegisterBrokerBody(); requestBody.setTopicConfigSerializeWrapper(topicConfigWrapper); requestBody.setFilterServerList(filterServerList); final byte[] body = requestBody.encode(compressed); final int bodyCrc32 = UtilAll.crc32(body); requestHeader.setBodyCrc32(bodyCrc32);