SYMBOL INDEX (872 symbols across 168 files) FILE: cim-client-sdk/src/main/java/com/crossoverjie/cim/client/sdk/Client.java type Client (line 13) | public interface Client extends Closeable { method builder (line 15) | static ClientBuilder builder() { method sendP2P (line 19) | default void sendP2P(P2PReqVO p2PReqVO) throws Exception { method sendP2PAsync (line 23) | CompletableFuture sendP2PAsync(P2PReqVO p2PReqVO); method sendGroup (line 25) | default void sendGroup(String msg) throws Exception { method sendGroupAsync (line 29) | CompletableFuture sendGroupAsync(String msg); method getState (line 31) | ClientState.State getState(); method getAuth (line 33) | ClientConfigurationData.Auth getAuth(); method getOnlineUser (line 35) | Set getOnlineUser() throws Exception; method getServerInfo (line 37) | Optional getServerInfo(); FILE: cim-client-sdk/src/main/java/com/crossoverjie/cim/client/sdk/ClientBuilder.java type ClientBuilder (line 14) | public interface ClientBuilder { method build (line 16) | Client build(); method auth (line 17) | ClientBuilder auth(ClientConfigurationData.Auth auth); method routeUrl (line 18) | ClientBuilder routeUrl(String routeUrl); method loginRetryCount (line 19) | ClientBuilder loginRetryCount(int loginRetryCount); method event (line 20) | ClientBuilder event(Event event); method reconnectCheck (line 21) | ClientBuilder reconnectCheck(ReconnectCheck reconnectCheck); method okHttpClient (line 22) | ClientBuilder okHttpClient(OkHttpClient okHttpClient); method messageListener (line 23) | ClientBuilder messageListener(MessageListener messageListener); method callbackThreadPool (line 24) | ClientBuilder callbackThreadPool(ThreadPoolExecutor callbackThreadPool); method backoffStrategy (line 25) | ClientBuilder backoffStrategy(BackoffStrategy backoffStrategy); FILE: cim-client-sdk/src/main/java/com/crossoverjie/cim/client/sdk/ClientState.java class ClientState (line 5) | public abstract class ClientState { type State (line 9) | public enum State { method setState (line 16) | public void setState(State s) { method getState (line 20) | public State getState() { FILE: cim-client-sdk/src/main/java/com/crossoverjie/cim/client/sdk/Event.java type Event (line 3) | public interface Event { method debug (line 4) | void debug(String msg, Object... replace); method info (line 5) | void info(String msg, Object... replace); method warn (line 6) | void warn(String msg, Object... replace); method error (line 7) | void error(String msg, Object... replace); method fatal (line 8) | void fatal(Client client); class DefaultEvent (line 10) | class DefaultEvent implements Event { method debug (line 11) | @Override method info (line 16) | @Override method warn (line 21) | @Override method error (line 26) | @Override method fatal (line 31) | @Override FILE: cim-client-sdk/src/main/java/com/crossoverjie/cim/client/sdk/FetchOfflineMsgJob.java class FetchOfflineMsgJob (line 6) | public class FetchOfflineMsgJob extends RingBufferWheel.Task { method FetchOfflineMsgJob (line 12) | public FetchOfflineMsgJob(RouteManager routeManager, ClientConfigurati... method run (line 18) | @Override FILE: cim-client-sdk/src/main/java/com/crossoverjie/cim/client/sdk/ReConnectManager.java class ReConnectManager (line 12) | public final class ReConnectManager { method reConnect (line 21) | public void reConnect(ChannelHandlerContext ctx) { method reConnectSuccess (line 36) | public void reConnectSuccess() { method buildExecutor (line 44) | private void buildExecutor() { class ClientHeartBeatHandle (line 54) | private static class ClientHeartBeatHandle implements HeartBeatHandler { method process (line 56) | @Override method createReConnectManager (line 62) | public static ReConnectManager createReConnectManager() { method createHeartBeatHandler (line 66) | public static HeartBeatHandler createHeartBeatHandler() { FILE: cim-client-sdk/src/main/java/com/crossoverjie/cim/client/sdk/RouteManager.java class RouteManager (line 20) | public class RouteManager { method RouteManager (line 26) | public RouteManager(String routeUrl, OkHttpClient okHttpClient, Event ... method getServer (line 31) | public CIMServerResVO getServer(LoginReqVO loginReqVO) throws Exception { method sendP2P (line 47) | public CompletableFuture sendP2P(CompletableFuture future,... method sendGroupMsg (line 62) | public CompletableFuture sendGroupMsg(ChatReqVO chatReqVO) { method offLine (line 72) | public void offLine(Long userId) { method onlineUser (line 77) | public Set onlineUser() throws Exception { method fetchOfflineMsgs (line 82) | public void fetchOfflineMsgs(Long userId) { FILE: cim-client-sdk/src/main/java/com/crossoverjie/cim/client/sdk/impl/ClientBuilderImpl.java class ClientBuilderImpl (line 13) | public class ClientBuilderImpl implements ClientBuilder { method ClientBuilderImpl (line 18) | public ClientBuilderImpl() { method ClientBuilderImpl (line 21) | public ClientBuilderImpl(ClientConfigurationData conf) { method build (line 25) | @Override method auth (line 30) | @Override method routeUrl (line 39) | @Override method loginRetryCount (line 48) | @Override method event (line 54) | @Override method reconnectCheck (line 60) | @Override method okHttpClient (line 66) | @Override method messageListener (line 72) | @Override method callbackThreadPool (line 78) | @Override method backoffStrategy (line 84) | @Override FILE: cim-client-sdk/src/main/java/com/crossoverjie/cim/client/sdk/impl/ClientConfigurationData.java class ClientConfigurationData (line 17) | @Data class Auth (line 25) | @Data FILE: cim-client-sdk/src/main/java/com/crossoverjie/cim/client/sdk/impl/ClientImpl.java class ClientImpl (line 47) | @Slf4j method ClientImpl (line 78) | public ClientImpl(ClientConfigurationData conf) { method postConnectionSetup (line 110) | private void postConnectionSetup() { method connectServer (line 115) | private void connectServer(Consumer success) { method doConnectServer (line 142) | private CompletableFuture doConnectServer() { method userLogin (line 162) | private Optional userLogin(CompletableFuture ... method doConnectServer (line 179) | private void doConnectServer(CIMServerResVO cimServer, CompletableFutu... method loginServer (line 199) | private void loginServer() { method reconnect (line 218) | public void reconnect() throws Exception { method close (line 237) | @Override method sendP2P (line 249) | @Override method sendGroup (line 254) | @Override method recordSendLog (line 259) | private void recordSendLog(CompletableFuture future, String msgW... method sendP2PAsync (line 272) | @Override method sendGroupAsync (line 279) | @Override method getAuth (line 285) | @Override method getState (line 290) | @Override method getOnlineUser (line 295) | @Override method getServerInfo (line 300) | @Override FILE: cim-client-sdk/src/main/java/com/crossoverjie/cim/client/sdk/io/CIMClientHandle.java class CIMClientHandle (line 17) | @ChannelHandler.Sharable method userEventTriggered (line 21) | @Override method channelActive (line 42) | @Override method channelInactive (line 48) | @Override method channelRead0 (line 60) | @Override method exceptionCaught (line 90) | @Override FILE: cim-client-sdk/src/main/java/com/crossoverjie/cim/client/sdk/io/CIMClientHandleInitializer.java class CIMClientHandleInitializer (line 12) | public class CIMClientHandleInitializer extends ChannelInitializer properties, String msg); FILE: cim-client-sdk/src/main/java/com/crossoverjie/cim/client/sdk/io/ReconnectCheck.java type ReconnectCheck (line 5) | public interface ReconnectCheck { method isNeedReconnect (line 11) | boolean isNeedReconnect(Client client); FILE: cim-client-sdk/src/main/java/com/crossoverjie/cim/client/sdk/io/backoff/BackoffStrategy.java type BackoffStrategy (line 11) | public interface BackoffStrategy { method nextBackoff (line 15) | long nextBackoff(); method runBackoff (line 21) | default void runBackoff() throws InterruptedException { FILE: cim-client-sdk/src/main/java/com/crossoverjie/cim/client/sdk/io/backoff/RandomBackoff.java class RandomBackoff (line 9) | public class RandomBackoff implements BackoffStrategy { method nextBackoff (line 11) | @Override FILE: cim-client-sdk/src/test/java/com/crossoverjie/cim/client/sdk/ClientTest.java class ClientTest (line 27) | @Slf4j method tearDown (line 31) | @AfterEach method groupChat (line 36) | @Test method testP2PChat (line 111) | @Test method testReconnect (line 242) | @Test method offLineAndOnline (line 328) | @Test method testClose (line 408) | @Test method testIncorrectUser (line 438) | @Test FILE: cim-client-sdk/src/test/java/com/crossoverjie/cim/client/sdk/OfflineMsgTest.java class OfflineMsgTest (line 20) | @Slf4j method testP2POfflineChatRedis (line 23) | @Test method testP2POfflineChatMysql (line 142) | @Test FILE: cim-client-sdk/src/test/resources/init.sql type `offline_msg` (line 2) | CREATE TABLE IF NOT EXISTS `offline_msg` type offline_msg_last_send_record (line 28) | CREATE TABLE offline_msg_last_send_record FILE: cim-client/src/main/java/com/crossoverjie/cim/client/CIMClientApplication.java class CIMClientApplication (line 12) | @Slf4j method main (line 17) | public static void main(String[] args) { method run (line 22) | @Override FILE: cim-client/src/main/java/com/crossoverjie/cim/client/config/AppConfiguration.java class AppConfiguration (line 14) | @Component FILE: cim-client/src/main/java/com/crossoverjie/cim/client/config/BeanConfig.java class BeanConfig (line 32) | @Configuration method buildClient (line 45) | @Bean method okHttpClient (line 74) | @Bean method buildCallerThread (line 90) | @Bean("callBackThreadPool") method bufferWheel (line 102) | @Bean FILE: cim-client/src/main/java/com/crossoverjie/cim/client/config/SwaggerConfig.java class SwaggerConfig (line 10) | @Configuration method createRestApi (line 13) | @Bean method apiInfo (line 19) | private Info apiInfo() { method contact (line 28) | private Contact contact() { FILE: cim-client/src/main/java/com/crossoverjie/cim/client/scanner/Scan.java class Scan (line 17) | public class Scan implements Runnable { method Scan (line 25) | public Scan() { method run (line 31) | @SneakyThrows FILE: cim-client/src/main/java/com/crossoverjie/cim/client/service/InnerCommand.java type InnerCommand (line 10) | public interface InnerCommand { method process (line 16) | void process(String msg) throws Exception; FILE: cim-client/src/main/java/com/crossoverjie/cim/client/service/InnerCommandContext.java class InnerCommandContext (line 19) | @Slf4j method getInstance (line 28) | public InnerCommand getInstance(String command) { FILE: cim-client/src/main/java/com/crossoverjie/cim/client/service/MsgHandle.java type MsgHandle (line 10) | public interface MsgHandle { method sendMsg (line 17) | void sendMsg(String msg) throws Exception; method checkMsg (line 27) | boolean checkMsg(String msg); method innerCommand (line 35) | boolean innerCommand(String msg) throws Exception; method openAIModel (line 41) | void openAIModel(); method closeAIModel (line 46) | void closeAIModel(); FILE: cim-client/src/main/java/com/crossoverjie/cim/client/service/MsgLogger.java type MsgLogger (line 10) | public interface MsgLogger { method log (line 16) | void log(String msg); method stop (line 22) | void stop(); method query (line 29) | String query(String key); FILE: cim-client/src/main/java/com/crossoverjie/cim/client/service/ShutDownSign.java class ShutDownSign (line 12) | @Component method shutdown (line 19) | public void shutdown() { method checkStatus (line 23) | public boolean checkStatus() { FILE: cim-client/src/main/java/com/crossoverjie/cim/client/service/impl/AsyncMsgLogger.java class AsyncMsgLogger (line 31) | @Slf4j method log (line 48) | @Override class Worker (line 60) | private class Worker extends Thread { method run (line 63) | @Override method writeLog (line 78) | private void writeLog(String msg) { method startMsgLogger (line 107) | private void startMsgLogger() { method stop (line 119) | @Override method query (line 125) | @Override FILE: cim-client/src/main/java/com/crossoverjie/cim/client/service/impl/EchoServiceImpl.java class EchoServiceImpl (line 20) | @Service method debug (line 31) | @Override method info (line 36) | @Override method warn (line 49) | @Override method error (line 54) | @Override method fatal (line 59) | @Override method print (line 72) | private String print(String msg, Object... place) { FILE: cim-client/src/main/java/com/crossoverjie/cim/client/service/impl/MsgCallBackListener.java class MsgCallBackListener (line 17) | public class MsgCallBackListener implements MessageListener { method MsgCallBackListener (line 23) | public MsgCallBackListener(MsgLogger msgLogger, Event event) { method received (line 29) | @Override FILE: cim-client/src/main/java/com/crossoverjie/cim/client/service/impl/MsgHandler.java class MsgHandler (line 20) | @Slf4j method sendMsg (line 33) | @Override method normalChat (line 42) | private void normalChat(String msg) throws Exception { method aiChat (line 60) | private void aiChat(String msg) { method checkMsg (line 69) | @Override method innerCommand (line 78) | @Override method openAIModel (line 93) | @Override method closeAIModel (line 98) | @Override FILE: cim-client/src/main/java/com/crossoverjie/cim/client/service/impl/command/CloseAIModelCommand.java class CloseAIModelCommand (line 16) | @Service method process (line 26) | @Override FILE: cim-client/src/main/java/com/crossoverjie/cim/client/service/impl/command/DelayMsgCommand.java class DelayMsgCommand (line 18) | @Service method process (line 31) | @Override class DelayMsgJob (line 49) | private class DelayMsgJob extends RingBufferWheel.Task { method DelayMsgJob (line 53) | public DelayMsgJob(String msg) { method run (line 57) | @Override FILE: cim-client/src/main/java/com/crossoverjie/cim/client/service/impl/command/EchoInfoCommand.java class EchoInfoCommand (line 16) | @Service method process (line 25) | @Override FILE: cim-client/src/main/java/com/crossoverjie/cim/client/service/impl/command/EmojiCommand.java class EmojiCommand (line 19) | @Service method process (line 26) | @Override FILE: cim-client/src/main/java/com/crossoverjie/cim/client/service/impl/command/OpenAIModelCommand.java class OpenAIModelCommand (line 15) | @Service method process (line 22) | @Override FILE: cim-client/src/main/java/com/crossoverjie/cim/client/service/impl/command/PrefixSearchCommand.java class PrefixSearchCommand (line 21) | @Slf4j method process (line 31) | @Override FILE: cim-client/src/main/java/com/crossoverjie/cim/client/service/impl/command/PrintAllCommand.java class PrintAllCommand (line 17) | @Service method process (line 24) | @Override FILE: cim-client/src/main/java/com/crossoverjie/cim/client/service/impl/command/PrintOnlineUsersCommand.java class PrintOnlineUsersCommand (line 19) | @Slf4j method process (line 29) | @Override FILE: cim-client/src/main/java/com/crossoverjie/cim/client/service/impl/command/QueryHistoryCommand.java class QueryHistoryCommand (line 17) | @Slf4j method process (line 27) | @Override FILE: cim-client/src/main/java/com/crossoverjie/cim/client/service/impl/command/ShutDownCommand.java class ShutDownCommand (line 23) | @Slf4j method process (line 46) | @Override FILE: cim-client/src/main/java/com/crossoverjie/cim/client/util/SpringBeanFactory.java class SpringBeanFactory (line 8) | @Component method getBean (line 12) | public static T getBean(Class c) { method getBean (line 17) | public static T getBean(String name, Class clazz) { method setApplicationContext (line 21) | @Override FILE: cim-client/src/test/java/com/crossoverjie/cim/client/service/InnerCommandContextTest.java class InnerCommandContextTest (line 11) | @SpringBootTest(classes = CIMClientApplication.class) method execute (line 18) | @Test method execute3 (line 26) | public void execute3() throws Exception { method execute4 (line 33) | @Test method execute5 (line 40) | @Test method execute6 (line 47) | @Test method execute7 (line 54) | @Test method execute8 (line 62) | public void execute8() throws Exception { method execute9 (line 69) | @Test method execute10 (line 76) | @Test method quit (line 86) | public void quit() throws Exception { FILE: cim-client/src/test/java/com/crossoverjie/cim/client/service/impl/AsyncMsgLoggerTest.java class AsyncMsgLoggerTest (line 13) | @SpringBootTest(classes = CIMClientApplication.class) method writeLog (line 22) | @Test method query (line 33) | @Test FILE: cim-client/src/test/java/com/crossoverjie/cim/server/test/CommonTest.java class CommonTest (line 39) | @Slf4j method searchMsg2 (line 45) | @Test method log (line 82) | @Test method emoji (line 110) | @Test method emoji2 (line 127) | @Test method deSerialize (line 138) | public void deSerialize() throws Exception { method json (line 149) | @Test class Gen (line 181) | private static class Gen { type TestInterface (line 186) | interface TestInterface { method login (line 187) | Gen login(); method test1 (line 191) | @Test method getGenericTypeOfBaseResponse (line 212) | public static Type getGenericTypeOfBaseResponse() { FILE: cim-client/src/test/java/com/crossoverjie/cim/server/test/EchoTest.java class EchoTest (line 13) | public class EchoTest { method echo (line 14) | @Test method echo2 (line 24) | @Test method echo3 (line 34) | @Test method echo4 (line 43) | @Test method echo5 (line 52) | @Test method echo6 (line 62) | @Test method log (line 72) | private String log(String msg, String... place) { FILE: cim-common/src/main/java/com/crossoverjie/cim/common/constant/Constants.java class Constants (line 10) | public class Constants { class MetaKey (line 24) | public static class MetaKey { FILE: cim-common/src/main/java/com/crossoverjie/cim/common/core/proxy/RpcProxyManager.java class RpcProxyManager (line 27) | @Slf4j method RpcProxyManager (line 42) | private RpcProxyManager(Class clazz, String url, OkHttpClient okHtt... method RpcProxyManager (line 48) | private RpcProxyManager(Class clazz, OkHttpClient okHttpClient) { method RpcProxyManager (line 55) | private RpcProxyManager() { method create (line 67) | public static T create(Class clazz, String url, OkHttpClient ok... method create (line 71) | public static T create(Class clazz, OkHttpClient okHttpClient) { method getInstance (line 80) | @SuppressWarnings("unchecked") class ProxyInvocation (line 89) | private class ProxyInvocation implements InvocationHandler { method invoke (line 100) | @Override method getGenericTypeOfBaseResponse (line 173) | private Type getGenericTypeOfBaseResponse(Method declaredMethod) { FILE: cim-common/src/main/java/com/crossoverjie/cim/common/data/construct/RingBufferWheel.java class RingBufferWheel (line 23) | @Slf4j method RingBufferWheel (line 69) | public RingBufferWheel(ExecutorService executorService) { method RingBufferWheel (line 82) | public RingBufferWheel(ExecutorService executorService, int bufferSize) { method addTask (line 97) | public int addTask(Task task) { method cancel (line 137) | public boolean cancel(int id) { method taskSize (line 174) | public int taskSize() { method taskMapSize (line 182) | public int taskMapSize() { method start (line 189) | public void start() { method stop (line 209) | public void stop(boolean force) { method get (line 234) | private Set get(int index) { method put (line 238) | private void put(int key, Set tasks) { method remove (line 248) | private Set remove(int key) { method size2Notify (line 277) | private void size2Notify() { method powerOf2 (line 289) | private boolean powerOf2(int target) { method mod (line 301) | private int mod(int target, int mod) { method cycleNum (line 307) | private int cycleNum(int target, int mod) { class Task (line 315) | public abstract static class Task extends Thread { method run (line 328) | @Override method getKey (line 332) | public int getKey() { method setKey (line 340) | public void setKey(int key) { method getCycleNum (line 344) | public int getCycleNum() { method setCycleNum (line 348) | private void setCycleNum(int cycleNum) { method getIndex (line 352) | public int getIndex() { method setIndex (line 356) | private void setIndex(int index) { method getTaskId (line 360) | public int getTaskId() { method setTaskId (line 364) | public void setTaskId(int taskId) { class TriggerJob (line 370) | private class TriggerJob implements Runnable { method run (line 372) | @Override FILE: cim-common/src/main/java/com/crossoverjie/cim/common/data/construct/SortArrayMap.java class SortArrayMap (line 17) | public class SortArrayMap extends AbstractMap { method SortArrayMap (line 31) | public SortArrayMap() { method add (line 40) | public void add(Long key, String value) { method remove (line 46) | public SortArrayMap remove(String value) { method checkSize (line 57) | private void checkSize(int size) { method firstNodeValue (line 71) | public String firstNodeValue(long key) { method sort (line 91) | public void sort() { method print (line 101) | public void print() { method size (line 110) | @Override method clear (line 115) | @Override method entrySet (line 121) | @Override method keySet (line 130) | @Override class Node (line 145) | private class Node { method Node (line 149) | public Node(Long key, String value) { method toString (line 154) | @Override FILE: cim-common/src/main/java/com/crossoverjie/cim/common/data/construct/TrieTree.java class TrieTree (line 15) | public class TrieTree { method TrieTree (line 36) | public TrieTree() { method insert (line 45) | public void insert(String data) { method insert (line 49) | private void insert(Node root, String data) { method prefixSearch (line 89) | public List prefixSearch(String key) { method query (line 110) | private List query(Node child, List value, String key,... method all (line 156) | public List all() { method depth (line 163) | public List depth(Node node, List list, char[] chars, ... class Node (line 209) | private class Node { FILE: cim-common/src/main/java/com/crossoverjie/cim/common/enums/StatusEnum.java type StatusEnum (line 10) | public enum StatusEnum { method StatusEnum (line 54) | private StatusEnum(String code, String message) { method getCode (line 63) | public String getCode() { method getMessage (line 71) | public String getMessage() { method code (line 79) | public String code() { method message (line 87) | public String message() { method findStatus (line 97) | public static StatusEnum findStatus(String code) { method getAllStatus (line 111) | public static List getAllStatus() { method getAllStatusCode (line 124) | public static List getAllStatusCode() { FILE: cim-common/src/main/java/com/crossoverjie/cim/common/enums/SystemCommandEnum.java type SystemCommandEnum (line 13) | public enum SystemCommandEnum { method SystemCommandEnum (line 43) | private SystemCommandEnum(String commandType, String desc, String claz... method getCommandType (line 53) | public String getCommandType() { method getClazz (line 60) | public String getClazz() { method getDesc (line 68) | public String getDesc() { method code (line 76) | public String code() { method message (line 84) | public String message() { method getAllStatusCode (line 93) | public static Map getAllStatusCode() { method getAllClazz (line 101) | public static Map getAllClazz() { FILE: cim-common/src/main/java/com/crossoverjie/cim/common/exception/CIMException.java class CIMException (line 13) | public class CIMException extends GenericException { method CIMException (line 16) | public CIMException(String errorCode, String errorMessage) { method CIMException (line 22) | public CIMException(Exception e, String errorCode, String errorMessage) { method CIMException (line 28) | public CIMException(String message) { method CIMException (line 33) | public CIMException(StatusEnum statusEnum) { method CIMException (line 39) | public CIMException(StatusEnum statusEnum, String message) { method CIMException (line 45) | public CIMException(Exception oriEx) { method CIMException (line 49) | public CIMException(Throwable oriEx) { method CIMException (line 53) | public CIMException(String message, Exception oriEx) { method CIMException (line 58) | public CIMException(String message, Throwable oriEx) { method isResetByPeer (line 64) | public static boolean isResetByPeer(String msg) { FILE: cim-common/src/main/java/com/crossoverjie/cim/common/exception/GenericException.java class GenericException (line 12) | public class GenericException extends RuntimeException implements Serial... method GenericException (line 17) | public GenericException() { method GenericException (line 20) | public GenericException(String message) { method GenericException (line 24) | public GenericException(Exception oriEx) { method GenericException (line 28) | public GenericException(Exception oriEx, String message) { method GenericException (line 32) | public GenericException(Throwable oriEx) { method GenericException (line 36) | public GenericException(String message, Exception oriEx) { method GenericException (line 40) | public GenericException(String message, Throwable oriEx) { method getErrorCode (line 44) | public String getErrorCode() { method setErrorCode (line 48) | public void setErrorCode(String errorCode) { method getErrorMessage (line 52) | public String getErrorMessage() { method setErrorMessage (line 56) | public void setErrorMessage(String errorMessage) { FILE: cim-common/src/main/java/com/crossoverjie/cim/common/kit/HeartBeatHandler.java type HeartBeatHandler (line 12) | public interface HeartBeatHandler { method process (line 19) | void process(ChannelHandlerContext ctx) throws Exception; FILE: cim-common/src/main/java/com/crossoverjie/cim/common/metastore/AbstractConfiguration.java class AbstractConfiguration (line 9) | @Data FILE: cim-common/src/main/java/com/crossoverjie/cim/common/metastore/MetaStore.java type MetaStore (line 9) | public interface MetaStore { method initialize (line 11) | void initialize(AbstractConfiguration configuration) throws Exception; method getAvailableServerList (line 18) | Set getAvailableServerList() throws Exception; method addServer (line 24) | void addServer(String ip, int cimServerPort, int httpPort) throws Exce... method listenServerList (line 31) | void listenServerList(ChildListener childListener) throws Exception; method rebuildCache (line 37) | void rebuildCache() throws Exception; type ChildListener (line 39) | interface ChildListener { method childChanged (line 46) | void childChanged(String parentPath, List currentChildren) t... FILE: cim-common/src/main/java/com/crossoverjie/cim/common/metastore/ZkConfiguration.java class ZkConfiguration (line 8) | public class ZkConfiguration extends AbstractConfiguration { method ZkConfiguration (line 9) | ZkConfiguration(String metaServiceUri, int timeout, RetryPolicy retryP... FILE: cim-common/src/main/java/com/crossoverjie/cim/common/metastore/ZkMetaStoreImpl.java class ZkMetaStoreImpl (line 21) | @Slf4j method initialize (line 29) | @Override method getAvailableServerList (line 35) | @Override method addServer (line 49) | @Override method listenServerList (line 65) | @Override method rebuildCache (line 77) | @Override method watchedGetChildren (line 85) | private List watchedGetChildren(CuratorFramework client, Strin... method createEphemeral (line 93) | private void createEphemeral(CuratorFramework client, String path, byt... method create (line 98) | private void create(CuratorFramework client, String path, byte[] paylo... method watchedGetChildren (line 103) | private void watchedGetChildren(CuratorFramework client, String path, ... FILE: cim-common/src/main/java/com/crossoverjie/cim/common/pojo/CIMUserInfo.java class CIMUserInfo (line 14) | @Data FILE: cim-common/src/main/java/com/crossoverjie/cim/common/pojo/RouteInfo.java class RouteInfo (line 14) | @Data FILE: cim-common/src/main/java/com/crossoverjie/cim/common/req/BaseRequest.java class BaseRequest (line 12) | public class BaseRequest { method BaseRequest (line 23) | public BaseRequest() { method getReqNo (line 27) | public String getReqNo() { method setReqNo (line 31) | public void setReqNo(String reqNo) { method getTimeStamp (line 35) | public int getTimeStamp() { method setTimeStamp (line 39) | public void setTimeStamp(int timeStamp) { method toString (line 44) | @Override FILE: cim-common/src/main/java/com/crossoverjie/cim/common/res/BaseResponse.java class BaseResponse (line 10) | public class BaseResponse implements Serializable { method BaseResponse (line 22) | public BaseResponse() {} method BaseResponse (line 24) | public BaseResponse(T dataBody) { method BaseResponse (line 28) | public BaseResponse(String code, String message) { method BaseResponse (line 33) | public BaseResponse(String code, String message, T dataBody) { method BaseResponse (line 39) | public BaseResponse(String code, String message, String reqNo, T dataB... method create (line 46) | public static BaseResponse create(T t) { method create (line 50) | public static BaseResponse create(T t, StatusEnum statusEnum) { method createSuccess (line 54) | public static BaseResponse createSuccess(T t, String message) { method createFail (line 59) | public static BaseResponse createFail(T t, String message) { method create (line 63) | public static BaseResponse create(T t, StatusEnum statusEnum, S... method getCode (line 69) | public String getCode() { method setCode (line 73) | public void setCode(String code) { method getMessage (line 77) | public String getMessage() { method setMessage (line 81) | public void setMessage(String message) { method getDataBody (line 85) | public T getDataBody() { method setDataBody (line 89) | public void setDataBody(T dataBody) { method getReqNo (line 93) | public String getReqNo() { method setReqNo (line 97) | public void setReqNo(String reqNo) { FILE: cim-common/src/main/java/com/crossoverjie/cim/common/res/NULLBody.java class NULLBody (line 10) | public class NULLBody { method NULLBody (line 11) | public NULLBody() {} method create (line 13) | public static NULLBody create() { FILE: cim-common/src/main/java/com/crossoverjie/cim/common/route/algorithm/RouteHandle.java type RouteHandle (line 13) | public interface RouteHandle { method routeServer (line 22) | String routeServer(List values, String key); method removeExpireServer (line 24) | List removeExpireServer(RouteInfo routeInfo); FILE: cim-common/src/main/java/com/crossoverjie/cim/common/route/algorithm/consistenthash/AbstractConsistentHash.java class AbstractConsistentHash (line 16) | public abstract class AbstractConsistentHash { method add (line 23) | protected abstract void add(long key, String value); method remove (line 30) | protected abstract Map remove(String value); method clear (line 35) | protected abstract void clear(); method sort (line 40) | protected void sort() { } method getFirstNodeValue (line 47) | protected abstract String getFirstNodeValue(String value); method process (line 55) | public String process(List values, String key) { method hash (line 71) | public Long hash(String value) { FILE: cim-common/src/main/java/com/crossoverjie/cim/common/route/algorithm/consistenthash/ConsistentHashHandle.java class ConsistentHashHandle (line 18) | public class ConsistentHashHandle implements RouteHandle { method setHash (line 21) | public void setHash(AbstractConsistentHash hash) { method routeServer (line 25) | @Override method removeExpireServer (line 30) | @Override FILE: cim-common/src/main/java/com/crossoverjie/cim/common/route/algorithm/consistenthash/SortArrayMapConsistentHash.java class SortArrayMapConsistentHash (line 15) | public class SortArrayMapConsistentHash extends AbstractConsistentHash { method add (line 24) | @Override method remove (line 33) | @Override method sort (line 39) | @Override method getSortArrayMap (line 48) | @VisibleForTesting method clear (line 53) | @Override method getFirstNodeValue (line 58) | @Override FILE: cim-common/src/main/java/com/crossoverjie/cim/common/route/algorithm/consistenthash/TreeMapConsistentHash.java class TreeMapConsistentHash (line 19) | public class TreeMapConsistentHash extends AbstractConsistentHash { method add (line 27) | @Override method remove (line 36) | @Override method clear (line 46) | @Override method getTreeMap (line 55) | @VisibleForTesting method getFirstNodeValue (line 60) | @Override FILE: cim-common/src/main/java/com/crossoverjie/cim/common/route/algorithm/loop/LoopHandle.java class LoopHandle (line 19) | public class LoopHandle implements RouteHandle { method routeServer (line 24) | @Override method removeExpireServer (line 38) | @Override FILE: cim-common/src/main/java/com/crossoverjie/cim/common/route/algorithm/random/RandomHandle.java class RandomHandle (line 19) | public class RandomHandle implements RouteHandle { method routeServer (line 22) | @Override method removeExpireServer (line 34) | @Override FILE: cim-common/src/main/java/com/crossoverjie/cim/common/util/HttpClient.java class HttpClient (line 18) | public final class HttpClient { method post (line 22) | public static Response post(OkHttpClient okHttpClient, String params, ... method get (line 39) | public static Response get(OkHttpClient okHttpClient, String url) thro... FILE: cim-common/src/main/java/com/crossoverjie/cim/common/util/NettyAttrUtil.java class NettyAttrUtil (line 14) | public class NettyAttrUtil { method updateReaderTime (line 19) | public static void updateReaderTime(Channel channel, Long time) { method getReaderTime (line 23) | public static Long getReaderTime(Channel channel) { method getAttribute (line 33) | private static String getAttribute(Channel channel, AttributeKey watchedGetChildren(CuratorFramework client,... method watchedGetChildren (line 76) | public static List watchedGetChildren(CuratorFramework client,... method curatorWatcherGetChildren (line 84) | public static List curatorWatcherGetChildren(CuratorFramework ... method zkClientTest (line 93) | @SneakyThrows FILE: cim-common/src/test/java/com/crossoverjie/cim/common/route/algorithm/consistenthash/ConsistentHashHandleTest.java class ConsistentHashHandleTest (line 12) | class ConsistentHashHandleTest { method removeSortMapExpireServer (line 14) | @Test method removeTreeMapExpireServer (line 34) | @Test FILE: cim-common/src/test/java/com/crossoverjie/cim/common/route/algorithm/consistenthash/RangeCheckTestUtil.java class RangeCheckTestUtil (line 11) | public class RangeCheckTestUtil { method assertInRange (line 13) | public static void assertInRange(int value, int l, int r) { FILE: cim-common/src/test/java/com/crossoverjie/cim/common/route/algorithm/consistenthash/SortArrayMapConsistentHashTest.java class SortArrayMapConsistentHashTest (line 11) | public class SortArrayMapConsistentHashTest { method getFirstNodeValue (line 13) | @Test method getFirstNodeValue2 (line 28) | @Test method getFirstNodeValue3 (line 44) | @Test method getFirstNodeValue4 (line 60) | @Test method getFirstNodeValue5 (line 76) | @Test method getFirstNodeValue6 (line 92) | @Test method getFirstNodeValue7 (line 108) | @Test method getFirstNodeValue8 (line 125) | @Test method testVirtualNode (line 141) | @Test FILE: cim-common/src/test/java/com/crossoverjie/cim/common/route/algorithm/consistenthash/TreeMapConsistentHashTest.java class TreeMapConsistentHashTest (line 11) | public class TreeMapConsistentHashTest { method getFirstNodeValue (line 15) | @Test method getFirstNodeValue2 (line 32) | @Test method getFirstNodeValue3 (line 48) | @Test method getFirstNodeValue4 (line 63) | @Test method testVirtualNode (line 79) | @Test FILE: cim-common/src/test/java/com/crossoverjie/cim/common/route/algorithm/loop/LoopHandleTest.java class LoopHandleTest (line 12) | class LoopHandleTest { method removeExpireServer (line 14) | @Test FILE: cim-common/src/test/java/com/crossoverjie/cim/common/route/algorithm/random/RandomHandleTest.java class RandomHandleTest (line 12) | class RandomHandleTest { method removeExpireServer (line 14) | @Test FILE: cim-common/src/test/java/com/crossoverjie/cim/common/util/HttpClientTest.java class HttpClientTest (line 10) | public class HttpClientTest { method before (line 14) | @Before method call (line 24) | @Test FILE: cim-common/src/test/java/com/crossoverjie/cim/common/util/ProtocolTest.java class ProtocolTest (line 8) | public class ProtocolTest { method testProtocol (line 10) | @Test method encode (line 31) | public static byte[] encode(Request protocol) { method decode (line 41) | public static Request decode(byte[] bytes) throws InvalidProtocolBuffe... FILE: cim-forward-route/src/main/java/com/crossoverjie/cim/route/RouteApplication.java class RouteApplication (line 13) | @Slf4j method main (line 21) | public static void main(String[] args) { method run (line 26) | @Override FILE: cim-forward-route/src/main/java/com/crossoverjie/cim/route/config/AppConfiguration.java class AppConfiguration (line 13) | @Component method getZkConnectTimeout (line 35) | public int getZkConnectTimeout() { method getPort (line 39) | public int getPort() { method setPort (line 43) | public void setPort(int port) { method getZkRoot (line 47) | public String getZkRoot() { method setZkRoot (line 51) | public void setZkRoot(String zkRoot) { method getZkAddr (line 55) | public String getZkAddr() { method setZkAddr (line 59) | public void setZkAddr(String zkAddr) { method getRouteWay (line 63) | public String getRouteWay() { method setRouteWay (line 67) | public void setRouteWay(String routeWay) { method getConsistentHashWay (line 71) | public String getConsistentHashWay() { method setConsistentHashWay (line 75) | public void setConsistentHashWay(String consistentHashWay) { FILE: cim-forward-route/src/main/java/com/crossoverjie/cim/route/config/BeanConfig.java class BeanConfig (line 39) | @Configuration method metaStore (line 47) | @Bean method redisTemplate (line 69) | @Bean method okHttpClient (line 84) | @Bean method buildRouteHandle (line 94) | @Bean method userInfoCache (line 114) | @Bean("userInfoCache") method serverApi (line 133) | @Bean method snowflakeIdWorker (line 138) | @Bean FILE: cim-forward-route/src/main/java/com/crossoverjie/cim/route/config/MySqlPersistenceConfig.java class MySqlPersistenceConfig (line 14) | @Configuration FILE: cim-forward-route/src/main/java/com/crossoverjie/cim/route/config/OfflineMsgStoreConfig.java class OfflineMsgStoreConfig (line 20) | @Configuration method offlineMsgDbStore (line 23) | @Bean method offlineMsgBufferStore (line 29) | @Bean FILE: cim-forward-route/src/main/java/com/crossoverjie/cim/route/config/SwaggerConfig.java class SwaggerConfig (line 9) | @Configuration method createRestApi (line 12) | @Bean method apiInfo (line 18) | private Info apiInfo() { method contact (line 27) | private Contact contact() { FILE: cim-forward-route/src/main/java/com/crossoverjie/cim/route/constant/Constant.java class Constant (line 10) | public final class Constant { class OfflineStoreMode (line 29) | public static final class OfflineStoreMode { FILE: cim-forward-route/src/main/java/com/crossoverjie/cim/route/controller/RouteController.java class RouteController (line 47) | @Slf4j method groupRoute (line 74) | @Operation(summary = "群聊 API") method p2pRoute (line 112) | @Operation(summary = "私聊 API") method offLine (line 143) | @Operation(summary = "客户端下线") method login (line 167) | @Operation(summary = "登录并获取服务器") method registerAccount (line 205) | @Operation(summary = "注册账号") method onlineUser (line 228) | @Operation(summary = "获取所有在线用户") method fetchOfflineMsgs (line 242) | @Operation(summary = "Client fetch offline messages") FILE: cim-forward-route/src/main/java/com/crossoverjie/cim/route/exception/ExceptionHandlingController.java class ExceptionHandlingController (line 17) | @Slf4j method handleAllExceptions (line 20) | @ExceptionHandler(CIMException.class) FILE: cim-forward-route/src/main/java/com/crossoverjie/cim/route/factory/OfflineMsgFactory.java class OfflineMsgFactory (line 17) | @Service method OfflineMsgFactory (line 22) | public OfflineMsgFactory(SnowflakeIdWorker idWorker) { method createFromVo (line 26) | public OfflineMsg createFromVo(SaveOfflineMsgReqVO vo) { method createPropertiesMap (line 43) | private Map createPropertiesMap(SaveOfflineMsgReqVO vo) { FILE: cim-forward-route/src/main/java/com/crossoverjie/cim/route/kit/NetAddressIsReachable.java class NetAddressIsReachable (line 15) | @Slf4j method checkAddressReachable (line 26) | public static boolean checkAddressReachable(String address, int port, ... method NetAddressIsReachable (line 42) | private NetAddressIsReachable() { FILE: cim-forward-route/src/main/java/com/crossoverjie/cim/route/service/AccountService.java type AccountService (line 19) | public interface AccountService { method register (line 27) | RegisterInfoResVO register(RegisterInfoResVO info) throws Exception; method login (line 35) | StatusEnum login(LoginReqVO loginReqVO) throws Exception; method saveRouteInfo (line 43) | void saveRouteInfo(LoginReqVO loginReqVO, String msg) throws Exception; method loadRouteRelated (line 49) | Map loadRouteRelated(); method loadRouteRelatedByUserId (line 56) | Optional loadRouteRelatedByUserId(Long userId); method pushMsg (line 66) | void pushMsg(CIMServerResVO cimServerResVO, long sendUserId, ChatReqVO... method offLine (line 73) | void offLine(Long userId); FILE: cim-forward-route/src/main/java/com/crossoverjie/cim/route/service/CommonBizService.java class CommonBizService (line 20) | @Component method checkServerAvailable (line 32) | @SneakyThrows FILE: cim-forward-route/src/main/java/com/crossoverjie/cim/route/service/OfflineMsgService.java type OfflineMsgService (line 9) | public interface OfflineMsgService { method fetchOfflineMsgs (line 16) | void fetchOfflineMsgs(CIMServerResVO cimServerResVO, Long receiveUserId); method saveOfflineMsg (line 22) | void saveOfflineMsg(P2PReqVO p2pRequest); FILE: cim-forward-route/src/main/java/com/crossoverjie/cim/route/service/UserInfoCacheService.java type UserInfoCacheService (line 15) | public interface UserInfoCacheService { method loadUserInfoByUserId (line 23) | Optional loadUserInfoByUserId(Long userId); method saveAndCheckUserLoginStatus (line 31) | boolean saveAndCheckUserLoginStatus(Long userId) throws Exception; method onlineUser (line 37) | Set onlineUser(); FILE: cim-forward-route/src/main/java/com/crossoverjie/cim/route/service/impl/AccountServiceRedisImpl.java class AccountServiceRedisImpl (line 45) | @Slf4j method register (line 58) | @Override method login (line 76) | @Override method saveRouteInfo (line 99) | @Override method loadRouteRelated (line 105) | @Override method loadRouteRelatedByUserId (line 129) | @Override method parseServerInfo (line 143) | private void parseServerInfo(Map routes, String ... method pushMsg (line 153) | @Override method offLine (line 171) | @Override FILE: cim-forward-route/src/main/java/com/crossoverjie/cim/route/service/impl/OfflineMsgServiceImpl.java class OfflineMsgServiceImpl (line 25) | @Slf4j method fetchOfflineMsgs (line 41) | @Override method saveOfflineMsg (line 69) | @Override FILE: cim-forward-route/src/main/java/com/crossoverjie/cim/route/service/impl/UserInfoCacheServiceImpl.java class UserInfoCacheServiceImpl (line 26) | @Slf4j method loadUserInfoByUserId (line 36) | @Override method saveAndCheckUserLoginStatus (line 42) | @Override method onlineUser (line 49) | @Override FILE: cim-forward-route/src/main/java/com/crossoverjie/cim/route/util/SpringBeanFactory.java class SpringBeanFactory (line 8) | @Component method getBean (line 12) | public static T getBean(Class c) { method getBean (line 17) | public static T getBean(String name, Class clazz) { method setApplicationContext (line 21) | @Override FILE: cim-forward-route/src/test/java/CommonTest.java class CommonTest (line 11) | public class CommonTest { method test (line 13) | @Test FILE: cim-forward-route/src/test/java/com/crossoverjie/cim/route/service/impl/AbstractBaseTest.java class AbstractBaseTest (line 14) | public class AbstractBaseTest { method before (line 41) | @BeforeAll method after (line 61) | @AfterAll FILE: cim-forward-route/src/test/java/com/crossoverjie/cim/route/service/impl/AccountServiceRedisImplTest.java class AccountServiceRedisImplTest (line 13) | @Slf4j method loadRouteRelated (line 20) | @Test FILE: cim-forward-route/src/test/java/com/crossoverjie/cim/route/service/impl/RedisTest.java class RedisTest (line 11) | @SpringBootTest(classes = RouteApplication.class) method test (line 17) | @Test FILE: cim-forward-route/src/test/java/com/crossoverjie/cim/route/service/impl/UserInfoCacheServiceImplTest.java class UserInfoCacheServiceImplTest (line 13) | @Slf4j method checkUserLoginStatus (line 20) | @Test method onlineUser (line 26) | @Test FILE: cim-forward-route/src/test/resources/init.sql type `offline_msg` (line 2) | CREATE TABLE IF NOT EXISTS `offline_msg` type offline_msg_last_send_record (line 28) | CREATE TABLE offline_msg_last_send_record FILE: cim-integration-test/src/main/java/com/crossoverjie/cim/client/sdk/route/AbstractRouteBaseTest.java class AbstractRouteBaseTest (line 15) | public abstract class AbstractRouteBaseTest extends AbstractServerBaseTe... method startRoute (line 21) | public void startRoute(String offlineModel) { method close (line 34) | public void close() { method registerAccount (line 40) | public Long registerAccount(String userName) throws Exception { FILE: cim-integration-test/src/main/java/com/crossoverjie/cim/client/sdk/route/OfflineMsgStoreRouteBaseTest.java class OfflineMsgStoreRouteBaseTest (line 15) | public class OfflineMsgStoreRouteBaseTest extends AbstractRouteBaseTest { method startRoute (line 19) | @Override method close (line 59) | @Override FILE: cim-integration-test/src/main/java/com/crossoverjie/cim/client/sdk/server/AbstractServerBaseTest.java class AbstractServerBaseTest (line 15) | public abstract class AbstractServerBaseTest { method starSingleServer (line 30) | public void starSingleServer() { method stopSingle (line 40) | public void stopSingle() { method startTwoServer (line 45) | public void startTwoServer() { method stopServer (line 72) | public void stopServer(Integer port) { method stopTwoServer (line 76) | public void stopTwoServer() { method close (line 80) | public void close() { FILE: cim-persistence/cim-persistence-api/src/main/java/com/crossoverjie/cim/persistence/api/config/BeanConfig.java class BeanConfig (line 18) | @Configuration("persistenceBeanConfig") method stringObjectRedisTemplate (line 28) | @Bean method hashMapper (line 40) | @Bean FILE: cim-persistence/cim-persistence-api/src/main/java/com/crossoverjie/cim/persistence/api/pojo/OfflineMsg.java class OfflineMsg (line 16) | @Data FILE: cim-persistence/cim-persistence-api/src/main/java/com/crossoverjie/cim/persistence/api/pojo/OfflineMsgLastSendRecord.java class OfflineMsgLastSendRecord (line 14) | @Data FILE: cim-persistence/cim-persistence-api/src/main/java/com/crossoverjie/cim/persistence/api/service/OfflineMsgStore.java type OfflineMsgStore (line 13) | public interface OfflineMsgStore { method save (line 20) | void save(OfflineMsg offlineMsg); method fetch (line 28) | List fetch(Long userId); method markDelivered (line 36) | void markDelivered(Long userId, List messageIds); FILE: cim-persistence/cim-persistence-api/src/main/java/com/crossoverjie/cim/persistence/api/vo/req/SaveOfflineMsgReqVO.java class SaveOfflineMsgReqVO (line 15) | @Data FILE: cim-persistence/cim-persistence-mysql/src/main/java/com/crossoverjie/cim/persistence/mysql/config/MyBatisConfig.java class MyBatisConfig (line 13) | @Configuration method configurationCustomizer (line 15) | @Bean FILE: cim-persistence/cim-persistence-mysql/src/main/java/com/crossoverjie/cim/persistence/mysql/offlinemsg/OfflineMsgDb.java class OfflineMsgDb (line 17) | public class OfflineMsgDb implements OfflineMsgStore { method OfflineMsgDb (line 22) | public OfflineMsgDb(OfflineMsgMapper offlineMsgMapper, OfflineMsgLastS... method save (line 27) | @Override method fetch (line 32) | @Override method markDelivered (line 37) | @Override FILE: cim-persistence/cim-persistence-mysql/src/main/java/com/crossoverjie/cim/persistence/mysql/offlinemsg/mapper/OfflineMsgLastSendRecordMapper.java type OfflineMsgLastSendRecordMapper (line 11) | @Mapper method saveLatestMessageId (line 14) | void saveLatestMessageId(@Param("receiveUserId") Long receiveUserId, @... FILE: cim-persistence/cim-persistence-mysql/src/main/java/com/crossoverjie/cim/persistence/mysql/offlinemsg/mapper/OfflineMsgMapper.java type OfflineMsgMapper (line 16) | @Mapper method insert (line 19) | int insert(OfflineMsg msg); method insertBatch (line 21) | int insertBatch(@Param("offlineMsgs") List offlineMsgs); method fetchOfflineMsgsWithCursor (line 23) | List fetchOfflineMsgsWithCursor(@Param("receiveUserId") Lo... method updateStatus (line 25) | int updateStatus( method fetchOfflineMsgIdsWithCursor (line 29) | List fetchOfflineMsgIdsWithCursor(@Param("receiveUserId") Long r... FILE: cim-persistence/cim-persistence-mysql/src/main/java/com/crossoverjie/cim/persistence/mysql/util/MapToJsonTypeHandler.java class MapToJsonTypeHandler (line 19) | public class MapToJsonTypeHandler extends BaseTypeHandler parseJson(String json) { FILE: cim-persistence/cim-persistence-redis/src/main/java/com/crossoverjie/cim/persistence/redis/OfflineMsgBuffer.java class OfflineMsgBuffer (line 28) | @Slf4j method OfflineMsgBuffer (line 35) | public OfflineMsgBuffer(OfflineMsgScriptExecutor scriptExecutor, Integ... method ensureValidTtlOrDefault (line 41) | private int ensureValidTtlOrDefault(Integer configuredDays) { method save (line 45) | @Override method fetch (line 55) | @Override method markDelivered (line 75) | @Override FILE: cim-persistence/cim-persistence-redis/src/main/java/com/crossoverjie/cim/persistence/redis/constant/Constant.java class Constant (line 8) | public final class Constant { FILE: cim-persistence/cim-persistence-redis/src/main/java/com/crossoverjie/cim/persistence/redis/kit/OfflineMsgScriptExecutor.java class OfflineMsgScriptExecutor (line 25) | @Component method OfflineMsgScriptExecutor (line 31) | public OfflineMsgScriptExecutor(RedisTemplate redisTem... method saveOfflineMsg (line 55) | public Long saveOfflineMsg(OfflineMsg msg, Integer messageTtlDays) { method serialize (line 66) | private String serialize(OfflineMsg msg) { method fetchOfflineMsgs (line 75) | public List fetchOfflineMsgs(Long userId, Integer size) { method deleteOfflineMsg (line 84) | public Long deleteOfflineMsg(Long userId, List msgIds) { FILE: cim-rout-api/src/main/java/com/crossoverjie/cim/route/api/RouteApi.java type RouteApi (line 24) | public interface RouteApi { method groupRoute (line 33) | BaseResponse groupRoute(ChatReqVO groupReqVO); method p2pRoute (line 41) | BaseResponse p2pRoute(P2PReqVO p2pRequest); method offLine (line 51) | BaseResponse offLine(ChatReqVO groupReqVO); method login (line 59) | BaseResponse login(LoginReqVO loginReqVO) throws Excep... method registerAccount (line 68) | BaseResponse registerAccount(RegisterInfoReqVO regi... method onlineUser (line 76) | @Request(method = Request.GET) method fetchOfflineMsgs (line 80) | BaseResponse fetchOfflineMsgs(OfflineMsgReqVO offlineMsgReqVO); FILE: cim-rout-api/src/main/java/com/crossoverjie/cim/route/api/vo/req/ChatReqVO.java class ChatReqVO (line 21) | @EqualsAndHashCode(callSuper = true) method toString (line 39) | @Override FILE: cim-rout-api/src/main/java/com/crossoverjie/cim/route/api/vo/req/LoginReqVO.java class LoginReqVO (line 13) | @AllArgsConstructor method getUserId (line 18) | public Long getUserId() { method setUserId (line 22) | public void setUserId(Long userId) { method getUserName (line 26) | public String getUserName() { method setUserName (line 30) | public void setUserName(String userName) { method toString (line 34) | @Override FILE: cim-rout-api/src/main/java/com/crossoverjie/cim/route/api/vo/req/OfflineMsgReqVO.java class OfflineMsgReqVO (line 15) | @Builder FILE: cim-rout-api/src/main/java/com/crossoverjie/cim/route/api/vo/req/P2PReqVO.java class P2PReqVO (line 20) | @Builder method P2PReqVO (line 43) | public P2PReqVO() { method P2PReqVO (line 46) | public P2PReqVO(Long userId, Long receiveUserId, String msg) { method P2PReqVO (line 51) | public P2PReqVO(Long userId, Long receiveUserId, String msg, List sendMsg(SendMsgReqVO sendMsgReqVO, @Dynamic... FILE: cim-server-api/src/main/java/com/crossoverjie/cim/server/api/vo/req/SendMsgReqVO.java class SendMsgReqVO (line 24) | @Builder method SendMsgReqVO (line 49) | public SendMsgReqVO() { method SendMsgReqVO (line 52) | public SendMsgReqVO(String msg, Long userId, List batchMsg, Ba... method getMsg (line 59) | public String getMsg() { method setMsg (line 63) | public void setMsg(String msg) { method toString (line 68) | @Override FILE: cim-server-api/src/main/java/com/crossoverjie/cim/server/api/vo/res/OfflineMsgResVO.java class OfflineMsgResVO (line 8) | public class OfflineMsgResVO { method getMsg (line 12) | public String getMsg() { method setMsg (line 16) | public void setMsg(String msg) { FILE: cim-server-api/src/main/java/com/crossoverjie/cim/server/api/vo/res/SaveOfflineMsgResVO.java class SaveOfflineMsgResVO (line 3) | public class SaveOfflineMsgResVO { method getMsg (line 7) | public String getMsg() { method setMsg (line 11) | public void setMsg(String msg) { FILE: cim-server-api/src/main/java/com/crossoverjie/cim/server/api/vo/res/SendMsgResVO.java class SendMsgResVO (line 10) | public class SendMsgResVO { method getMsg (line 13) | public String getMsg() { method setMsg (line 17) | public void setMsg(String msg) { FILE: cim-server/src/main/java/com/crossoverjie/cim/server/CIMServerApplication.java class CIMServerApplication (line 18) | @SpringBootApplication method main (line 32) | public static void main(String[] args) { method run (line 37) | @Override FILE: cim-server/src/main/java/com/crossoverjie/cim/server/config/AppConfiguration.java class AppConfiguration (line 13) | @Component method getRouteUrl (line 31) | public String getRouteUrl() { method setRouteUrl (line 35) | public void setRouteUrl(String routeUrl) { method getZkConnectTimeout (line 45) | public int getZkConnectTimeout() { method getZkRoot (line 49) | public String getZkRoot() { method setZkRoot (line 53) | public void setZkRoot(String zkRoot) { method getZkAddr (line 57) | public String getZkAddr() { method setZkAddr (line 61) | public void setZkAddr(String zkAddr) { method isZkSwitch (line 65) | public boolean isZkSwitch() { method setZkSwitch (line 69) | public void setZkSwitch(boolean zkSwitch) { method getCimServerPort (line 73) | public int getCimServerPort() { method setCimServerPort (line 77) | public void setCimServerPort(int cimServerPort) { method getHeartBeatTime (line 81) | public long getHeartBeatTime() { method setHeartBeatTime (line 85) | public void setHeartBeatTime(long heartBeatTime) { FILE: cim-server/src/main/java/com/crossoverjie/cim/server/config/BeanConfig.java class BeanConfig (line 22) | @Configuration method okHttpClient (line 32) | @Bean method metaStore (line 42) | @Bean method heartBeat (line 51) | @Bean(value = "heartBeat") method routeApi (line 60) | @Bean FILE: cim-server/src/main/java/com/crossoverjie/cim/server/config/SwaggerConfig.java class SwaggerConfig (line 9) | @Configuration method createRestApi (line 11) | @Bean method apiInfo (line 17) | private Info apiInfo() { method contact (line 26) | private Contact contact() { FILE: cim-server/src/main/java/com/crossoverjie/cim/server/controller/IndexController.java class IndexController (line 25) | @Controller method sendMsg (line 38) | @Override FILE: cim-server/src/main/java/com/crossoverjie/cim/server/handle/CIMServerHandle.java class CIMServerHandle (line 29) | @ChannelHandler.Sharable method channelInactive (line 41) | @Override method userEventTriggered (line 56) | @Override method channelRead0 (line 73) | @Override method exceptionCaught (line 100) | @Override FILE: cim-server/src/main/java/com/crossoverjie/cim/server/init/CIMServerInitializer.java class CIMServerInitializer (line 20) | public class CIMServerInitializer extends ChannelInitializer { method initChannel (line 24) | @Override FILE: cim-server/src/main/java/com/crossoverjie/cim/server/kit/RegistryMetaStore.java class RegistryMetaStore (line 19) | @Slf4j method RegistryMetaStore (line 30) | public RegistryMetaStore(MetaStore metaStore, String ip, int cimServer... method run (line 38) | @SneakyThrows FILE: cim-server/src/main/java/com/crossoverjie/cim/server/kit/RouteHandler.java class RouteHandler (line 19) | @Component method userOffLine (line 32) | public void userOffLine(CIMUserInfo userInfo, NioSocketChannel channel) { method clearRouteInfo (line 50) | public void clearRouteInfo(CIMUserInfo userInfo) { FILE: cim-server/src/main/java/com/crossoverjie/cim/server/kit/ServerHeartBeatHandlerImpl.java class ServerHeartBeatHandlerImpl (line 21) | @Service method process (line 32) | @Override FILE: cim-server/src/main/java/com/crossoverjie/cim/server/server/CIMServer.java class CIMServer (line 29) | @Component method start (line 48) | @PostConstruct method destroy (line 69) | @PreDestroy method sendMsg (line 81) | public void sendMsg(SendMsgReqVO sendMsgReqVO) { FILE: cim-server/src/main/java/com/crossoverjie/cim/server/util/SessionSocketHolder.java class SessionSocketHolder (line 16) | public class SessionSocketHolder { method saveSession (line 20) | public static void saveSession(Long userId, String userName) { method removeSession (line 24) | public static void removeSession(Long userId) { method put (line 33) | public static void put(Long id, NioSocketChannel socketChannel) { method get (line 37) | public static NioSocketChannel get(Long id) { method getRelationShip (line 41) | public static Map getRelationShip() { method remove (line 45) | public static void remove(NioSocketChannel nioSocketChannel) { method getUserId (line 54) | public static CIMUserInfo getUserId(NioSocketChannel nioSocketChannel) { FILE: cim-server/src/main/java/com/crossoverjie/cim/server/util/SpringBeanFactory.java class SpringBeanFactory (line 8) | @Component method getBean (line 12) | public static T getBean(Class c) { method getBean (line 17) | public static T getBean(String name, Class clazz) { method setApplicationContext (line 21) | @Override FILE: cim-server/src/test/com/crossoverjie/cim/server/util/NettyAttrUtilTest.java class NettyAttrUtilTest (line 8) | public class NettyAttrUtilTest { method test (line 10) | @Test FILE: sql/offline_msg.sql type offline_msg (line 1) | CREATE TABLE offline_msg ( FILE: sql/offline_msg_last_send_record.sql type offline_msg_last_send_record (line 1) | CREATE TABLE offline_msg_last_send_record