From 25a862d5d0871c0ab9ea4b131e3cdf85e6ef272a Mon Sep 17 00:00:00 2001 From: tangmingyou <234767776@qq.com> Date: Mon, 25 Apr 2022 23:40:31 +0800 Subject: [PATCH] im client --- im-client/pom.xml | 6 + .../net/sopod/soim/client/ClientMain.java | 13 +- .../net/sopod/soim/client/cmd/ArgsLogin.java | 9 +- .../sopod/soim/client/cmd/CmdDispatcher.java | 52 +- .../net/sopod/soim/client/cmd/CmdEnum.java | 28 +- .../net/sopod/soim/client/cmd/CmdStarter.java | 8 +- .../client/{ => cmd}/handler/CmdHandler.java | 2 +- .../{ => cmd}/handler/NonArgsHandler.java | 4 +- .../soim/client/config/ClientConfig.java | 18 + .../sopod/soim/client/config/GuiceIoc.java | 9 +- .../soim/client/handler/ExitHandler.java | 1 + .../soim/client/handler/LoginCmdHandler.java | 23 +- .../net/sopod/soim/client/logger/Logger.java | 10 +- .../soim/client/model/dto/LoginResDTO.java | 24 + .../soim/client/session/SoImSession.java | 81 + .../sopod/soim/client/util/HttpClient.java | 46 + .../net/sopod/soim/common/util/Jackson.java | 16 +- .../registry/ProtoMessageHandlerRegistry.java | 6 +- .../net/sopod/soim/data/msg/auth/Auth.java | 1306 ++++++++++++++++- .../src/main/resources/protoSerialNoTable.txt | 14 +- .../main/resources/protobuf/auth/Auth.proto | 12 +- pom.xml | 14 + 22 files changed, 1649 insertions(+), 53 deletions(-) rename im-client/src/main/java/net/sopod/soim/client/{ => cmd}/handler/CmdHandler.java (78%) rename im-client/src/main/java/net/sopod/soim/client/{ => cmd}/handler/NonArgsHandler.java (80%) create mode 100644 im-client/src/main/java/net/sopod/soim/client/config/ClientConfig.java create mode 100644 im-client/src/main/java/net/sopod/soim/client/model/dto/LoginResDTO.java create mode 100644 im-client/src/main/java/net/sopod/soim/client/session/SoImSession.java create mode 100644 im-client/src/main/java/net/sopod/soim/client/util/HttpClient.java diff --git a/im-client/pom.xml b/im-client/pom.xml index 8e3d245..c7cea70 100644 --- a/im-client/pom.xml +++ b/im-client/pom.xml @@ -37,6 +37,12 @@ com.beust jcommander + + + com.konghq + unirest-java + 3.13.6 + \ No newline at end of file diff --git a/im-client/src/main/java/net/sopod/soim/client/ClientMain.java b/im-client/src/main/java/net/sopod/soim/client/ClientMain.java index 0e3bc30..b81909f 100644 --- a/im-client/src/main/java/net/sopod/soim/client/ClientMain.java +++ b/im-client/src/main/java/net/sopod/soim/client/ClientMain.java @@ -3,10 +3,8 @@ package net.sopod.soim.client; import com.google.inject.Guice; import com.google.inject.Injector; import com.google.inject.Stage; -import net.sopod.soim.client.cmd.CmdDispatcher; import net.sopod.soim.client.cmd.CmdStarter; import net.sopod.soim.client.config.GuiceIoc; -import net.sopod.soim.client.net.ImNetClient; /** * Main @@ -19,15 +17,16 @@ import net.sopod.soim.client.net.ImNetClient; */ public class ClientMain { - public static void main(String[] args) throws InterruptedException { + public static void main(String[] args) { // ImNetClient client = new ImNetClient(); // client.connect("127.0.0.1", 8088); + + // 创建 ioc 容器 GuiceIoc guiceIoc = new GuiceIoc(ClientMain.class); Injector injector = Guice.createInjector(Stage.PRODUCTION, guiceIoc); - // dispatcher - CmdDispatcher cmdDispatcher = new CmdDispatcher(injector); - // starter - CmdStarter cmdStarter = new CmdStarter(cmdDispatcher); + + // 启动 cmd scanner + CmdStarter cmdStarter = injector.getInstance(CmdStarter.class); cmdStarter.start(); } diff --git a/im-client/src/main/java/net/sopod/soim/client/cmd/ArgsLogin.java b/im-client/src/main/java/net/sopod/soim/client/cmd/ArgsLogin.java index 2adf415..7f8cfba 100644 --- a/im-client/src/main/java/net/sopod/soim/client/cmd/ArgsLogin.java +++ b/im-client/src/main/java/net/sopod/soim/client/cmd/ArgsLogin.java @@ -3,6 +3,8 @@ package net.sopod.soim.client.cmd; import com.beust.jcommander.Parameter; import lombok.Data; +import java.util.List; + /** * ArgsLogin * @@ -12,10 +14,13 @@ import lombok.Data; @Data public class ArgsLogin { - @Parameter(names = {"-u", "-account"}, description = "账号") + @Parameter + private List parameters; + + @Parameter(names = {"-u", "-account"}, required = true, description = "账号") private String account; - @Parameter(names = {"-p", "-password"}, description = "密码", password = true) + @Parameter(names = {"-p", "-password"}, required = true, description = "密码", password = true) private String password; } diff --git a/im-client/src/main/java/net/sopod/soim/client/cmd/CmdDispatcher.java b/im-client/src/main/java/net/sopod/soim/client/cmd/CmdDispatcher.java index 94ea555..c231bc2 100644 --- a/im-client/src/main/java/net/sopod/soim/client/cmd/CmdDispatcher.java +++ b/im-client/src/main/java/net/sopod/soim/client/cmd/CmdDispatcher.java @@ -1,7 +1,11 @@ package net.sopod.soim.client.cmd; import com.beust.jcommander.JCommander; +import com.beust.jcommander.ParameterException; +import com.google.inject.Inject; import com.google.inject.Injector; +import com.google.inject.Singleton; +import net.sopod.soim.client.cmd.handler.CmdHandler; import net.sopod.soim.client.logger.Logger; /** @@ -17,36 +21,48 @@ import net.sopod.soim.client.logger.Logger; * @author tmy * @date 2022-04-25 10:28 */ +@Singleton public class CmdDispatcher { private final Injector injector; + @Inject public CmdDispatcher(Injector injector) { this.injector = injector; } + @SuppressWarnings("unchecked") public void dispatchCmd(String cmdStr) { - Logger.info("dispatch cmd: {}", cmdStr); - int idx = cmdStr.indexOf(" "); - String cmd = idx == -1 ? cmdStr : cmdStr.substring(0, idx); - String argsStr = idx == -1 ? "" : cmdStr.substring(idx + 1); + String[] cmdArgs = cmdStr.trim().split("[ \t]+"); + String cmd = cmdArgs[0]; + String[] args = new String[cmdArgs.length - 1]; + if (args.length > 0) { + System.arraycopy(cmdArgs, 1, args, 0, args.length); + } + CmdEnum cmdEnum = CmdEnum.getValue(cmd); + if (cmdEnum == null) { + Logger.error("未知指令: {}", cmd); + return; + } + Class> handlerClass = cmdEnum.getHandlerClass(); + CmdHandler cmdHandler = injector.getInstance(handlerClass); + Object argsInstance = cmdHandler.newArgsInstance(); + try { + JCommander.newBuilder() + .addObject(argsInstance) + .build() + .parse(args); + } catch (ParameterException e) { + String message = e.getMessage(); + this.parseParameterExceptionMessage(message); + return; + } + ((CmdHandler)cmdHandler).handleArgs(argsInstance); } - public static void main(String[] args) { - String cmdStr = "auth -u prometheus -p 123456"; - int idx = cmdStr.indexOf(" "); - String cmd = idx == -1 ? cmdStr : cmdStr.substring(0, idx); - String argsStr = idx == -1 ? "" : cmdStr.substring(idx + 1); - - - ArgsLogin argsLogin = new ArgsLogin(); - String[] argv = {"-u", "zeus", "-p", "123456"}; - JCommander.newBuilder() - .addObject(argsLogin) - .build() - .parse(argv); - System.out.println(argsLogin); + private void parseParameterExceptionMessage(String message) { + Logger.error(message); } } diff --git a/im-client/src/main/java/net/sopod/soim/client/cmd/CmdEnum.java b/im-client/src/main/java/net/sopod/soim/client/cmd/CmdEnum.java index a32f30a..bb4983c 100644 --- a/im-client/src/main/java/net/sopod/soim/client/cmd/CmdEnum.java +++ b/im-client/src/main/java/net/sopod/soim/client/cmd/CmdEnum.java @@ -1,5 +1,9 @@ package net.sopod.soim.client.cmd; +import net.sopod.soim.client.cmd.handler.CmdHandler; +import net.sopod.soim.client.handler.ExitHandler; +import net.sopod.soim.client.handler.LoginCmdHandler; + /** * Commands * @@ -9,7 +13,7 @@ package net.sopod.soim.client.cmd; public enum CmdEnum { /** 登录 */ - login, + login(LoginCmdHandler.class), /** 发送消息 */ send, @@ -20,12 +24,32 @@ public enum CmdEnum { /** 用户分组列表 */ groups, + help, + /** 退出 */ - exit; + exit(ExitHandler.class); + private Class> handlerClass; CmdEnum() { } + CmdEnum(Class> handlerClass) { + this.handlerClass = handlerClass; + } + + public Class> getHandlerClass() { + return this.handlerClass; + } + + public static CmdEnum getValue(String cmdName) { + for (CmdEnum value : values()) { + if (value.name().equals(cmdName)) { + return value; + } + } + return null; + } + } diff --git a/im-client/src/main/java/net/sopod/soim/client/cmd/CmdStarter.java b/im-client/src/main/java/net/sopod/soim/client/cmd/CmdStarter.java index 0c85d77..119c076 100644 --- a/im-client/src/main/java/net/sopod/soim/client/cmd/CmdStarter.java +++ b/im-client/src/main/java/net/sopod/soim/client/cmd/CmdStarter.java @@ -1,6 +1,8 @@ package net.sopod.soim.client.cmd; +import com.google.inject.Inject; import com.google.inject.Injector; +import com.google.inject.Singleton; import net.sopod.soim.client.logger.Logger; import java.util.Scanner; @@ -11,21 +13,23 @@ import java.util.Scanner; * @author tmy * @date 2022-04-25 10:28 */ +@Singleton public class CmdStarter { private final CmdDispatcher cmdDispatcher; + @Inject public CmdStarter(CmdDispatcher cmdDispatcher) { this.cmdDispatcher = cmdDispatcher; } public void start() { Scanner scanner = new Scanner(System.in); - Logger.pre("[client]: "); + Logger.pre("【client】: "); while(scanner.hasNextLine()) { String cmd = scanner.nextLine(); cmdDispatcher.dispatchCmd(cmd); - Logger.pre("[client]: "); + Logger.pre("【client】: "); } scanner.close(); diff --git a/im-client/src/main/java/net/sopod/soim/client/handler/CmdHandler.java b/im-client/src/main/java/net/sopod/soim/client/cmd/handler/CmdHandler.java similarity index 78% rename from im-client/src/main/java/net/sopod/soim/client/handler/CmdHandler.java rename to im-client/src/main/java/net/sopod/soim/client/cmd/handler/CmdHandler.java index 9df3859..73f7d68 100644 --- a/im-client/src/main/java/net/sopod/soim/client/handler/CmdHandler.java +++ b/im-client/src/main/java/net/sopod/soim/client/cmd/handler/CmdHandler.java @@ -1,4 +1,4 @@ -package net.sopod.soim.client.handler; +package net.sopod.soim.client.cmd.handler; /** * CmdHandler diff --git a/im-client/src/main/java/net/sopod/soim/client/handler/NonArgsHandler.java b/im-client/src/main/java/net/sopod/soim/client/cmd/handler/NonArgsHandler.java similarity index 80% rename from im-client/src/main/java/net/sopod/soim/client/handler/NonArgsHandler.java rename to im-client/src/main/java/net/sopod/soim/client/cmd/handler/NonArgsHandler.java index e9ced6a..2719c7a 100644 --- a/im-client/src/main/java/net/sopod/soim/client/handler/NonArgsHandler.java +++ b/im-client/src/main/java/net/sopod/soim/client/cmd/handler/NonArgsHandler.java @@ -1,4 +1,4 @@ -package net.sopod.soim.client.handler; +package net.sopod.soim.client.cmd.handler; /** * NoArgsHandler @@ -18,6 +18,6 @@ public abstract class NonArgsHandler implements CmdHandler { this.handle(); } - abstract void handle(); + public abstract void handle(); } diff --git a/im-client/src/main/java/net/sopod/soim/client/config/ClientConfig.java b/im-client/src/main/java/net/sopod/soim/client/config/ClientConfig.java new file mode 100644 index 0000000..a9a81eb --- /dev/null +++ b/im-client/src/main/java/net/sopod/soim/client/config/ClientConfig.java @@ -0,0 +1,18 @@ +package net.sopod.soim.client.config; + +import com.google.inject.Singleton; +import lombok.Data; + +/** + * ClientConfig + * + * @author tmy + * @date 2022-04-25 22:33 + */ +@Singleton +@Data +public class ClientConfig { + + private String loginUrl = "http://localhost:3021/auth/pwdAuth"; + +} diff --git a/im-client/src/main/java/net/sopod/soim/client/config/GuiceIoc.java b/im-client/src/main/java/net/sopod/soim/client/config/GuiceIoc.java index 451d933..ba9aee1 100644 --- a/im-client/src/main/java/net/sopod/soim/client/config/GuiceIoc.java +++ b/im-client/src/main/java/net/sopod/soim/client/config/GuiceIoc.java @@ -19,21 +19,28 @@ public class GuiceIoc extends AbstractModule { private Set> beanTypes = Collections.emptySet(); + /** + * @param rootClass 从该类所在包开始扫描 + */ public GuiceIoc(Class rootClass) { this.rootPackage = rootClass.getPackage().getName(); this.scanRootPackage(); } + /** + * guice 注册 bean + */ @Override protected void configure() { for (Class beanType : this.beanTypes) { bind(beanType); } + // 注册后释放内存 this.beanTypes = Collections.emptySet(); } /** - * 扫描需要注入的类 + * 扫描需要注入的类,带 {@link Singleton} 注解的类 */ private void scanRootPackage() { Reflections reflect = new Reflections(rootPackage); diff --git a/im-client/src/main/java/net/sopod/soim/client/handler/ExitHandler.java b/im-client/src/main/java/net/sopod/soim/client/handler/ExitHandler.java index b3e0425..24aa9d6 100644 --- a/im-client/src/main/java/net/sopod/soim/client/handler/ExitHandler.java +++ b/im-client/src/main/java/net/sopod/soim/client/handler/ExitHandler.java @@ -1,6 +1,7 @@ package net.sopod.soim.client.handler; import com.google.inject.Singleton; +import net.sopod.soim.client.cmd.handler.NonArgsHandler; /** * ExitHandler diff --git a/im-client/src/main/java/net/sopod/soim/client/handler/LoginCmdHandler.java b/im-client/src/main/java/net/sopod/soim/client/handler/LoginCmdHandler.java index e101a83..e65a94b 100644 --- a/im-client/src/main/java/net/sopod/soim/client/handler/LoginCmdHandler.java +++ b/im-client/src/main/java/net/sopod/soim/client/handler/LoginCmdHandler.java @@ -1,7 +1,15 @@ package net.sopod.soim.client.handler; +import com.google.inject.Inject; import com.google.inject.Singleton; import net.sopod.soim.client.cmd.ArgsLogin; +import net.sopod.soim.client.cmd.handler.CmdHandler; +import net.sopod.soim.client.config.ClientConfig; +import net.sopod.soim.client.logger.Logger; +import net.sopod.soim.client.model.dto.LoginResDTO; +import net.sopod.soim.client.util.HttpClient; + +import java.util.HashMap; /** * LoginCmdHandler @@ -12,6 +20,9 @@ import net.sopod.soim.client.cmd.ArgsLogin; @Singleton public class LoginCmdHandler implements CmdHandler { + @Inject + private ClientConfig clientConfig; + @Override public ArgsLogin newArgsInstance() { return new ArgsLogin(); @@ -19,7 +30,17 @@ public class LoginCmdHandler implements CmdHandler { @Override public void handleArgs(ArgsLogin args) { - + Logger.info("login args: {}", args); + HashMap params = new HashMap<>(); + params.put("account", args.getAccount()); + params.put("password", args.getPassword()); + LoginResDTO loginRes = HttpClient.restPost(clientConfig.getLoginUrl(), params, LoginResDTO.class); + if (!Boolean.TRUE.equals(loginRes.getSuccess())) { + Logger.error("登录失败: {}", loginRes.getMessage()); + return; + } + String authToken = loginRes.getAuthToken(); + Logger.info("登录成功: {}", authToken); } } diff --git a/im-client/src/main/java/net/sopod/soim/client/logger/Logger.java b/im-client/src/main/java/net/sopod/soim/client/logger/Logger.java index 125148c..94dfd22 100644 --- a/im-client/src/main/java/net/sopod/soim/client/logger/Logger.java +++ b/im-client/src/main/java/net/sopod/soim/client/logger/Logger.java @@ -9,11 +9,19 @@ package net.sopod.soim.client.logger; public class Logger { public static void info(String msg, Object...args) { + log("[info] " + msg, args); + } + + public static void error(String msg, Object...args) { + log("[error] " + msg, args); + } + + public static void log(String msg, Object...args) { msg = msg.replaceAll("\\{}", "%s"); for (int i = 0; i < args.length; i++) { args[i] = String.valueOf(args[i]); } - System.out.println("[info]: " + String.format(msg, args)); + System.out.println(String.format(msg, args)); } public static void pre(String pre) { diff --git a/im-client/src/main/java/net/sopod/soim/client/model/dto/LoginResDTO.java b/im-client/src/main/java/net/sopod/soim/client/model/dto/LoginResDTO.java new file mode 100644 index 0000000..eab25e0 --- /dev/null +++ b/im-client/src/main/java/net/sopod/soim/client/model/dto/LoginResDTO.java @@ -0,0 +1,24 @@ +package net.sopod.soim.client.model.dto; + +import lombok.Data; + +/** + * LoginResDTO + * + * @author tmy + * @date 2022-04-25 22:36 + */ +@Data +public class LoginResDTO { + + private Boolean success; + + private Long uid; + + private String authToken; + + private Long expireMs; + + private String message; + +} diff --git a/im-client/src/main/java/net/sopod/soim/client/session/SoImSession.java b/im-client/src/main/java/net/sopod/soim/client/session/SoImSession.java new file mode 100644 index 0000000..c66cef0 --- /dev/null +++ b/im-client/src/main/java/net/sopod/soim/client/session/SoImSession.java @@ -0,0 +1,81 @@ +package net.sopod.soim.client.session; + +import com.google.inject.Singleton; +import com.google.protobuf.MessageLite; +import io.netty.bootstrap.Bootstrap; +import io.netty.channel.Channel; +import io.netty.channel.ChannelInitializer; +import io.netty.channel.nio.NioEventLoopGroup; +import io.netty.channel.socket.SocketChannel; +import io.netty.channel.socket.nio.NioSocketChannel; +import net.sopod.soim.client.logger.Logger; +import net.sopod.soim.core.net.ImMessageCodec; +import net.sopod.soim.data.msg.auth.Auth; +import org.slf4j.LoggerFactory; + +import java.util.concurrent.atomic.AtomicBoolean; + +/** + * SoImSession + * + * @author tmy + * @date 2022-04-25 22:49 + */ +@Singleton +public class SoImSession { + + private static final org.slf4j.Logger logger = LoggerFactory.getLogger(SoImSession.class); + + private NioEventLoopGroup eventLoopGroup; + + private Channel clientChannel; + + private AtomicBoolean auth = new AtomicBoolean(false); + + public void connect(String host, Integer port, Auth.ReqTokenAuth tokenAuth) throws InterruptedException { + eventLoopGroup = new NioEventLoopGroup(2); + Bootstrap b = new Bootstrap() + .group(eventLoopGroup) + .channel(NioSocketChannel.class) + .handler(new ChannelInitializer() { + @Override + protected void initChannel(SocketChannel ch) throws Exception { + ch.pipeline() + .addLast(new ImMessageCodec()); + // .addLast(new ProtoMessageCodec()); + } + }); + clientChannel = b.connect(host, port).await().channel(); + + // 连接后立即发送认证消息 + // TODO ResHandler + clientChannel.write(tokenAuth); + } + + public void send(MessageLite message) { + if (!auth.get()) { + Logger.error("请登录后发送消息"); + return; + } + if (clientChannel == null + || !clientChannel.isActive()) { + Logger.error("连接未打开"); + return; + } + clientChannel.write(message); + } + + public void close() { + if (clientChannel != null) { + try { + clientChannel.close().await(); + } catch (InterruptedException e) { + logger.error("channel close error: ", e); + } + } + if (eventLoopGroup != null) { + eventLoopGroup.shutdownGracefully(); + } + } + +} diff --git a/im-client/src/main/java/net/sopod/soim/client/util/HttpClient.java b/im-client/src/main/java/net/sopod/soim/client/util/HttpClient.java new file mode 100644 index 0000000..ec6dea6 --- /dev/null +++ b/im-client/src/main/java/net/sopod/soim/client/util/HttpClient.java @@ -0,0 +1,46 @@ +package net.sopod.soim.client.util; + +import com.google.common.net.MediaType; +import kong.unirest.HttpResponse; +import kong.unirest.JsonNode; +import kong.unirest.Unirest; +import kong.unirest.json.JSONElement; +import net.sopod.soim.common.util.Jackson; + +import java.io.IOException; +import java.net.URL; +import java.net.URLConnection; +import java.nio.charset.StandardCharsets; +import java.util.HashMap; +import java.util.Map; + +/** + * HttpClient + * + * @author tmy + * @date 2022-04-25 22:06 + */ +public class HttpClient { + + @SuppressWarnings("unchecked") + public static T restPost(String url, Map params, Class resType) { + HttpResponse res = Unirest.post(url) + .body(Jackson.json().serialize(params)) + .contentType("application/json") + .charset(StandardCharsets.UTF_8) + .asString(); + if (String.class.equals(resType)) { + return (T) res.getBody(); + } + return Jackson.json().deserialize(res.getBody(), resType); + } + + public static void main(String[] args) throws IOException { + HashMap params = new HashMap<>(); + params.put("account", "prometheus"); + params.put("password", "123456"); + String res = restPost("http://localhost:3021/auth/pwdAuth", params, String.class); + System.out.println(res); + } + +} diff --git a/im-common/src/main/java/net/sopod/soim/common/util/Jackson.java b/im-common/src/main/java/net/sopod/soim/common/util/Jackson.java index 033bf02..5c9a753 100644 --- a/im-common/src/main/java/net/sopod/soim/common/util/Jackson.java +++ b/im-common/src/main/java/net/sopod/soim/common/util/Jackson.java @@ -1,13 +1,12 @@ package net.sopod.soim.common.util; import com.fasterxml.jackson.core.JsonFactory; +import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.json.JsonReadFeature; import com.fasterxml.jackson.core.json.PackageVersion; -import com.fasterxml.jackson.databind.DeserializationFeature; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.SerializationFeature; +import com.fasterxml.jackson.databind.*; import com.fasterxml.jackson.databind.module.SimpleModule; import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer; import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer; @@ -18,6 +17,7 @@ import com.fasterxml.jackson.datatype.jsr310.ser.LocalTimeSerializer; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.io.IOException; import java.text.SimpleDateFormat; import java.time.LocalDate; import java.time.LocalDateTime; @@ -162,6 +162,16 @@ public class Jackson { public static Jackson xml() { getFactoryInstance("com.fasterxml.jackson.dataformat.xml.XmlMapper", () -> XML_INSTANCE == null, + mapper -> { + // 设置返回 null 转为 空字符串"" + mapper.getSerializerProvider().setNullValueSerializer(new JsonSerializer() { + @Override + public void serialize(Object paramT, JsonGenerator paramJsonGenerator, + SerializerProvider paramSerializerProvider) throws IOException { + paramJsonGenerator.writeString(""); + } + }); + }, jackson -> XML_INSTANCE = jackson); return XML_INSTANCE; } diff --git a/im-core/src/main/java/net/sopod/soim/core/registry/ProtoMessageHandlerRegistry.java b/im-core/src/main/java/net/sopod/soim/core/registry/ProtoMessageHandlerRegistry.java index 901dc7d..8ae305e 100644 --- a/im-core/src/main/java/net/sopod/soim/core/registry/ProtoMessageHandlerRegistry.java +++ b/im-core/src/main/java/net/sopod/soim/core/registry/ProtoMessageHandlerRegistry.java @@ -9,10 +9,7 @@ import org.slf4j.LoggerFactory; import org.springframework.context.ApplicationContext; import javax.annotation.Nullable; -import java.util.Collection; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.concurrent.CountDownLatch; /** @@ -63,6 +60,7 @@ public class ProtoMessageHandlerRegistry { } @Nullable + @SuppressWarnings("unchecked") public static MessageHandler getTypeHandler(Class type) { if (CONTEXT_AWARE_AWAIT.getCount() > 0) { try { diff --git a/im-data/src/main/java/net/sopod/soim/data/msg/auth/Auth.java b/im-data/src/main/java/net/sopod/soim/data/msg/auth/Auth.java index 5a32da8..aec4e0b 100644 --- a/im-data/src/main/java/net/sopod/soim/data/msg/auth/Auth.java +++ b/im-data/src/main/java/net/sopod/soim/data/msg/auth/Auth.java @@ -1370,6 +1370,1283 @@ public final class Auth { } + public interface ReqTokenAuthOrBuilder extends + // @@protoc_insertion_point(interface_extends:proto.ReqTokenAuth) + com.google.protobuf.MessageOrBuilder { + + /** + * int32 uid = 1; + * @return The uid. + */ + int getUid(); + + /** + * string token = 2; + * @return The token. + */ + java.lang.String getToken(); + /** + * string token = 2; + * @return The bytes for token. + */ + com.google.protobuf.ByteString + getTokenBytes(); + } + /** + * Protobuf type {@code proto.ReqTokenAuth} + */ + public static final class ReqTokenAuth extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:proto.ReqTokenAuth) + ReqTokenAuthOrBuilder { + private static final long serialVersionUID = 0L; + // Use ReqTokenAuth.newBuilder() to construct. + private ReqTokenAuth(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private ReqTokenAuth() { + token_ = ""; + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new ReqTokenAuth(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private ReqTokenAuth( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + this(); + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 8: { + + uid_ = input.readInt32(); + break; + } + case 18: { + java.lang.String s = input.readStringRequireUtf8(); + + token_ = s; + break; + } + default: { + if (!parseUnknownField( + input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return net.sopod.soim.data.msg.auth.Auth.internal_static_proto_ReqTokenAuth_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return net.sopod.soim.data.msg.auth.Auth.internal_static_proto_ReqTokenAuth_fieldAccessorTable + .ensureFieldAccessorsInitialized( + net.sopod.soim.data.msg.auth.Auth.ReqTokenAuth.class, net.sopod.soim.data.msg.auth.Auth.ReqTokenAuth.Builder.class); + } + + public static final int UID_FIELD_NUMBER = 1; + private int uid_; + /** + * int32 uid = 1; + * @return The uid. + */ + @java.lang.Override + public int getUid() { + return uid_; + } + + public static final int TOKEN_FIELD_NUMBER = 2; + private volatile java.lang.Object token_; + /** + * string token = 2; + * @return The token. + */ + @java.lang.Override + public java.lang.String getToken() { + java.lang.Object ref = token_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + token_ = s; + return s; + } + } + /** + * string token = 2; + * @return The bytes for token. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getTokenBytes() { + java.lang.Object ref = token_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + token_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (uid_ != 0) { + output.writeInt32(1, uid_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(token_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 2, token_); + } + unknownFields.writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (uid_ != 0) { + size += com.google.protobuf.CodedOutputStream + .computeInt32Size(1, uid_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(token_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, token_); + } + size += unknownFields.getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof net.sopod.soim.data.msg.auth.Auth.ReqTokenAuth)) { + return super.equals(obj); + } + net.sopod.soim.data.msg.auth.Auth.ReqTokenAuth other = (net.sopod.soim.data.msg.auth.Auth.ReqTokenAuth) obj; + + if (getUid() + != other.getUid()) return false; + if (!getToken() + .equals(other.getToken())) return false; + if (!unknownFields.equals(other.unknownFields)) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + UID_FIELD_NUMBER; + hash = (53 * hash) + getUid(); + hash = (37 * hash) + TOKEN_FIELD_NUMBER; + hash = (53 * hash) + getToken().hashCode(); + hash = (29 * hash) + unknownFields.hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static net.sopod.soim.data.msg.auth.Auth.ReqTokenAuth parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static net.sopod.soim.data.msg.auth.Auth.ReqTokenAuth parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static net.sopod.soim.data.msg.auth.Auth.ReqTokenAuth parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static net.sopod.soim.data.msg.auth.Auth.ReqTokenAuth parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static net.sopod.soim.data.msg.auth.Auth.ReqTokenAuth parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static net.sopod.soim.data.msg.auth.Auth.ReqTokenAuth parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static net.sopod.soim.data.msg.auth.Auth.ReqTokenAuth parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static net.sopod.soim.data.msg.auth.Auth.ReqTokenAuth parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static net.sopod.soim.data.msg.auth.Auth.ReqTokenAuth parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static net.sopod.soim.data.msg.auth.Auth.ReqTokenAuth parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static net.sopod.soim.data.msg.auth.Auth.ReqTokenAuth parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static net.sopod.soim.data.msg.auth.Auth.ReqTokenAuth parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(net.sopod.soim.data.msg.auth.Auth.ReqTokenAuth prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code proto.ReqTokenAuth} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:proto.ReqTokenAuth) + net.sopod.soim.data.msg.auth.Auth.ReqTokenAuthOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return net.sopod.soim.data.msg.auth.Auth.internal_static_proto_ReqTokenAuth_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return net.sopod.soim.data.msg.auth.Auth.internal_static_proto_ReqTokenAuth_fieldAccessorTable + .ensureFieldAccessorsInitialized( + net.sopod.soim.data.msg.auth.Auth.ReqTokenAuth.class, net.sopod.soim.data.msg.auth.Auth.ReqTokenAuth.Builder.class); + } + + // Construct using net.sopod.soim.data.msg.auth.Auth.ReqTokenAuth.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3 + .alwaysUseFieldBuilders) { + } + } + @java.lang.Override + public Builder clear() { + super.clear(); + uid_ = 0; + + token_ = ""; + + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return net.sopod.soim.data.msg.auth.Auth.internal_static_proto_ReqTokenAuth_descriptor; + } + + @java.lang.Override + public net.sopod.soim.data.msg.auth.Auth.ReqTokenAuth getDefaultInstanceForType() { + return net.sopod.soim.data.msg.auth.Auth.ReqTokenAuth.getDefaultInstance(); + } + + @java.lang.Override + public net.sopod.soim.data.msg.auth.Auth.ReqTokenAuth build() { + net.sopod.soim.data.msg.auth.Auth.ReqTokenAuth result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public net.sopod.soim.data.msg.auth.Auth.ReqTokenAuth buildPartial() { + net.sopod.soim.data.msg.auth.Auth.ReqTokenAuth result = new net.sopod.soim.data.msg.auth.Auth.ReqTokenAuth(this); + result.uid_ = uid_; + result.token_ = token_; + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof net.sopod.soim.data.msg.auth.Auth.ReqTokenAuth) { + return mergeFrom((net.sopod.soim.data.msg.auth.Auth.ReqTokenAuth)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(net.sopod.soim.data.msg.auth.Auth.ReqTokenAuth other) { + if (other == net.sopod.soim.data.msg.auth.Auth.ReqTokenAuth.getDefaultInstance()) return this; + if (other.getUid() != 0) { + setUid(other.getUid()); + } + if (!other.getToken().isEmpty()) { + token_ = other.token_; + onChanged(); + } + this.mergeUnknownFields(other.unknownFields); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + net.sopod.soim.data.msg.auth.Auth.ReqTokenAuth parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (net.sopod.soim.data.msg.auth.Auth.ReqTokenAuth) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + + private int uid_ ; + /** + * int32 uid = 1; + * @return The uid. + */ + @java.lang.Override + public int getUid() { + return uid_; + } + /** + * int32 uid = 1; + * @param value The uid to set. + * @return This builder for chaining. + */ + public Builder setUid(int value) { + + uid_ = value; + onChanged(); + return this; + } + /** + * int32 uid = 1; + * @return This builder for chaining. + */ + public Builder clearUid() { + + uid_ = 0; + onChanged(); + return this; + } + + private java.lang.Object token_ = ""; + /** + * string token = 2; + * @return The token. + */ + public java.lang.String getToken() { + java.lang.Object ref = token_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + token_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * string token = 2; + * @return The bytes for token. + */ + public com.google.protobuf.ByteString + getTokenBytes() { + java.lang.Object ref = token_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + token_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * string token = 2; + * @param value The token to set. + * @return This builder for chaining. + */ + public Builder setToken( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + token_ = value; + onChanged(); + return this; + } + /** + * string token = 2; + * @return This builder for chaining. + */ + public Builder clearToken() { + + token_ = getDefaultInstance().getToken(); + onChanged(); + return this; + } + /** + * string token = 2; + * @param value The bytes for token to set. + * @return This builder for chaining. + */ + public Builder setTokenBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + token_ = value; + onChanged(); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:proto.ReqTokenAuth) + } + + // @@protoc_insertion_point(class_scope:proto.ReqTokenAuth) + private static final net.sopod.soim.data.msg.auth.Auth.ReqTokenAuth DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new net.sopod.soim.data.msg.auth.Auth.ReqTokenAuth(); + } + + public static net.sopod.soim.data.msg.auth.Auth.ReqTokenAuth getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public ReqTokenAuth parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new ReqTokenAuth(input, extensionRegistry); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public net.sopod.soim.data.msg.auth.Auth.ReqTokenAuth getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface ResTokenAuthOrBuilder extends + // @@protoc_insertion_point(interface_extends:proto.ResTokenAuth) + com.google.protobuf.MessageOrBuilder { + + /** + * bool success = 1; + * @return The success. + */ + boolean getSuccess(); + + /** + * string message = 2; + * @return The message. + */ + java.lang.String getMessage(); + /** + * string message = 2; + * @return The bytes for message. + */ + com.google.protobuf.ByteString + getMessageBytes(); + } + /** + * Protobuf type {@code proto.ResTokenAuth} + */ + public static final class ResTokenAuth extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:proto.ResTokenAuth) + ResTokenAuthOrBuilder { + private static final long serialVersionUID = 0L; + // Use ResTokenAuth.newBuilder() to construct. + private ResTokenAuth(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private ResTokenAuth() { + message_ = ""; + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new ResTokenAuth(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private ResTokenAuth( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + this(); + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 8: { + + success_ = input.readBool(); + break; + } + case 18: { + java.lang.String s = input.readStringRequireUtf8(); + + message_ = s; + break; + } + default: { + if (!parseUnknownField( + input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return net.sopod.soim.data.msg.auth.Auth.internal_static_proto_ResTokenAuth_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return net.sopod.soim.data.msg.auth.Auth.internal_static_proto_ResTokenAuth_fieldAccessorTable + .ensureFieldAccessorsInitialized( + net.sopod.soim.data.msg.auth.Auth.ResTokenAuth.class, net.sopod.soim.data.msg.auth.Auth.ResTokenAuth.Builder.class); + } + + public static final int SUCCESS_FIELD_NUMBER = 1; + private boolean success_; + /** + * bool success = 1; + * @return The success. + */ + @java.lang.Override + public boolean getSuccess() { + return success_; + } + + public static final int MESSAGE_FIELD_NUMBER = 2; + private volatile java.lang.Object message_; + /** + * string message = 2; + * @return The message. + */ + @java.lang.Override + public java.lang.String getMessage() { + java.lang.Object ref = message_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + message_ = s; + return s; + } + } + /** + * string message = 2; + * @return The bytes for message. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getMessageBytes() { + java.lang.Object ref = message_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + message_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (success_ != false) { + output.writeBool(1, success_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(message_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 2, message_); + } + unknownFields.writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (success_ != false) { + size += com.google.protobuf.CodedOutputStream + .computeBoolSize(1, success_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(message_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, message_); + } + size += unknownFields.getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof net.sopod.soim.data.msg.auth.Auth.ResTokenAuth)) { + return super.equals(obj); + } + net.sopod.soim.data.msg.auth.Auth.ResTokenAuth other = (net.sopod.soim.data.msg.auth.Auth.ResTokenAuth) obj; + + if (getSuccess() + != other.getSuccess()) return false; + if (!getMessage() + .equals(other.getMessage())) return false; + if (!unknownFields.equals(other.unknownFields)) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + SUCCESS_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean( + getSuccess()); + hash = (37 * hash) + MESSAGE_FIELD_NUMBER; + hash = (53 * hash) + getMessage().hashCode(); + hash = (29 * hash) + unknownFields.hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static net.sopod.soim.data.msg.auth.Auth.ResTokenAuth parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static net.sopod.soim.data.msg.auth.Auth.ResTokenAuth parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static net.sopod.soim.data.msg.auth.Auth.ResTokenAuth parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static net.sopod.soim.data.msg.auth.Auth.ResTokenAuth parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static net.sopod.soim.data.msg.auth.Auth.ResTokenAuth parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static net.sopod.soim.data.msg.auth.Auth.ResTokenAuth parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static net.sopod.soim.data.msg.auth.Auth.ResTokenAuth parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static net.sopod.soim.data.msg.auth.Auth.ResTokenAuth parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static net.sopod.soim.data.msg.auth.Auth.ResTokenAuth parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static net.sopod.soim.data.msg.auth.Auth.ResTokenAuth parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static net.sopod.soim.data.msg.auth.Auth.ResTokenAuth parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static net.sopod.soim.data.msg.auth.Auth.ResTokenAuth parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(net.sopod.soim.data.msg.auth.Auth.ResTokenAuth prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code proto.ResTokenAuth} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:proto.ResTokenAuth) + net.sopod.soim.data.msg.auth.Auth.ResTokenAuthOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return net.sopod.soim.data.msg.auth.Auth.internal_static_proto_ResTokenAuth_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return net.sopod.soim.data.msg.auth.Auth.internal_static_proto_ResTokenAuth_fieldAccessorTable + .ensureFieldAccessorsInitialized( + net.sopod.soim.data.msg.auth.Auth.ResTokenAuth.class, net.sopod.soim.data.msg.auth.Auth.ResTokenAuth.Builder.class); + } + + // Construct using net.sopod.soim.data.msg.auth.Auth.ResTokenAuth.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3 + .alwaysUseFieldBuilders) { + } + } + @java.lang.Override + public Builder clear() { + super.clear(); + success_ = false; + + message_ = ""; + + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return net.sopod.soim.data.msg.auth.Auth.internal_static_proto_ResTokenAuth_descriptor; + } + + @java.lang.Override + public net.sopod.soim.data.msg.auth.Auth.ResTokenAuth getDefaultInstanceForType() { + return net.sopod.soim.data.msg.auth.Auth.ResTokenAuth.getDefaultInstance(); + } + + @java.lang.Override + public net.sopod.soim.data.msg.auth.Auth.ResTokenAuth build() { + net.sopod.soim.data.msg.auth.Auth.ResTokenAuth result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public net.sopod.soim.data.msg.auth.Auth.ResTokenAuth buildPartial() { + net.sopod.soim.data.msg.auth.Auth.ResTokenAuth result = new net.sopod.soim.data.msg.auth.Auth.ResTokenAuth(this); + result.success_ = success_; + result.message_ = message_; + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof net.sopod.soim.data.msg.auth.Auth.ResTokenAuth) { + return mergeFrom((net.sopod.soim.data.msg.auth.Auth.ResTokenAuth)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(net.sopod.soim.data.msg.auth.Auth.ResTokenAuth other) { + if (other == net.sopod.soim.data.msg.auth.Auth.ResTokenAuth.getDefaultInstance()) return this; + if (other.getSuccess() != false) { + setSuccess(other.getSuccess()); + } + if (!other.getMessage().isEmpty()) { + message_ = other.message_; + onChanged(); + } + this.mergeUnknownFields(other.unknownFields); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + net.sopod.soim.data.msg.auth.Auth.ResTokenAuth parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (net.sopod.soim.data.msg.auth.Auth.ResTokenAuth) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + + private boolean success_ ; + /** + * bool success = 1; + * @return The success. + */ + @java.lang.Override + public boolean getSuccess() { + return success_; + } + /** + * bool success = 1; + * @param value The success to set. + * @return This builder for chaining. + */ + public Builder setSuccess(boolean value) { + + success_ = value; + onChanged(); + return this; + } + /** + * bool success = 1; + * @return This builder for chaining. + */ + public Builder clearSuccess() { + + success_ = false; + onChanged(); + return this; + } + + private java.lang.Object message_ = ""; + /** + * string message = 2; + * @return The message. + */ + public java.lang.String getMessage() { + java.lang.Object ref = message_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + message_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * string message = 2; + * @return The bytes for message. + */ + public com.google.protobuf.ByteString + getMessageBytes() { + java.lang.Object ref = message_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + message_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * string message = 2; + * @param value The message to set. + * @return This builder for chaining. + */ + public Builder setMessage( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + message_ = value; + onChanged(); + return this; + } + /** + * string message = 2; + * @return This builder for chaining. + */ + public Builder clearMessage() { + + message_ = getDefaultInstance().getMessage(); + onChanged(); + return this; + } + /** + * string message = 2; + * @param value The bytes for message to set. + * @return This builder for chaining. + */ + public Builder setMessageBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + message_ = value; + onChanged(); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:proto.ResTokenAuth) + } + + // @@protoc_insertion_point(class_scope:proto.ResTokenAuth) + private static final net.sopod.soim.data.msg.auth.Auth.ResTokenAuth DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new net.sopod.soim.data.msg.auth.Auth.ResTokenAuth(); + } + + public static net.sopod.soim.data.msg.auth.Auth.ResTokenAuth getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public ResTokenAuth parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new ResTokenAuth(input, extensionRegistry); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public net.sopod.soim.data.msg.auth.Auth.ResTokenAuth getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + private static final com.google.protobuf.Descriptors.Descriptor internal_static_proto_ReqLogin_descriptor; private static final @@ -1380,6 +2657,16 @@ public final class Auth { private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_proto_ResLogin_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_proto_ReqTokenAuth_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_proto_ReqTokenAuth_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_proto_ResTokenAuth_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_proto_ResTokenAuth_fieldAccessorTable; public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { @@ -1392,8 +2679,11 @@ public final class Auth { "\n3im-data/src/main/resources/protobuf/au" + "th/Auth.proto\022\005proto\"-\n\010ReqLogin\022\017\n\007acco" + "unt\030\001 \001(\t\022\020\n\010password\030\002 \001(\t\")\n\010ResLogin\022" + - "\014\n\004code\030\001 \001(\005\022\017\n\007message\030\002 \001(\tB&\n\034net.so" + - "pod.soim.data.msg.authB\004AuthP\000b\006proto3" + "\014\n\004code\030\001 \001(\005\022\017\n\007message\030\002 \001(\t\"*\n\014ReqTok" + + "enAuth\022\013\n\003uid\030\001 \001(\005\022\r\n\005token\030\002 \001(\t\"0\n\014Re" + + "sTokenAuth\022\017\n\007success\030\001 \001(\010\022\017\n\007message\030\002" + + " \001(\tB&\n\034net.sopod.soim.data.msg.authB\004Au" + + "thP\000b\006proto3" }; descriptor = com.google.protobuf.Descriptors.FileDescriptor .internalBuildGeneratedFileFrom(descriptorData, @@ -1411,6 +2701,18 @@ public final class Auth { com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_proto_ResLogin_descriptor, new java.lang.String[] { "Code", "Message", }); + internal_static_proto_ReqTokenAuth_descriptor = + getDescriptor().getMessageTypes().get(2); + internal_static_proto_ReqTokenAuth_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_proto_ReqTokenAuth_descriptor, + new java.lang.String[] { "Uid", "Token", }); + internal_static_proto_ResTokenAuth_descriptor = + getDescriptor().getMessageTypes().get(3); + internal_static_proto_ResTokenAuth_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_proto_ResTokenAuth_descriptor, + new java.lang.String[] { "Success", "Message", }); } // @@protoc_insertion_point(outer_class_scope) diff --git a/im-data/src/main/resources/protoSerialNoTable.txt b/im-data/src/main/resources/protoSerialNoTable.txt index 217d12a..c97e0a5 100644 --- a/im-data/src/main/resources/protoSerialNoTable.txt +++ b/im-data/src/main/resources/protoSerialNoTable.txt @@ -1,6 +1,8 @@ -net.sopod.soim.data.msg.net.HeartBeat$Ping=10000 -net.sopod.soim.data.msg.net.HeartBeat$Pong=10001 -net.sopod.soim.data.msg.auth.Auth$ResLogin=10002 -net.sopod.soim.data.msg.hello.HelloPB$Hello=10003 -net.sopod.soim.data.msg.auth.Auth$ReqLogin=10004 -net.sopod.soim.data.msg.hello.HelloPB$World=10005 +net.sopod.soim.data.msg.auth.Auth$ReqTokenAuth=10000 +net.sopod.soim.data.msg.hello.HelloPB$World=10001 +net.sopod.soim.data.msg.net.HeartBeat$Ping=10002 +net.sopod.soim.data.msg.net.HeartBeat$Pong=10003 +net.sopod.soim.data.msg.hello.HelloPB$Hello=10004 +net.sopod.soim.data.msg.auth.Auth$ReqLogin=10005 +net.sopod.soim.data.msg.auth.Auth$ResTokenAuth=10006 +net.sopod.soim.data.msg.auth.Auth$ResLogin=10007 diff --git a/im-data/src/main/resources/protobuf/auth/Auth.proto b/im-data/src/main/resources/protobuf/auth/Auth.proto index 26efa7f..055da724 100644 --- a/im-data/src/main/resources/protobuf/auth/Auth.proto +++ b/im-data/src/main/resources/protobuf/auth/Auth.proto @@ -14,4 +14,14 @@ message ReqLogin { message ResLogin { int32 code = 1; string message = 2; -} \ No newline at end of file +} + +message ReqTokenAuth { + int32 uid = 1; + string token = 2; +} + +message ResTokenAuth { + bool success = 1; + string message = 2; +} diff --git a/pom.xml b/pom.xml index 1163ada..55f22a7 100644 --- a/pom.xml +++ b/pom.xml @@ -301,6 +301,20 @@ --> + + + org.apache.maven.plugins + maven-compiler-plugin + 3.8.1 + + 11 + 11 + + + + utf-8 + +