0227
parent
6899ded066
commit
8a2d6765e0
|
|
@ -10,13 +10,14 @@
|
|||
<module name="game_mj_zhuanzhuan" />
|
||||
<module name="data_cache" />
|
||||
<module name="game_mj_hongzhong" />
|
||||
<module name="web_group_robot" />
|
||||
<module name="web_group" />
|
||||
<module name="game_mj_yijiaolaiyou" />
|
||||
<module name="taurus-permanent" />
|
||||
<module name="event_mgr" />
|
||||
<module name="game_common" />
|
||||
<module name="taurus-web" />
|
||||
<module name="game_zp_changdepaohuzi" />
|
||||
<module name="game_common" />
|
||||
<module name="game_mj_fulushou" />
|
||||
<module name="game_pk_chuntian" />
|
||||
<module name="game_zp_yueyangwaihuzi" />
|
||||
|
|
|
|||
|
|
@ -9,6 +9,8 @@
|
|||
<file url="file://$PROJECT_DIR$/game_web/pack_tools/src/main/resources" charset="UTF-8" />
|
||||
<file url="file://$PROJECT_DIR$/game_web/web_group/src/main/java" charset="UTF-8" />
|
||||
<file url="file://$PROJECT_DIR$/game_web/web_group/src/main/resources" charset="UTF-8" />
|
||||
<file url="file://$PROJECT_DIR$/game_web/web_group_robot/src/main/java" charset="UTF-8" />
|
||||
<file url="file://$PROJECT_DIR$/game_web/web_group_robot/src/main/resources" charset="UTF-8" />
|
||||
<file url="file://$PROJECT_DIR$/game_web/web_login20/src/main/java" charset="UTF-8" />
|
||||
<file url="file://$PROJECT_DIR$/game_web/web_login20/src/main/resources" charset="UTF-8" />
|
||||
<file url="file://$PROJECT_DIR$/libs/data_cache/src/main/java" charset="UTF-8" />
|
||||
|
|
|
|||
|
|
@ -31,6 +31,7 @@
|
|||
<option value="$PROJECT_DIR$/majiang/gejiu/game_mj_gejiu/pom.xml" />
|
||||
<option value="$PROJECT_DIR$/puke/chuntian/game_pk_chuntian/pom.xml" />
|
||||
<option value="$PROJECT_DIR$/libs/robot_common/pom.xml" />
|
||||
<option value="$PROJECT_DIR$/game_web/web_group_robot/pom.xml" />
|
||||
</list>
|
||||
</option>
|
||||
</component>
|
||||
|
|
|
|||
|
|
@ -1,54 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
|
||||
<component name="FacetManager">
|
||||
<facet type="web" name="Web">
|
||||
<configuration>
|
||||
<descriptors>
|
||||
<deploymentDescriptor name="web.xml" url="file://$MODULE_DIR$/src/main/webapp/WEB-INF/web.xml" />
|
||||
</descriptors>
|
||||
<webroots>
|
||||
<root url="file://$MODULE_DIR$/build/pro" relative="config/" />
|
||||
<root url="file://$MODULE_DIR$/src/main/webapp" relative="/" />
|
||||
</webroots>
|
||||
<sourceRoots>
|
||||
<root url="file://$MODULE_DIR$/src/main/java" />
|
||||
</sourceRoots>
|
||||
</configuration>
|
||||
</facet>
|
||||
</component>
|
||||
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
|
||||
<output url="file://$MODULE_DIR$/target/classes" />
|
||||
<output-test url="file://$MODULE_DIR$/target/test-classes" />
|
||||
<content url="file://$MODULE_DIR$">
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/target" />
|
||||
</content>
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: junit:junit:3.8.1" level="project" />
|
||||
<orderEntry type="module" module-name="data_cache" />
|
||||
<orderEntry type="module" module-name="taurus-core" />
|
||||
<orderEntry type="module" module-name="taurus-web" />
|
||||
<orderEntry type="library" name="Maven: redis.clients:jedis:2.9.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.commons:commons-pool2:2.4.2" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.zaxxer:HikariCP:3.3.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.25" level="project" />
|
||||
<orderEntry type="library" name="Maven: mysql:mysql-connector-java:8.0.16" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.google.protobuf:protobuf-java:3.6.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: jdom:jdom:1.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: log4j:log4j:1.2.17" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.quartz-scheduler:quartz:2.2.3" level="project" />
|
||||
<orderEntry type="library" name="Maven: c3p0:c3p0:0.9.1.1" level="project" />
|
||||
<orderEntry type="library" scope="PROVIDED" name="Maven: org.eclipse.jetty:jetty-webapp:8.2.0.v20160908" level="project" />
|
||||
<orderEntry type="library" scope="PROVIDED" name="Maven: org.eclipse.jetty:jetty-xml:8.2.0.v20160908" level="project" />
|
||||
<orderEntry type="library" scope="PROVIDED" name="Maven: org.eclipse.jetty:jetty-util:8.2.0.v20160908" level="project" />
|
||||
<orderEntry type="library" scope="PROVIDED" name="Maven: org.eclipse.jetty:jetty-servlet:8.2.0.v20160908" level="project" />
|
||||
<orderEntry type="library" scope="PROVIDED" name="Maven: org.eclipse.jetty:jetty-security:8.2.0.v20160908" level="project" />
|
||||
<orderEntry type="library" scope="PROVIDED" name="Maven: org.eclipse.jetty:jetty-server:8.2.0.v20160908" level="project" />
|
||||
<orderEntry type="library" scope="PROVIDED" name="Maven: org.eclipse.jetty.orbit:javax.servlet:3.0.0.v201112011016" level="project" />
|
||||
<orderEntry type="library" scope="PROVIDED" name="Maven: org.eclipse.jetty:jetty-continuation:8.2.0.v20160908" level="project" />
|
||||
<orderEntry type="library" scope="PROVIDED" name="Maven: org.eclipse.jetty:jetty-http:8.2.0.v20160908" level="project" />
|
||||
<orderEntry type="library" scope="PROVIDED" name="Maven: org.eclipse.jetty:jetty-io:8.2.0.v20160908" level="project" />
|
||||
</component>
|
||||
</module>
|
||||
|
|
@ -284,6 +284,7 @@ public class CleanTimeOutRoomJob implements Job{
|
|||
finally {
|
||||
lock.unlock();
|
||||
jedis0.close();
|
||||
jedis11.close();
|
||||
}
|
||||
}
|
||||
catch(Exception e) {
|
||||
|
|
|
|||
|
|
@ -1,64 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
|
||||
<component name="FacetManager">
|
||||
<facet type="web" name="Web">
|
||||
<configuration>
|
||||
<descriptors>
|
||||
<deploymentDescriptor name="web.xml" url="file://$MODULE_DIR$/src/main/webapp/WEB-INF/web.xml" />
|
||||
</descriptors>
|
||||
<webroots>
|
||||
<root url="file://$MODULE_DIR$/src/main/webapp" relative="/" />
|
||||
</webroots>
|
||||
<sourceRoots>
|
||||
<root url="file://$MODULE_DIR$/src/main/java" />
|
||||
</sourceRoots>
|
||||
</configuration>
|
||||
</facet>
|
||||
</component>
|
||||
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
|
||||
<output url="file://$MODULE_DIR$/target/classes" />
|
||||
<output-test url="file://$MODULE_DIR$/target/test-classes" />
|
||||
<content url="file://$MODULE_DIR$">
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/target" />
|
||||
</content>
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: junit:junit:3.8.1" level="project" />
|
||||
<orderEntry type="module" module-name="data_cache" />
|
||||
<orderEntry type="module" module-name="taurus-core" />
|
||||
<orderEntry type="module" module-name="taurus-web" />
|
||||
<orderEntry type="library" name="Maven: redis.clients:jedis:2.9.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.commons:commons-pool2:2.4.2" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.zaxxer:HikariCP:3.3.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.25" level="project" />
|
||||
<orderEntry type="library" name="Maven: mysql:mysql-connector-java:8.0.16" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.google.protobuf:protobuf-java:3.6.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: jdom:jdom:1.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: log4j:log4j:1.2.17" level="project" />
|
||||
<orderEntry type="library" scope="PROVIDED" name="Maven: org.eclipse.jetty:jetty-webapp:8.2.0.v20160908" level="project" />
|
||||
<orderEntry type="library" scope="PROVIDED" name="Maven: org.eclipse.jetty:jetty-xml:8.2.0.v20160908" level="project" />
|
||||
<orderEntry type="library" scope="PROVIDED" name="Maven: org.eclipse.jetty:jetty-util:8.2.0.v20160908" level="project" />
|
||||
<orderEntry type="library" scope="PROVIDED" name="Maven: org.eclipse.jetty:jetty-servlet:8.2.0.v20160908" level="project" />
|
||||
<orderEntry type="library" scope="PROVIDED" name="Maven: org.eclipse.jetty:jetty-security:8.2.0.v20160908" level="project" />
|
||||
<orderEntry type="library" scope="PROVIDED" name="Maven: org.eclipse.jetty:jetty-server:8.2.0.v20160908" level="project" />
|
||||
<orderEntry type="library" scope="PROVIDED" name="Maven: org.eclipse.jetty.orbit:javax.servlet:3.0.0.v201112011016" level="project" />
|
||||
<orderEntry type="library" scope="PROVIDED" name="Maven: org.eclipse.jetty:jetty-continuation:8.2.0.v20160908" level="project" />
|
||||
<orderEntry type="library" scope="PROVIDED" name="Maven: org.eclipse.jetty:jetty-http:8.2.0.v20160908" level="project" />
|
||||
<orderEntry type="library" scope="PROVIDED" name="Maven: org.eclipse.jetty:jetty-io:8.2.0.v20160908" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.aliyun.oss:aliyun-sdk-oss:3.8.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpclient:4.4.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpcore:4.4.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: commons-logging:commons-logging:1.2" level="project" />
|
||||
<orderEntry type="library" name="Maven: commons-codec:commons-codec:1.9" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.jdom:jdom:1.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.codehaus.jettison:jettison:1.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: stax:stax-api:1.0.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.aliyun:aliyun-java-sdk-core:3.4.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.aliyun:aliyun-java-sdk-ram:3.0.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.aliyun:aliyun-java-sdk-sts:3.0.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.aliyun:aliyun-java-sdk-ecs:4.2.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.alibaba:fastjson:1.2.62" level="project" />
|
||||
</component>
|
||||
</module>
|
||||
|
|
@ -5,62 +5,182 @@
|
|||
</component>
|
||||
<component name="ChangeListManager">
|
||||
<list default="true" id="0b5e96d5-7630-407a-8e4f-0ff0311ccd8b" name="Changes" comment="">
|
||||
<change afterPath="$PROJECT_DIR$/src/main/java/com/group/job/UpdateRobotRoomJob.java" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/src/main/java/com/group/service/HttpClient.java" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/src/main/java/com/group/service/ISocketLayer.java" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/src/main/java/com/group/service/Message.java" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/src/main/java/com/group/service/MessageResponse.java" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/src/main/java/com/group/service/NetManager.java" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/src/main/java/com/group/service/SocketCode.java" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/src/main/java/com/group/service/TaurusClient.java" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/src/main/java/com/group/service/ThreadManager.java" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/src/main/java/com/group/service/io/IOHandler.java" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/src/main/java/com/group/service/io/ISocket.java" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/src/main/java/com/group/service/io/LagMonitor.java" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/src/main/java/com/group/service/io/Packet.java" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/src/main/java/com/group/service/io/SocketEngine.java" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/src/main/java/com/group/service/io/SocketState.java" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/src/main/java/com/group/service/io/SocketTcp.java" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/src/main/java/com/group/service/io/SystemController.java" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/src/main/java/com/group/service/io/TSocketException.java" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/.idea/compiler.xml" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/.idea/encodings.xml" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/.idea/jarRepositories.xml" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/.idea/misc.xml" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/.idea/vcs.xml" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/.idea/workspace.xml" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/build/local/taurus-core.xml" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/build/pro/bank_hp.lua" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/build/pro/log4j.properties" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/build/pro/mgr.lua" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/build/pro/take_hp.lua" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/build/pro/taurus-core.xml" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/build/pro/trade.lua" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/build/test/bank_hp.lua" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/build/test/log4j.properties" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/build/test/mgr.lua" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/build/test/take_hp.lua" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/build/test/taurus-core.xml" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/build/test/trade.lua" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/pom.xml" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/src/main/java/com/group/MainServer.java" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/src/main/java/com/group/Protocol.java" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/src/main/java/com/group/WebInterceptor.java" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/src/main/java/com/group/controller/GroupController.java" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/src/main/java/com/group/controller/GroupLogController.java" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/src/main/java/com/group/controller/GroupRoomController.java" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/src/main/java/com/group/job/UpdatePlayRoomJob.java" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/src/main/java/com/group/job/UpdateRobotRoomJob.java" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/src/main/java/com/group/service/GroupLogService.java" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/src/main/java/com/group/service/GroupPublisherService.java" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/src/main/java/com/group/service/GroupRoomService.java" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/src/main/java/com/group/service/GroupService.java" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/src/main/java/com/group/service/HttpClient.java" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/src/main/java/com/group/service/ISocketLayer.java" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/src/main/java/com/group/service/Message.java" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/src/main/java/com/group/service/MessageResponse.java" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/src/main/java/com/group/service/NetManager.java" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/src/main/java/com/group/service/SocketCode.java" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/src/main/java/com/group/service/TaurusClient.java" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/src/main/java/com/group/service/ThreadManager.java" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/src/main/java/com/group/service/io/IOHandler.java" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/src/main/java/com/group/service/io/ISocket.java" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/src/main/java/com/group/service/io/LagMonitor.java" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/src/main/java/com/group/service/io/Packet.java" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/src/main/java/com/group/service/io/SocketEngine.java" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/src/main/java/com/group/service/io/SocketState.java" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/src/main/java/com/group/service/io/SocketTcp.java" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/src/main/java/com/group/service/io/SystemController.java" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/src/main/java/com/group/service/io/TSocketException.java" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/src/main/webapp/WEB-INF/web.xml" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/src/main/webapp/config/bank_hp.lua" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/src/main/webapp/config/log4j.properties" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/src/main/webapp/config/mgr.lua" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/src/main/webapp/config/take_hp.lua" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/src/main/webapp/config/taurus-core.xml" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/src/main/webapp/config/trade.lua" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/src/main/webapp/logs/web_main.log" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/src/main/webapp/logs/web_main.log.2026-02-02" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/src/main/webapp/logs/web_main.log.2026-02-04" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/src/test/java/etty-contexts.xml" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/src/test/java/web_group/DataClearUtils.java" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/src/test/java/web_group/Main.java" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/ROOT.war" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/ROOT/WEB-INF/classes/com/group/MainServer.class" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/ROOT/WEB-INF/classes/com/group/Protocol.class" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/ROOT/WEB-INF/classes/com/group/WebInterceptor.class" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/ROOT/WEB-INF/classes/com/group/controller/GroupController.class" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/ROOT/WEB-INF/classes/com/group/controller/GroupLogController.class" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/ROOT/WEB-INF/classes/com/group/controller/GroupRoomController.class" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/ROOT/WEB-INF/classes/com/group/job/UpdatePlayRoomJob.class" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/ROOT/WEB-INF/classes/com/group/job/UpdateRobotRoomJob.class" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/GroupLogService.class" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/GroupPublisherService.class" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/GroupRoomService.class" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/GroupService.class" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/HttpClient.class" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/ISocketLayer.class" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/Message.class" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/MessageResponse.class" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/NetManager.class" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/SocketCode.class" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/TaurusClient.class" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/ThreadManager.class" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/io/IOHandler.class" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/io/ISocket.class" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/io/LagMonitor.class" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/io/Packet.class" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/io/SocketEngine.class" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/io/SocketState.class" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/io/SocketTcp.class" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/io/SystemController.class" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/ROOT/WEB-INF/classes/com/group/service/io/TSocketException.class" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/ROOT/WEB-INF/lib/HikariCP-3.3.1.jar" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/ROOT/WEB-INF/lib/c3p0-0.9.1.1.jar" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/ROOT/WEB-INF/lib/commons-pool2-2.4.2.jar" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/ROOT/WEB-INF/lib/data_cache-1.0.1.jar" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/ROOT/WEB-INF/lib/jdom-1.0.jar" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/ROOT/WEB-INF/lib/jedis-2.9.0.jar" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/ROOT/WEB-INF/lib/log4j-1.2.17.jar" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/ROOT/WEB-INF/lib/mysql-connector-java-8.0.16.jar" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/ROOT/WEB-INF/lib/protobuf-java-3.6.1.jar" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/ROOT/WEB-INF/lib/quartz-2.2.3.jar" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/ROOT/WEB-INF/lib/slf4j-api-1.7.25.jar" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/ROOT/WEB-INF/lib/taurus-core-1.0.1.jar" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/ROOT/WEB-INF/lib/taurus-web-1.0.1.jar" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/ROOT/WEB-INF/web.xml" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/ROOT/config/bank_hp.lua" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/ROOT/config/log4j.properties" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/ROOT/config/mgr.lua" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/ROOT/config/take_hp.lua" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/ROOT/config/taurus-core.xml" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/ROOT/config/trade.lua" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/classes/com/group/MainServer.class" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/classes/com/group/Protocol.class" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/classes/com/group/WebInterceptor.class" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/classes/com/group/controller/GroupController.class" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/classes/com/group/controller/GroupLogController.class" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/classes/com/group/controller/GroupRoomController.class" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/classes/com/group/job/UpdatePlayRoomJob.class" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/classes/com/group/job/UpdateRobotRoomJob.class" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/classes/com/group/service/GroupLogService.class" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/classes/com/group/service/GroupPublisherService.class" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/classes/com/group/service/GroupRoomService.class" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/classes/com/group/service/GroupService.class" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/classes/com/group/service/HttpClient.class" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/classes/com/group/service/ISocketLayer.class" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/classes/com/group/service/Message.class" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/classes/com/group/service/MessageResponse.class" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/classes/com/group/service/NetManager.class" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/classes/com/group/service/SocketCode.class" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/classes/com/group/service/TaurusClient.class" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/classes/com/group/service/ThreadManager.class" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/classes/com/group/service/io/IOHandler.class" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/classes/com/group/service/io/ISocket.class" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/classes/com/group/service/io/LagMonitor.class" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/classes/com/group/service/io/Packet.class" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/classes/com/group/service/io/SocketEngine.class" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/classes/com/group/service/io/SocketState.class" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/classes/com/group/service/io/SocketTcp.class" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/classes/com/group/service/io/SystemController.class" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/classes/com/group/service/io/TSocketException.class" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/maven-archiver/pom.properties" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/test-classes/web_group/DataClearUtils.class" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/../web_group_robot/target/test-classes/web_group/Main.class" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/../../.idea/compiler.xml" beforeDir="false" afterPath="$PROJECT_DIR$/../../.idea/compiler.xml" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/../../.idea/encodings.xml" beforeDir="false" afterPath="$PROJECT_DIR$/../../.idea/encodings.xml" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/../../.idea/misc.xml" beforeDir="false" afterPath="$PROJECT_DIR$/../../.idea/misc.xml" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/../event_mgr/event_mgr.iml" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/../pack_tools/pack_tools.iml" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/main/java/com/group/MainServer.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/group/MainServer.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/main/java/com/group/job/UpdatePlayRoomJob.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/group/job/UpdatePlayRoomJob.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/main/java/com/group/job/UpdateRobotRoomJob.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/group/job/UpdateRobotRoomJob.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/main/java/com/group/service/GroupRoomService.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/group/service/GroupRoomService.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/main/webapp/config/taurus-core.xml" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/webapp/config/taurus-core.xml" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/main/webapp/logs/web_main.log" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/webapp/logs/web_main.log" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/target/ROOT.war" beforeDir="false" afterPath="$PROJECT_DIR$/target/ROOT.war" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/target/ROOT/WEB-INF/classes/com/group/MainServer$1.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/ROOT/WEB-INF/classes/com/group/MainServer$1.class" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/target/ROOT/WEB-INF/classes/com/group/MainServer.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/ROOT/WEB-INF/classes/com/group/MainServer.class" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/target/ROOT/WEB-INF/classes/com/group/job/UpdatePlayRoomJob.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/ROOT/WEB-INF/classes/com/group/job/UpdatePlayRoomJob.class" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/target/ROOT/WEB-INF/classes/com/group/job/UpdateRobotRoomJob.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/ROOT/WEB-INF/classes/com/group/job/UpdateRobotRoomJob.class" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/target/ROOT/WEB-INF/classes/com/group/service/GroupRoomService.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/ROOT/WEB-INF/classes/com/group/service/GroupRoomService.class" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/target/ROOT/WEB-INF/classes/com/group/service/GroupService.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/ROOT/WEB-INF/classes/com/group/service/GroupService.class" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/target/ROOT/WEB-INF/lib/data_cache-1.0.1.jar" beforeDir="false" afterPath="$PROJECT_DIR$/target/ROOT/WEB-INF/lib/data_cache-1.0.1.jar" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/target/ROOT/WEB-INF/lib/taurus-core-1.0.1.jar" beforeDir="false" afterPath="$PROJECT_DIR$/target/ROOT/WEB-INF/lib/taurus-core-1.0.1.jar" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/target/ROOT/WEB-INF/lib/taurus-web-1.0.1.jar" beforeDir="false" afterPath="$PROJECT_DIR$/target/ROOT/WEB-INF/lib/taurus-web-1.0.1.jar" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/target/classes/com/group/MainServer$1.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/group/MainServer$1.class" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/target/classes/com/group/MainServer.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/group/MainServer.class" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/target/classes/com/group/job/UpdatePlayRoomJob.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/group/job/UpdatePlayRoomJob.class" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/target/classes/com/group/job/UpdateRobotRoomJob.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/group/job/UpdateRobotRoomJob.class" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/target/classes/com/group/service/GroupRoomService.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/group/service/GroupRoomService.class" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst" beforeDir="false" afterPath="$PROJECT_DIR$/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst" beforeDir="false" afterPath="$PROJECT_DIR$/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/../../libs/data_cache/target/classes/com/data/bean/AccountBean.class" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/../../libs/data_cache/target/classes/com/data/bean/BaseBean.class" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/../../libs/data_cache/target/classes/com/data/bean/GameBean.class" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/../../libs/data_cache/target/classes/com/data/bean/GroupBean.class" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/../../libs/data_cache/target/classes/com/data/bean/GroupMemberBean.class" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/../../libs/data_cache/target/classes/com/data/bean/GroupPlayBean.class" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/../../libs/data_cache/target/classes/com/data/cache/AccountCache.class" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/../../libs/data_cache/target/classes/com/data/cache/BaseCache.class" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/../../libs/data_cache/target/classes/com/data/cache/GameCache.class" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/../../libs/data_cache/target/classes/com/data/cache/GroupCache.class" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/../../libs/data_cache/target/classes/com/data/cache/GroupMemberCache.class" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/../../libs/data_cache/target/classes/com/data/cache/GroupPlayCache.class" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/../../libs/data_cache/target/classes/com/data/util/ConsumeCode.class" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/../../libs/data_cache/target/classes/com/data/util/CountUtil.class" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/../../libs/data_cache/target/classes/com/data/util/ErrorCode.class" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/../../libs/data_cache/target/classes/com/data/util/EventType.class" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/../../libs/data_cache/target/classes/com/data/util/Utility.class" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/../../libs/data_cache/target/data_cache.jar" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/../../libs/data_cache/target/maven-archiver/pom.properties" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/../../libs/data_cache/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/../../libs/data_cache/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/target/classes/com/group/service/GroupService.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/group/service/GroupService.class" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/../../libs/game_common/src/main/java/com/game/data/Player.java" beforeDir="false" afterPath="$PROJECT_DIR$/../../libs/game_common/src/main/java/com/game/data/Player.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/../../puke/paodekuai/game_pk_paodekuai/game_pk_paodekuai.iml" beforeDir="false" />
|
||||
</list>
|
||||
<option name="SHOW_DIALOG" value="false" />
|
||||
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
||||
|
|
@ -86,7 +206,7 @@
|
|||
"RunOnceActivity.ShowReadmeOnStart": "true",
|
||||
"git-widget-placeholder": "master",
|
||||
"kotlin-language-version-configured": "true",
|
||||
"last_opened_file_path": "D:/fengyeserver/xtserver_anchou/game_web/web_group/src/main/java/com/group/service",
|
||||
"last_opened_file_path": "D:/fengyeserver/xtserver_anchou",
|
||||
"node.js.detected.package.eslint": "true",
|
||||
"node.js.detected.package.tslint": "true",
|
||||
"node.js.selected.package.eslint": "(autodetect)",
|
||||
|
|
@ -142,7 +262,11 @@
|
|||
<updated>1770034638903</updated>
|
||||
<workItem from="1770034639979" duration="1384000" />
|
||||
<workItem from="1770184768302" duration="11751000" />
|
||||
<workItem from="1770207182971" duration="2004000" />
|
||||
<workItem from="1770207182971" duration="24200000" />
|
||||
<workItem from="1770246092084" duration="3540000" />
|
||||
<workItem from="1770292300535" duration="7319000" />
|
||||
<workItem from="1770368267167" duration="3929000" />
|
||||
<workItem from="1770402104493" duration="672000" />
|
||||
</task>
|
||||
<servers />
|
||||
</component>
|
||||
|
|
|
|||
|
|
@ -107,10 +107,6 @@ public class MainServer extends Extension {
|
|||
trigger= newTrigger().withIdentity("create_play_room_trigger", "group").withSchedule(cronSchedule("0/3 * * * * ? ")).build();
|
||||
sched.scheduleJob(job, trigger);
|
||||
|
||||
JobDetail robot = newJob(UpdateRobotRoomJob.class).withIdentity("update_robot_room", "group").build();
|
||||
CronTrigger robottg= newTrigger().withIdentity("update_robot_room_trigger", "group").withSchedule(cronSchedule("0/5 * * * * ? ")).build();
|
||||
sched.scheduleJob(robot, robottg);
|
||||
|
||||
sched.start();
|
||||
}
|
||||
catch(Exception e) {
|
||||
|
|
|
|||
|
|
@ -354,7 +354,7 @@ public class UpdatePlayRoomJob implements Job{
|
|||
Redis.use().hset(room, "status", 3 + "");
|
||||
Redis.use().hincrBy(room, "cache_ver", 1);
|
||||
Redis.use().expire(room, 20);
|
||||
logger.error("del robot room:" + roomId + " player:"+room_list.get(5) + " fake_json:" + fake_json);
|
||||
// logger.error("del robot room:" + roomId + " player:"+room_list.get(5) + " fake_json:" + fake_json);
|
||||
continue;
|
||||
}
|
||||
updateRound(room, groupId, roomId, round);
|
||||
|
|
@ -859,6 +859,8 @@ public class UpdatePlayRoomJob implements Job{
|
|||
userData.putUtfString("password", Utils.getMD5Hash(password));
|
||||
long reg_time = System.currentTimeMillis() / 1000;
|
||||
userData.putLong("reg_time", reg_time);
|
||||
userData.putInt("jiqiren",0);
|
||||
userData.putInt("start",0);
|
||||
logger.info("create robot account:"+userData.toJson()+" password:" + password);
|
||||
int result = DataBase.use().insert("account", userData);
|
||||
if (result == -1) {
|
||||
|
|
|
|||
|
|
@ -25,6 +25,8 @@ import java.net.URL;
|
|||
import java.util.*;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
|
||||
import static com.group.service.GroupRoomService._getSvr;
|
||||
|
||||
public class UpdateRobotRoomJob implements Job{
|
||||
|
||||
private Logger logger = Logger.getLogger(UpdateRobotRoomJob.class);
|
||||
|
|
@ -344,7 +346,7 @@ public class UpdateRobotRoomJob implements Job{
|
|||
Redis.use().hset(room, "status", 3 + "");
|
||||
Redis.use().hincrBy(room, "cache_ver", 1);
|
||||
Redis.use().expire(room, 20);
|
||||
logger.error("del robot room:" + roomId + " player:"+room_list.get(5) + " fake_json:" + fake_json);
|
||||
//logger.error("del robot room:" + roomId + " player:"+room_list.get(5) + " fake_json:" + fake_json);
|
||||
continue;
|
||||
}
|
||||
updateRound(room, groupId, roomId, round);
|
||||
|
|
@ -444,33 +446,268 @@ public class UpdateRobotRoomJob implements Job{
|
|||
|
||||
JobKey jobKey = context.getJobDetail().getKey();
|
||||
if(jobKey.getName().equals("update_robot_room") ) {
|
||||
|
||||
updateRobotRoom();
|
||||
}else if(jobKey.getName().equals("create_robot_room") ) {
|
||||
createRobotRoom();
|
||||
}
|
||||
}
|
||||
|
||||
public void createRobotRoom() {
|
||||
//1、获取对应的机器人id
|
||||
public void updateRobotRoom(){
|
||||
|
||||
Jedis js2 = Redis.use("group1_db2").getJedis();
|
||||
Jedis js0 = Redis.use("group1_db0").getJedis();
|
||||
Jedis js11 = Redis.use("group1_db11").getJedis();
|
||||
try{
|
||||
int robotid = 0;
|
||||
Map<String,String> jsRobot = js2.hgetAll("gallrobot");
|
||||
for (String key : jsRobot.keySet()) {
|
||||
if(Integer.parseInt(jsRobot.get(key))==0){
|
||||
robotid = Integer.parseInt(key);
|
||||
int groupId = 426149;
|
||||
String gp_key = GroupCache.genPidsKey(groupId);
|
||||
Set<String> pids = Redis.use("group1_db11").zrangeByScore(gp_key, 11, 11);
|
||||
|
||||
if (pids.size() == 0) {
|
||||
return;
|
||||
}
|
||||
GroupBean gb = GroupCache.getGroup(groupId);
|
||||
if (gb == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
for (String str : pids) {
|
||||
int pid = Integer.parseInt(str);
|
||||
GroupPlayBean gpb = GroupCache.getPlay(groupId, pid);
|
||||
|
||||
|
||||
//获取所有房间
|
||||
|
||||
//Set<String> rooms = js11.zrevrangeByScore("g{426149}:rooms", min_value, max_value);
|
||||
String allrobotkeys = "{robot426149}";
|
||||
int min_value = pid * 10000;
|
||||
int max_value = pid * 10000 + 9999;
|
||||
String grooms_key = GroupCache.genRoomsKey(groupId);
|
||||
Set<String> rooms = js11.zrevrangeByScore(grooms_key, max_value, min_value);
|
||||
long sttime = System.currentTimeMillis() / 1000;
|
||||
for (String room : rooms) {
|
||||
List<String> room_list = js0.hmget(room, "robot", "status", "create_time", "id", "players","game");
|
||||
String robot = room_list.get(0);
|
||||
if (robot == null) {
|
||||
continue;
|
||||
}
|
||||
ITArray players = TArray.newFromJsonData(room_list.get(4));
|
||||
if (players.size() == 2) {
|
||||
continue;
|
||||
}
|
||||
|
||||
String roomtime = room_list.get(2);
|
||||
if (roomtime == null) {
|
||||
continue;
|
||||
}
|
||||
String gameid = room_list.get(5);
|
||||
if(gameid == null) {
|
||||
continue;
|
||||
}
|
||||
|
||||
String roomId = room_list.get(3);
|
||||
int time = Integer.parseInt(roomtime);
|
||||
if (time+20 < sttime) {
|
||||
js2.hset(allrobotkeys+gameid,players.get(0)+"",0+"");
|
||||
//解散房间
|
||||
GroupPublisherService.delRoomEvt(groupId, roomId);
|
||||
js11.zrem(grooms_key, room);
|
||||
Redis.use().hset(room, "status", 3 + "");
|
||||
Redis.use().hincrBy(room, "cache_ver", 1);
|
||||
Redis.use().expire(room, 20);
|
||||
// logger.error("del 空 robot room:" + roomId + " player:"+room_list.get(4) + " fake_json:");
|
||||
continue;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
}finally {
|
||||
js0.close();
|
||||
js2.close();
|
||||
js11.close();
|
||||
}
|
||||
}
|
||||
|
||||
public void createRobotRoom() {
|
||||
//1、获取对应的机器人id
|
||||
Jedis js2 = Redis.use("group1_db2").getJedis();
|
||||
Jedis js11 = Redis.use("group1_db11").getJedis();
|
||||
try{
|
||||
int robotid = 0;
|
||||
String allrobotkeys = "{robot426149}";
|
||||
int groupid = 426149;
|
||||
//获取玩法列表
|
||||
Set<String> pids = js11.keys("g{426149}:play:*");
|
||||
List<Integer> okpids = new ArrayList<>();
|
||||
for (String pid : pids) {
|
||||
String gameId = js11.hget(pid,"gameId");
|
||||
if(Integer.parseInt(gameId) == 10){
|
||||
String rpid = js11.hget(pid,"id");
|
||||
okpids.add(Integer.parseInt(rpid));
|
||||
}
|
||||
if(Integer.parseInt(gameId) == 22){
|
||||
String rpid = js11.hget(pid,"id");
|
||||
okpids.add(Integer.parseInt(rpid));
|
||||
}
|
||||
|
||||
}
|
||||
//随机生产
|
||||
int pidindex = 0;
|
||||
int pidindex2 = 0;
|
||||
int pidindex3 = 0;
|
||||
pidindex = new Random().nextInt(okpids.size()-1);
|
||||
pidindex2 = new Random().nextInt(okpids.size()-1);
|
||||
pidindex3 = new Random().nextInt(okpids.size()-1);
|
||||
|
||||
List<Integer> plist = new ArrayList<>();
|
||||
plist.add(okpids.get(pidindex));
|
||||
plist.add(okpids.get(pidindex2));
|
||||
//plist.add(okpids.get(pidindex3));
|
||||
|
||||
for(Integer pid : plist) {
|
||||
Map<String,String> jsRobot= js2.hgetAll(allrobotkeys);
|
||||
|
||||
for (String key : jsRobot.keySet()) {
|
||||
int tr = new Random().nextInt(60);
|
||||
if(tr<20) {
|
||||
String value = jsRobot.get(key);
|
||||
//判断id是否工作
|
||||
if (Integer.parseInt(value) == 0) {
|
||||
//可以工作
|
||||
robotid = Integer.parseInt(key);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (robotid > 0){
|
||||
createGroupRoom(groupid,pid,robotid);
|
||||
js2.hset(allrobotkeys,robotid+"",1+"");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}finally {
|
||||
js2.close();
|
||||
js11.close();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
private String createGroupRoom(int groupId, int pid,int robotid) throws Exception {
|
||||
Jedis jedis0 = Redis.use("group1_db0").getJedis();
|
||||
try {
|
||||
|
||||
GroupPlayBean gpb = GroupCache.getPlay(groupId, pid);
|
||||
if (gpb==null) {
|
||||
throw new WebException(ErrorCode.GROUP_PLAY_EXIST);
|
||||
}
|
||||
|
||||
int gameId = gpb.gameId;
|
||||
GameBean gb = GameCache.getGame(gameId);
|
||||
|
||||
String grooms_key = GroupCache.genRoomsKey(groupId);
|
||||
GroupBean group = GroupCache.getGroup(groupId);
|
||||
ITObject configData = TObject.newFromJsonData(gpb.config);
|
||||
int maxPlayers = gpb.maxPlayers;
|
||||
|
||||
int opt = configData.getInt("opt");
|
||||
String owner_session = AccountCache.genKey(group.owner);
|
||||
|
||||
int dissolve_opt = group.dissolve_opt;
|
||||
int kick_opt = group.kick_opt;
|
||||
|
||||
String newRoomId = Redis.use("group1_db1").rpop("free_room");
|
||||
Redis.use("group1_db1").lpush("free_room", newRoomId);
|
||||
String room_key = "room:" + newRoomId;
|
||||
|
||||
|
||||
|
||||
|
||||
String svr = _getSvr(jedis0,gb);
|
||||
if (svr == null) {
|
||||
throw new WebException(ErrorCode.NO_SERVICE);
|
||||
}
|
||||
|
||||
Integer pay = gb.pay.get("pay"+opt+"_"+maxPlayers);
|
||||
|
||||
|
||||
long time = System.currentTimeMillis() / 1000;
|
||||
Map<String, String> roomMap = new HashMap<String, String>();
|
||||
/**
|
||||
* 玩家列表Seat映射
|
||||
*/
|
||||
roomMap.put("robot", "1");
|
||||
int robot_existTime = (int)((Math.random() + 0.5) * 40);
|
||||
roomMap.put("robot_existTime", robot_existTime + "");
|
||||
|
||||
roomMap.put("id", newRoomId);
|
||||
roomMap.put("owner", owner_session);
|
||||
roomMap.put("svr", svr);
|
||||
roomMap.put("AA", "0");
|
||||
roomMap.put("pay", pay+"");
|
||||
roomMap.put("agent", "1");
|
||||
roomMap.put("group", groupId+"");
|
||||
roomMap.put("gpid", pid+"");
|
||||
roomMap.put("payer", group.owner+"");
|
||||
roomMap.put("maxPlayers", maxPlayers + "");
|
||||
roomMap.put("times", gb.opt.get(opt)+"");
|
||||
roomMap.put("opt", opt + "");
|
||||
roomMap.put("status", "0");
|
||||
roomMap.put("hpOnOff", gpb.hpOnOff+"");
|
||||
roomMap.put("rewardType", gpb.rewardType+"");
|
||||
roomMap.put("rewardValueType", gpb.rewardValueType+"");
|
||||
roomMap.put("xipai_rewardType", gpb.xipai_rewardType+"");
|
||||
roomMap.put("xipai_rewardValueType", gpb.xipai_rewardValueType+"");
|
||||
roomMap.put("dismiss_time", DISMISS_TIME[dissolve_opt-1]);
|
||||
roomMap.put("kick_time", KICK_TIME[kick_opt-1]);
|
||||
roomMap.put("hp_times",gpb.hp_times+"");
|
||||
if(gpb.hpOnOff == 1) {
|
||||
ITObject hpObj = TObject.newFromJsonData(gpb.hpConfig);
|
||||
if (hpObj.getInt("limitInRoom") != null) {
|
||||
roomMap.put("limitInRoom", hpObj.getInt("limitInRoom") + "");
|
||||
}
|
||||
configData.putTObject("hpData", hpObj);
|
||||
}
|
||||
|
||||
configData.del("opt");
|
||||
configData.del("AA");
|
||||
roomMap.put("options", configData.toJson());
|
||||
roomMap.put("game", gameId + "");
|
||||
roomMap.put("open", "1");
|
||||
roomMap.put("round", "0");
|
||||
roomMap.put("create_time", time + "");
|
||||
roomMap.put("cache_ver", "1");
|
||||
|
||||
|
||||
|
||||
|
||||
List<Integer> seat_list = new ArrayList<>();
|
||||
List<Integer> player_list = new ArrayList<>();
|
||||
|
||||
seat_list.add(1);
|
||||
player_list.add(robotid);
|
||||
|
||||
roomMap.put("players", toTArray(player_list).toJson());
|
||||
roomMap.put("seats", toTArray(seat_list).toJson());
|
||||
|
||||
|
||||
jedis0.hmset(room_key, roomMap);
|
||||
|
||||
/**
|
||||
* pid open status 剩余空位
|
||||
* 11 1 1 00
|
||||
*/
|
||||
Redis.use("group1_db11").zadd(grooms_key, pid*10000+1102, room_key);
|
||||
GroupPublisherService.addRoomEvt(groupId, newRoomId);
|
||||
//updateRedisMap(groupId, newRoomId, room_key, roomMap, maxPlayers);
|
||||
return room_key;
|
||||
} finally {
|
||||
jedis0.close();
|
||||
}
|
||||
}
|
||||
|
||||
public int getRobot(int maxPlayers)
|
||||
{
|
||||
|
|
@ -737,7 +974,7 @@ public class UpdateRobotRoomJob implements Job{
|
|||
InputStream in = url.openStream();
|
||||
String jsonStr = inputStreamToString(in);
|
||||
String md5 = MD5.getInstance().getHash(jsonStr);
|
||||
logger.info("robot:" + id + " head:" + head + " md5:" + md5);
|
||||
// logger.info("robot:" + id + " head:" + head + " md5:" + md5);
|
||||
if (md5.equals("787d66f3fdfa8df70795629c62a3a850") || md5.equals("f1fce77813a0fc9660c76d523813bb59") || md5.equals("d629ac346299c2640dfb6e8fd4232646") || md5.equals("1e76068afc60d7dcff851936b3c2b24b") )
|
||||
{
|
||||
head = null;
|
||||
|
|
|
|||
|
|
@ -24,6 +24,7 @@ import com.taurus.core.util.StringUtil;
|
|||
import com.taurus.web.WebException;
|
||||
|
||||
import jdk.nashorn.internal.objects.Global;
|
||||
import org.slf4j.helpers.Util;
|
||||
import redis.clients.jedis.Jedis;
|
||||
|
||||
import static java.lang.Thread.sleep;
|
||||
|
|
@ -36,7 +37,7 @@ public class GroupRoomService {
|
|||
/**踢出时间*/
|
||||
private static final String[] KICK_TIME = {"30","60","120","180"};
|
||||
|
||||
private static final String _getSvr(Jedis jedis0,GameBean gb){
|
||||
public static final String _getSvr(Jedis jedis0,GameBean gb){
|
||||
String svr=null;
|
||||
Set<String> gamesvrs = gb.svr_list;
|
||||
Integer conns = null;
|
||||
|
|
@ -450,6 +451,7 @@ public class GroupRoomService {
|
|||
resData.putString("server_port", server_ip.get(1));
|
||||
resData.putInt("groupId", groupId);
|
||||
resData.putInt("pid", gpid);
|
||||
resData.putInt("gameId", gameId);
|
||||
resData.putInt("hpOnOff", hpOnOff);
|
||||
resData.putBoolean("ban_chat1", group_bean.ban_chat1);
|
||||
resData.putBoolean("ban_chat2", group_bean.ban_chat2);
|
||||
|
|
@ -575,7 +577,27 @@ public class GroupRoomService {
|
|||
|
||||
try {
|
||||
ITObject resData = publicJoinRoom(groupId,session, room_key,platform);
|
||||
sendRobotData(resData.getString("room_id"),groupId);
|
||||
|
||||
|
||||
int gameId1 = resData.getInt("gameId");
|
||||
int pid = resData.getInt("pid");
|
||||
String robot_host = null;
|
||||
if(gameId1!=0) {
|
||||
if (gameId1 == 10) {
|
||||
robot_host = "127.0.0.1:8701";
|
||||
}
|
||||
if (gameId1 == 22) {
|
||||
robot_host = "127.0.0.1:8722";
|
||||
}
|
||||
/*if (gameId1 == 66&&(pid==52||pid==26)) {
|
||||
robot_host = "127.0.0.1:8766";
|
||||
}*/
|
||||
}
|
||||
if(StringUtil.isNotEmpty(robot_host)) {
|
||||
sendRoboJointData(resData.getString("room_id"),groupId,robot_host,gameId1);
|
||||
}
|
||||
|
||||
|
||||
Jedis jedis11 = Redis.use("group1_db11").getJedis();
|
||||
jedis11.zremrangeByScore(grooms_key, 0, 0);
|
||||
jedis11.close();
|
||||
|
|
@ -594,13 +616,98 @@ public class GroupRoomService {
|
|||
* //发起机器人请求
|
||||
* @return
|
||||
*/
|
||||
public static ITObject sendRobotData(String roomid,int groupid){
|
||||
|
||||
|
||||
public static ITObject sendRoboJointData(String roomid,int groupid, String robot_host,int gameId){
|
||||
System.out.println("sendRoboJointData");
|
||||
Jedis js0 = Redis.use("group1_db0").getJedis();
|
||||
Jedis js2 = Redis.use("group1_db2").getJedis();
|
||||
String robot = js0.hget("room:"+roomid,"robot");
|
||||
System.out.println(robot);
|
||||
String plays = js0.hget("room:"+roomid,"players");
|
||||
System.out.println(plays);
|
||||
if (StringUtil.isEmpty(plays)) {
|
||||
return null;
|
||||
}
|
||||
System.out.println(plays);
|
||||
ITArray players = TArray.newFromJsonData(plays);
|
||||
if (players.size()!=1){
|
||||
return null;
|
||||
}
|
||||
int robotid = players.getInt(0);
|
||||
CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> {
|
||||
System.out.println("sendRobotData");
|
||||
// 执行任务
|
||||
try {
|
||||
Thread eventThread = new Thread(() -> {
|
||||
while (true) {
|
||||
NetManager.processEvents();
|
||||
try {
|
||||
Thread.sleep(100);
|
||||
} catch (InterruptedException e) {
|
||||
break;
|
||||
} catch (Exception e) {
|
||||
}
|
||||
}
|
||||
}, "tstse"+robotid);
|
||||
|
||||
eventThread.setDaemon(true); // 设置为守护线程
|
||||
eventThread.start();
|
||||
//
|
||||
String wokelock = "wokelock";
|
||||
if(robotid!=0){
|
||||
js2.set(wokelock+robotid, String.valueOf(1));
|
||||
js2.expire(wokelock+robotid, 900);
|
||||
TaurusClient client = new TaurusClient(robot_host, "games"+robotid, TaurusClient.ConnectionProtocol.Tcp);
|
||||
client.setSession("abbccccd");
|
||||
client.connect();
|
||||
sleep(1000);
|
||||
ITObject params = TObject.newInstance();
|
||||
params.putString("roomid",roomid);
|
||||
params.putInt("groupid",groupid);
|
||||
params.putInt("robotid",robotid);
|
||||
Message msg= client.send("225", params, response -> {
|
||||
System.out.println("abcd");
|
||||
});
|
||||
sleep(5000);
|
||||
eventThread.setDaemon(false);
|
||||
client.killConnection();
|
||||
|
||||
}
|
||||
eventThread.yield();
|
||||
log.info("sendRoboJointData :"+roomid+"robotid:"+robotid);
|
||||
}catch (Exception e){
|
||||
|
||||
}finally {
|
||||
js0.close();
|
||||
js2.close();
|
||||
}
|
||||
return "执行结果";
|
||||
});
|
||||
|
||||
|
||||
|
||||
//client.killConnection();
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* //发起机器人请求
|
||||
* @return
|
||||
*/
|
||||
public static ITObject sendRobotData(String roomid,int groupid,String robot_host,int gameId){
|
||||
|
||||
Jedis js1 = Redis.use("group1_db2").getJedis();
|
||||
|
||||
String flag = js1.get("roomsend"+roomid);
|
||||
if(flag!=null){
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> {
|
||||
// 执行任务
|
||||
//Jedis js1 = Redis.use("group1_db2").getJedis();
|
||||
js1.set("roomsend"+roomid,1+"");
|
||||
js1.expire("roomsend"+roomid,5);
|
||||
try {
|
||||
Thread eventThread = new Thread(() -> {
|
||||
while (true) {
|
||||
|
|
@ -618,41 +725,49 @@ public class GroupRoomService {
|
|||
eventThread.start();
|
||||
int robotid = 0;
|
||||
//
|
||||
Map<String,String> jsRobot = js1.hgetAll("gallrobot");
|
||||
Map<String,String> jsRobot = js1.hgetAll("{robot426149}"+gameId);
|
||||
String wokelock = "wokelock";
|
||||
for (String key : jsRobot.keySet()) {
|
||||
if(Integer.parseInt(jsRobot.get(key))==0){
|
||||
String tmp = js1.get(wokelock+key);
|
||||
if(StringUtil.isEmpty(tmp)){
|
||||
robotid = Integer.parseInt(key);
|
||||
}
|
||||
}
|
||||
|
||||
if(robotid!=0){
|
||||
TaurusClient client = new TaurusClient("192.168.0.32:8701", "games", TaurusClient.ConnectionProtocol.Tcp);
|
||||
js1.set(wokelock+robotid, String.valueOf(1));
|
||||
js1.expire(wokelock+robotid,900);
|
||||
TaurusClient client = new TaurusClient(robot_host, "games"+robotid, TaurusClient.ConnectionProtocol.Tcp);
|
||||
client.setSession("abbccccd");
|
||||
client.connect();
|
||||
sleep(2000);
|
||||
sleep(1000);
|
||||
ITObject params = TObject.newInstance();
|
||||
params.putString("roomid",roomid);
|
||||
params.putInt("groupid",groupid);
|
||||
params.putInt("robotid",robotid);
|
||||
System.out.println("ssss");
|
||||
System.out.println(client.isConnected());
|
||||
log.info("=====================sendRobotData发送前 :"+roomid+"robotid:"+robotid);
|
||||
Message msg= client.send("225", params, response -> {
|
||||
System.out.println("abcd");
|
||||
|
||||
});
|
||||
log.info("=====================sendRobotData发送了 :"+roomid+"robotid:"+robotid);
|
||||
sleep(10000);
|
||||
eventThread.stop();
|
||||
js1.hset("g{330800}:robot",robotid+"", String.valueOf(1));
|
||||
eventThread.setDaemon(false);
|
||||
client.killConnection();
|
||||
}
|
||||
eventThread.yield();
|
||||
log.info("sendRobotData :"+roomid+"robotid:"+robotid);
|
||||
}catch (Exception e){
|
||||
|
||||
}finally {
|
||||
|
||||
js1.close();
|
||||
|
||||
}
|
||||
return "执行结果";
|
||||
});
|
||||
|
||||
|
||||
|
||||
//client.killConnection();
|
||||
return null;
|
||||
}
|
||||
|
|
@ -673,6 +788,7 @@ public class GroupRoomService {
|
|||
String grooms_key = GroupCache.genRoomsKey(groupId);
|
||||
ITObject resData = null;
|
||||
Set<String> rooms = null;
|
||||
Jedis jedis0 = Redis.use("group1_db0").getJedis();
|
||||
Jedis jedis = Redis.use("group1_db11").getJedis();
|
||||
try {
|
||||
rooms = jedis.zrevrangeByScore(grooms_key, max_value, min_value);
|
||||
|
|
@ -1097,12 +1213,58 @@ public class GroupRoomService {
|
|||
String key = createGroupRoom(session, groupId, pid);
|
||||
resData = publicJoinRoom(groupId,session, key,platform);
|
||||
}
|
||||
sendRobotData(resData.getString("room_id"),groupId);
|
||||
|
||||
|
||||
|
||||
|
||||
Jedis jedis11 = Redis.use("group1_db11").getJedis();
|
||||
try {
|
||||
jedis11.zremrangeByScore(grooms_key, 0, 0);
|
||||
String gameId1 = jedis11.hget("g{426149}:play:"+pid,"gameId");
|
||||
String robot_host = null;
|
||||
if(StringUtil.isNotEmpty(gameId1)) {
|
||||
if (Integer.parseInt(gameId1) == 10) {
|
||||
robot_host = "127.0.0.1:8701";
|
||||
}
|
||||
if (Integer.parseInt(gameId1) == 22) {
|
||||
robot_host = "127.0.0.1:8722";
|
||||
}
|
||||
if (Integer.parseInt(gameId1) == 66) {
|
||||
robot_host = "127.0.0.1:8766";
|
||||
}
|
||||
|
||||
|
||||
if (StringUtil.isNotEmpty(gameId1)) {
|
||||
String roomid = resData.getString("room_id");
|
||||
String playersStr = jedis0.hget("room:" + roomid, "players");
|
||||
//String players = playersStr.substring(1, playersStr.length() - 1);
|
||||
//判断是否有开机器人
|
||||
if (StringUtil.isNotEmpty(playersStr)) {
|
||||
ITArray players = TArray.newFromJsonData(playersStr);
|
||||
System.out.println("players:" + playersStr);
|
||||
if (players.size() == 2) {
|
||||
System.out.println("******************房间是2个人空的:" + roomid);
|
||||
sendRoboJointData(roomid, groupId,robot_host,Integer.parseInt(gameId1));
|
||||
} else if (players.size() == 1) {
|
||||
System.out.println("******************房间是有人的:" + roomid);
|
||||
if (Integer.parseInt(players.get(0).toString()) != acc.id) {
|
||||
sendRoboJointData(roomid, groupId,robot_host,Integer.parseInt(gameId1));
|
||||
} else {
|
||||
sendRobotData(roomid, groupId,robot_host,Integer.parseInt(gameId1));
|
||||
}
|
||||
} else {
|
||||
System.out.println("******************房间没有人的:" + roomid);
|
||||
sendRobotData(roomid, groupId,robot_host,Integer.parseInt(gameId1));
|
||||
}
|
||||
} else {
|
||||
sendRobotData(roomid, groupId,robot_host,Integer.parseInt(gameId1));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}finally {
|
||||
jedis0.close();
|
||||
jedis11.close();
|
||||
}
|
||||
return resData;
|
||||
|
|
|
|||
|
|
@ -43,7 +43,7 @@
|
|||
<db>
|
||||
<name>db1</name>
|
||||
<driverName>com.mysql.cj.jdbc.Driver</driverName>
|
||||
<jdbcUrl>jdbc:mysql://8.138.242.190:8060/wb_game</jdbcUrl>
|
||||
<jdbcUrl>jdbc:mysql://47.109.55.7:8060/wb_game</jdbcUrl>
|
||||
<userName>root</userName>
|
||||
<password>6KYnXJjGhxNceF8e</password>
|
||||
</db>
|
||||
|
|
@ -86,15 +86,15 @@
|
|||
</poolConfig>
|
||||
|
||||
<infos>
|
||||
<info name="group1_db0" host="8.138.242.190" password="cssq@2020" port="6379" database="0" timeout="5000"/>
|
||||
<info name="group1_db1" host="8.138.242.190" password="cssq@2020" port="6379" database="1" timeout="5000"/>
|
||||
<info name="group1_db2" host="8.138.242.190" password="cssq@2020" port="6379" database="2" timeout="5000"/>
|
||||
<info name="group1_db5" host="8.138.242.190" password="cssq@2020" port="6379" database="5" timeout="5000"/>
|
||||
<info name="group1_db8" host="8.138.242.190" password="cssq@2020" port="6379" database="8" timeout="5000"/>
|
||||
<info name="group1_db9" host="8.138.242.190" password="cssq@2020" port="6379" database="9" timeout="5000"/>
|
||||
<info name="group1_db10" host="8.138.242.190" password="cssq@2020" port="6379" database="10" timeout="5000"/>
|
||||
<info name="group1_db11" host="8.138.242.190" password="cssq@2020" port="6379" database="11" timeout="5000"/>
|
||||
<info name="tmp_group1_db9" host="8.138.242.190" password="654sads" port="6479" database="9" timeout="5000"/>
|
||||
<info name="group1_db0" host="r-2vc0x3clldkj94synhpd.redis.cn-chengdu.rds.aliyuncs.com" password="KuaiLjzhu@2026" port="6379" database="0" timeout="5000"/>
|
||||
<info name="group1_db1" host="r-2vc0x3clldkj94synhpd.redis.cn-chengdu.rds.aliyuncs.com" password="KuaiLjzhu@2026" port="6379" database="1" timeout="5000"/>
|
||||
<info name="group1_db2" host="r-2vc0x3clldkj94synhpd.redis.cn-chengdu.rds.aliyuncs.com" password="KuaiLjzhu@2026" port="6379" database="2" timeout="5000"/>
|
||||
<info name="group1_db5" host="r-2vc0x3clldkj94synhpd.redis.cn-chengdu.rds.aliyuncs.com" password="KuaiLjzhu@2026" port="6379" database="5" timeout="5000"/>
|
||||
<info name="group1_db8" host="r-2vc0x3clldkj94synhpd.redis.cn-chengdu.rds.aliyuncs.com" password="KuaiLjzhu@2026" port="6379" database="8" timeout="5000"/>
|
||||
<info name="group1_db9" host="r-2vc0x3clldkj94synhpd.redis.cn-chengdu.rds.aliyuncs.com" password="KuaiLjzhu@2026" port="6379" database="9" timeout="5000"/>
|
||||
<info name="group1_db10" host="r-2vc0x3clldkj94synhpd.redis.cn-chengdu.rds.aliyuncs.com" password="KuaiLjzhu@2026" port="6379" database="10" timeout="5000"/>
|
||||
<info name="group1_db11" host="r-2vc0x3clldkj94synhpd.redis.cn-chengdu.rds.aliyuncs.com" password="KuaiLjzhu@2026" port="6379" database="11" timeout="5000"/>
|
||||
<info name="tmp_group1_db9" host="r-2vc0x3clldkj94synhpd.redis.cn-chengdu.rds.aliyuncs.com" password="654sads" port="6479" database="9" timeout="5000"/>
|
||||
|
||||
</infos>
|
||||
</plugin>
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,722 @@
|
|||
04 二月 2026 | 14:02:16,795 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 14:02:16,871 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 14:02:36,494 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdatePlayRoomJob | | del robot room:327197 player:[520191,733468] fake_json:1
|
||||
04 二月 2026 | 14:02:53,410 | INFO | qtp391618063-67 | group.controller.GroupController | | jefe_test: 115777
|
||||
04 二月 2026 | 14:02:53,782 | INFO | qtp391618063-67 | taurus.web.WebFilter | | action: get_groups[{user}:115777] time:592ms
|
||||
04 二月 2026 | 14:02:55,261 | INFO | qtp391618063-64 | taurus.web.WebFilter | | action: enter_group[{user}:115777] time:564ms
|
||||
04 二月 2026 | 14:02:58,063 | INFO | qtp391618063-64 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 14:03:00,179 | INFO | qtp391618063-64 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:2491ms
|
||||
04 二月 2026 | 14:05:22,235 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdatePlayRoomJob | | del robot room:689567 player:[870909,285195] fake_json:1
|
||||
04 二月 2026 | 14:06:08,935 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdatePlayRoomJob | | del robot room:340133 player:[990477,148839] fake_json:1
|
||||
04 二月 2026 | 14:08:46,314 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdatePlayRoomJob | | del robot room:135569 player:[108473,992179] fake_json:1
|
||||
04 二月 2026 | 14:09:21,015 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdatePlayRoomJob | | del robot room:780903 player:[658983,223369] fake_json:1
|
||||
04 二月 2026 | 14:11:41,353 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdatePlayRoomJob | | del robot room:783725 player:[395743,608562] fake_json:1
|
||||
04 二月 2026 | 14:12:50,865 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdatePlayRoomJob | | del robot room:672847 player:[505572,446021] fake_json:1
|
||||
04 二月 2026 | 14:13:40,884 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdatePlayRoomJob | | del robot room:347815 player:[277652,455295] fake_json:1
|
||||
04 二月 2026 | 14:14:40,715 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdatePlayRoomJob | | del robot room:459447 player:[232304,893772] fake_json:1
|
||||
04 二月 2026 | 14:16:05,995 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 14:16:06,042 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 14:16:11,683 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdatePlayRoomJob | | del robot room:449672 player:[316412,950997] fake_json:1
|
||||
04 二月 2026 | 14:17:24,569 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 14:17:24,615 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 14:17:30,877 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdatePlayRoomJob | | del robot room:503519 player:[516400,657879] fake_json:1
|
||||
04 二月 2026 | 14:18:01,314 | INFO | qtp391618063-67 | taurus.web.WebFilter | | action: join_room[{user}:115777] time:1926ms
|
||||
04 二月 2026 | 14:18:13,100 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 14:18:13,151 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 14:18:24,797 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: join_room[{user}:115777] time:1644ms
|
||||
04 二月 2026 | 14:18:36,459 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: join_room[{user}:115777] time:1603ms
|
||||
04 二月 2026 | 14:18:42,069 | INFO | qtp391618063-66 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 14:18:42,147 | ERROR | mpnet connect thread | service.io.ISocket | | Connection error
|
||||
java.net.SocketException: Socket operation on nonsocket: configureBlocking
|
||||
at java.net.DualStackPlainSocketImpl.configureBlocking(Native Method)
|
||||
at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:84)
|
||||
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:476)
|
||||
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:218)
|
||||
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:200)
|
||||
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:162)
|
||||
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:394)
|
||||
at java.net.Socket.connect(Socket.java:606)
|
||||
at com.group.service.io.SocketTcp.connectThread(SocketTcp.java:53)
|
||||
at com.group.service.io.SocketTcp.access$000(SocketTcp.java:19)
|
||||
at com.group.service.io.SocketTcp$1.run(SocketTcp.java:39)
|
||||
at java.lang.Thread.run(Thread.java:750)
|
||||
04 二月 2026 | 14:18:43,487 | INFO | qtp391618063-66 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:2110ms
|
||||
04 二月 2026 | 14:19:16,244 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdatePlayRoomJob | | del robot room:323634 player:[768647,268775] fake_json:1
|
||||
04 二月 2026 | 14:19:40,971 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdatePlayRoomJob | | del robot room:911667 player:[161367,296214] fake_json:1
|
||||
04 二月 2026 | 14:21:15,767 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdatePlayRoomJob | | del robot room:266678 player:[609966,945218] fake_json:1
|
||||
04 二月 2026 | 14:21:19,485 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 14:21:19,532 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 14:21:27,883 | INFO | qtp391618063-64 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 14:21:29,501 | INFO | qtp391618063-64 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:2010ms
|
||||
04 二月 2026 | 14:22:17,968 | ERROR | Thread-31 | service.io.ISocket | | Receiving failed.:
|
||||
com.group.service.io.TSocketException
|
||||
at com.group.service.io.SocketTcp.__read(SocketTcp.java:126)
|
||||
at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19)
|
||||
at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70)
|
||||
at java.lang.Thread.run(Thread.java:750)
|
||||
04 二月 2026 | 14:22:58,394 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 14:22:58,440 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 14:23:52,922 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 14:23:52,970 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 14:23:55,178 | INFO | qtp391618063-63 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 14:23:59,097 | INFO | qtp391618063-63 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:4447ms
|
||||
04 二月 2026 | 14:24:06,046 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdatePlayRoomJob | | del robot room:859644 player:[362003,977049] fake_json:1
|
||||
04 二月 2026 | 14:24:26,424 | INFO | qtp391618063-63 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 14:24:29,831 | INFO | qtp391618063-63 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:3701ms
|
||||
04 二月 2026 | 14:24:35,853 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdatePlayRoomJob | | del robot room:744437 player:[870909,157747] fake_json:1
|
||||
04 二月 2026 | 14:26:28,897 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 14:26:28,954 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 14:26:50,031 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 14:26:50,077 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 14:26:53,790 | INFO | qtp391618063-62 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 14:26:57,610 | INFO | qtp391618063-62 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:4168ms
|
||||
04 二月 2026 | 14:27:15,907 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdatePlayRoomJob | | del robot room:309463 player:[914143,198184] fake_json:1
|
||||
04 二月 2026 | 14:27:25,911 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdatePlayRoomJob | | del robot room:611363 player:[976274,658983] fake_json:1
|
||||
04 二月 2026 | 14:27:56,632 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 14:27:56,680 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 14:28:12,363 | INFO | qtp391618063-65 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 14:28:16,139 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:4124ms
|
||||
04 二月 2026 | 14:28:46,192 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdatePlayRoomJob | | del robot room:490194 player:[168199,705790] fake_json:1
|
||||
04 二月 2026 | 14:29:53,423 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 14:29:53,473 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 14:29:58,153 | INFO | qtp391618063-60 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 14:30:00,291 | ERROR | Thread-30 | group.service.HttpClient | |
|
||||
java.net.MalformedURLException: no protocol: 192.168.0.32:8701225
|
||||
at java.net.URL.<init>(URL.java:610)
|
||||
at java.net.URL.<init>(URL.java:507)
|
||||
at java.net.URL.<init>(URL.java:456)
|
||||
at com.group.service.HttpClient.__requestAsync(HttpClient.java:79)
|
||||
at com.group.service.HttpClient.__sendMsg(HttpClient.java:69)
|
||||
at com.group.service.HttpClient.access$000(HttpClient.java:24)
|
||||
at com.group.service.HttpClient$2.run(HttpClient.java:188)
|
||||
at java.lang.Thread.run(Thread.java:750)
|
||||
04 二月 2026 | 14:30:01,934 | INFO | qtp391618063-60 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:4393ms
|
||||
04 二月 2026 | 14:30:21,055 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdatePlayRoomJob | | del robot room:594197 player:[301188,957316] fake_json:1
|
||||
04 二月 2026 | 14:30:36,895 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 14:30:36,942 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 14:30:43,221 | INFO | qtp391618063-62 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 14:30:50,264 | INFO | qtp391618063-62 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:7463ms
|
||||
04 二月 2026 | 14:31:30,985 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdatePlayRoomJob | | del robot room:789114 player:[232304,689714] fake_json:1
|
||||
04 二月 2026 | 14:31:37,579 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 14:31:37,625 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 14:33:25,595 | INFO | qtp391618063-65 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 14:33:31,811 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:6548ms
|
||||
04 二月 2026 | 14:37:45,470 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 14:37:45,516 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 14:37:50,024 | INFO | qtp391618063-65 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 14:37:56,823 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:7230ms
|
||||
04 二月 2026 | 14:38:11,950 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 14:38:11,991 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 14:38:16,372 | INFO | qtp391618063-62 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 14:38:17,961 | INFO | qtp391618063-62 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:2145ms
|
||||
04 二月 2026 | 14:38:37,794 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 14:38:37,843 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 14:38:40,969 | INFO | qtp391618063-65 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 14:38:42,312 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:1797ms
|
||||
04 二月 2026 | 14:40:04,825 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 14:40:04,873 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 14:40:10,944 | INFO | qtp391618063-66 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 14:40:12,679 | INFO | qtp391618063-66 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:2078ms
|
||||
04 二月 2026 | 14:40:49,971 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 14:40:50,018 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 14:40:54,743 | INFO | qtp391618063-66 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 14:40:55,015 | INFO | NetEvent-Thread | service.io.SocketEngine | | status : Connect
|
||||
04 二月 2026 | 14:40:56,402 | INFO | qtp391618063-66 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:2063ms
|
||||
04 二月 2026 | 14:41:25,579 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 14:41:25,621 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 14:41:34,091 | INFO | qtp391618063-60 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 14:41:34,366 | INFO | NetEvent-Thread | service.io.SocketEngine | | status : Connect
|
||||
04 二月 2026 | 14:41:36,048 | INFO | qtp391618063-60 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:2456ms
|
||||
04 二月 2026 | 14:41:53,655 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 14:41:53,696 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 14:42:00,246 | INFO | qtp391618063-65 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 14:42:00,477 | INFO | NetEvent-Thread | service.io.SocketEngine | | status : Connect
|
||||
04 二月 2026 | 14:42:01,767 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:1907ms
|
||||
04 二月 2026 | 14:42:33,541 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 14:42:33,586 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 14:42:36,631 | INFO | qtp391618063-65 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 14:42:36,900 | INFO | NetEvent-Thread | service.io.SocketEngine | | status : Connect
|
||||
04 二月 2026 | 14:42:38,256 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:1989ms
|
||||
04 二月 2026 | 14:43:11,250 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 14:43:11,293 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 14:43:15,311 | INFO | qtp391618063-67 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 14:43:15,516 | INFO | NetEvent-Thread | service.io.SocketEngine | | status : Connect
|
||||
04 二月 2026 | 14:43:17,788 | INFO | qtp391618063-67 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:2934ms
|
||||
04 二月 2026 | 14:44:34,514 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 14:44:34,558 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 14:44:43,945 | INFO | qtp391618063-65 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 14:44:44,197 | INFO | NetEvent-Thread | service.io.SocketEngine | | status : Connect
|
||||
04 二月 2026 | 14:44:46,460 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:2840ms
|
||||
04 二月 2026 | 14:47:44,665 | ERROR | Thread-32 | service.io.ISocket | | Receiving failed.:
|
||||
com.group.service.io.TSocketException
|
||||
at com.group.service.io.SocketTcp.__read(SocketTcp.java:126)
|
||||
at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19)
|
||||
at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70)
|
||||
at java.lang.Thread.run(Thread.java:750)
|
||||
04 二月 2026 | 14:47:44,749 | INFO | NetEvent-Thread | service.io.SocketEngine | | status : ExceptionOnReceive
|
||||
04 二月 2026 | 14:47:57,185 | INFO | qtp391618063-63 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 14:47:57,368 | INFO | NetEvent-Thread | service.io.SocketEngine | | status : Connect
|
||||
04 二月 2026 | 14:47:59,739 | INFO | qtp391618063-63 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:2920ms
|
||||
04 二月 2026 | 14:48:21,196 | INFO | qtp391618063-62 | taurus.web.WebFilter | | action: join_room[{user}:115777] time:326ms
|
||||
04 二月 2026 | 14:48:22,835 | INFO | qtp391618063-67 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 14:48:22,953 | INFO | NetEvent-Thread | service.io.SocketEngine | | status : Connect
|
||||
04 二月 2026 | 14:48:25,227 | INFO | qtp391618063-67 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:2807ms
|
||||
04 二月 2026 | 14:48:43,055 | ERROR | Thread-40 | service.io.ISocket | | Receiving failed.:
|
||||
com.group.service.io.TSocketException
|
||||
at com.group.service.io.SocketTcp.__read(SocketTcp.java:126)
|
||||
at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19)
|
||||
at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70)
|
||||
at java.lang.Thread.run(Thread.java:750)
|
||||
04 二月 2026 | 14:48:43,055 | ERROR | Thread-36 | service.io.ISocket | | Receiving failed.:
|
||||
com.group.service.io.TSocketException
|
||||
at com.group.service.io.SocketTcp.__read(SocketTcp.java:126)
|
||||
at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19)
|
||||
at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70)
|
||||
at java.lang.Thread.run(Thread.java:750)
|
||||
04 二月 2026 | 14:48:43,079 | INFO | NetEvent-Thread | service.io.SocketEngine | | status : ExceptionOnReceive
|
||||
04 二月 2026 | 14:48:43,079 | INFO | NetEvent-Thread | service.io.SocketEngine | | status : ExceptionOnReceive
|
||||
04 二月 2026 | 14:49:51,376 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 14:49:51,422 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 14:49:55,976 | INFO | qtp391618063-60 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 14:49:56,169 | INFO | games | service.io.SocketEngine | | status : Connect
|
||||
04 二月 2026 | 14:49:58,527 | INFO | qtp391618063-60 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:2856ms
|
||||
04 二月 2026 | 14:51:30,625 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 14:51:30,669 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 14:51:36,495 | INFO | qtp391618063-62 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 14:51:36,730 | INFO | games | service.io.SocketEngine | | status : Connect
|
||||
04 二月 2026 | 14:51:39,127 | INFO | qtp391618063-62 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:2969ms
|
||||
04 二月 2026 | 14:51:51,896 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 14:51:51,939 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 14:51:53,986 | INFO | qtp391618063-63 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 14:51:54,273 | INFO | games | service.io.SocketEngine | | status : Connect
|
||||
04 二月 2026 | 14:51:56,715 | INFO | qtp391618063-63 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:3083ms
|
||||
04 二月 2026 | 14:52:26,191 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 14:52:26,235 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 14:52:32,446 | INFO | qtp391618063-63 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 14:52:32,663 | INFO | games | service.io.SocketEngine | | status : Connect
|
||||
04 二月 2026 | 14:52:35,266 | INFO | qtp391618063-63 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:3173ms
|
||||
04 二月 2026 | 14:52:50,754 | INFO | qtp391618063-61 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 14:52:51,050 | INFO | games | service.io.SocketEngine | | status : Connect
|
||||
04 二月 2026 | 14:52:53,185 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:2741ms
|
||||
04 二月 2026 | 14:52:57,065 | INFO | qtp391618063-71 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 14:52:57,271 | INFO | games | service.io.SocketEngine | | status : Connect
|
||||
04 二月 2026 | 14:52:59,715 | INFO | qtp391618063-71 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:3094ms
|
||||
04 二月 2026 | 14:56:48,302 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 14:56:48,351 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 14:56:49,317 | INFO | qtp391618063-60 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 14:56:50,885 | INFO | qtp391618063-60 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:2008ms
|
||||
04 二月 2026 | 14:57:18,494 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 14:57:18,535 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 14:57:22,556 | INFO | qtp391618063-67 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 14:57:23,981 | ERROR | qtp391618063-67 | taurus.web.WebFilter | |
|
||||
java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer
|
||||
at com.taurus.core.entity.TObject.getInt(TObject.java:130)
|
||||
at com.group.service.GroupRoomService.matchRoom(GroupRoomService.java:1074)
|
||||
at com.group.controller.GroupRoomController.matchRoom(GroupRoomController.java:32)
|
||||
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
|
||||
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
|
||||
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
|
||||
at java.lang.reflect.Method.invoke(Method.java:498)
|
||||
at com.taurus.web.TWebServer.handle(TWebServer.java:166)
|
||||
at com.taurus.web.WebFilter.doFilter(WebFilter.java:58)
|
||||
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1487)
|
||||
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:499)
|
||||
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)
|
||||
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:557)
|
||||
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)
|
||||
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1086)
|
||||
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:427)
|
||||
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)
|
||||
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1020)
|
||||
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
|
||||
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
|
||||
at org.eclipse.jetty.server.Server.handle(Server.java:370)
|
||||
at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:494)
|
||||
at org.eclipse.jetty.server.AbstractHttpConnection.content(AbstractHttpConnection.java:984)
|
||||
at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.content(AbstractHttpConnection.java:1045)
|
||||
at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:861)
|
||||
at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:236)
|
||||
at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)
|
||||
at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:696)
|
||||
at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:53)
|
||||
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)
|
||||
at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)
|
||||
at java.lang.Thread.run(Thread.java:750)
|
||||
04 二月 2026 | 14:57:23,984 | INFO | qtp391618063-67 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:1725ms
|
||||
04 二月 2026 | 14:57:46,909 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 14:57:46,952 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 14:57:48,458 | INFO | qtp391618063-61 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 14:57:49,489 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:1452ms
|
||||
04 二月 2026 | 14:58:56,219 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 14:58:56,261 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 15:01:46,558 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 15:01:46,604 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 15:25:50,587 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 15:25:50,649 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 15:25:59,065 | INFO | qtp391618063-62 | taurus.web.WebFilter | | action: join_room[{user}:115777] time:6011ms
|
||||
04 二月 2026 | 15:26:20,493 | INFO | qtp391618063-64 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 15:26:23,973 | INFO | qtp391618063-64 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:4180ms
|
||||
04 二月 2026 | 15:26:23,981 | INFO | games | service.io.SocketEngine | | status : Connect
|
||||
04 二月 2026 | 15:26:43,640 | INFO | qtp391618063-65 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 15:26:46,841 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:3754ms
|
||||
04 二月 2026 | 15:26:46,877 | INFO | games | service.io.SocketEngine | | status : Connect
|
||||
04 二月 2026 | 15:27:05,463 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 15:27:05,503 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 15:27:12,010 | INFO | qtp391618063-65 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 15:27:16,423 | INFO | games2 | service.io.SocketEngine | | status : Connect
|
||||
04 二月 2026 | 15:27:16,432 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:5402ms
|
||||
04 二月 2026 | 15:27:27,197 | INFO | qtp391618063-64 | group.controller.GroupController | | jefe_test: 115777
|
||||
04 二月 2026 | 15:27:28,246 | INFO | qtp391618063-64 | taurus.web.WebFilter | | action: get_groups[{user}:115777] time:1314ms
|
||||
04 二月 2026 | 15:27:28,805 | INFO | qtp391618063-67 | taurus.web.WebFilter | | action: enter_group[{user}:115777] time:1123ms
|
||||
04 二月 2026 | 15:27:33,399 | INFO | qtp391618063-60 | taurus.web.WebFilter | | action: join_room[{user}:115777] time:3623ms
|
||||
04 二月 2026 | 15:28:24,197 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 15:28:24,238 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 15:28:29,424 | INFO | qtp391618063-59 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 15:28:33,271 | INFO | games2 | service.io.SocketEngine | | status : Connect
|
||||
04 二月 2026 | 15:28:33,414 | INFO | qtp391618063-59 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:4824ms
|
||||
04 二月 2026 | 15:28:49,649 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 15:28:49,690 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 15:29:09,405 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 15:29:09,450 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 15:29:12,556 | INFO | qtp391618063-66 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 15:29:15,810 | INFO | tstse | service.io.SocketEngine | | status : Connect
|
||||
04 二月 2026 | 15:29:17,845 | INFO | qtp391618063-66 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:6034ms
|
||||
04 二月 2026 | 15:30:29,984 | INFO | qtp391618063-61 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 15:30:34,002 | INFO | tstse | service.io.SocketEngine | | status : Connect
|
||||
04 二月 2026 | 15:30:35,991 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:8477ms
|
||||
04 二月 2026 | 15:32:23,530 | ERROR | Thread-36 | service.io.ISocket | | Receiving failed.:
|
||||
com.group.service.io.TSocketException
|
||||
at com.group.service.io.SocketTcp.__read(SocketTcp.java:126)
|
||||
at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19)
|
||||
at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70)
|
||||
at java.lang.Thread.run(Thread.java:750)
|
||||
04 二月 2026 | 15:32:23,530 | ERROR | Thread-32 | service.io.ISocket | | Receiving failed.:
|
||||
com.group.service.io.TSocketException
|
||||
at com.group.service.io.SocketTcp.__read(SocketTcp.java:126)
|
||||
at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19)
|
||||
at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70)
|
||||
at java.lang.Thread.run(Thread.java:750)
|
||||
04 二月 2026 | 15:32:23,549 | INFO | tstse | service.io.SocketEngine | | status : ExceptionOnReceive
|
||||
04 二月 2026 | 15:32:23,549 | INFO | tstse | service.io.SocketEngine | | status : ExceptionOnReceive
|
||||
04 二月 2026 | 15:33:26,673 | INFO | qtp391618063-61 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 15:33:31,203 | INFO | tstse | service.io.SocketEngine | | status : Connect
|
||||
04 二月 2026 | 15:33:33,175 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:7215ms
|
||||
04 二月 2026 | 15:34:23,289 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 15:34:23,331 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 15:34:34,777 | INFO | qtp391618063-61 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 15:34:39,613 | INFO | tstse | service.io.SocketEngine | | status : Connect
|
||||
04 二月 2026 | 15:34:41,647 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:7796ms
|
||||
04 二月 2026 | 15:37:11,786 | ERROR | Thread-29 | service.io.ISocket | | Receiving failed.:
|
||||
com.group.service.io.TSocketException
|
||||
at com.group.service.io.SocketTcp.__read(SocketTcp.java:126)
|
||||
at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19)
|
||||
at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70)
|
||||
at java.lang.Thread.run(Thread.java:750)
|
||||
04 二月 2026 | 15:37:11,858 | INFO | tstse | service.io.SocketEngine | | status : ExceptionOnReceive
|
||||
04 二月 2026 | 15:37:32,358 | INFO | qtp391618063-60 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 15:37:37,041 | INFO | tstse | service.io.SocketEngine | | status : Connect
|
||||
04 二月 2026 | 15:37:39,006 | INFO | qtp391618063-60 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:7604ms
|
||||
04 二月 2026 | 15:38:13,290 | INFO | qtp391618063-73 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 15:38:17,915 | INFO | tstse | service.io.SocketEngine | | status : Connect
|
||||
04 二月 2026 | 15:38:20,174 | INFO | qtp391618063-73 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:7592ms
|
||||
04 二月 2026 | 15:38:21,374 | ERROR | Thread-39 | service.io.ISocket | | Receiving failed.:
|
||||
com.group.service.io.TSocketException
|
||||
at com.group.service.io.SocketTcp.__read(SocketTcp.java:126)
|
||||
at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19)
|
||||
at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70)
|
||||
at java.lang.Thread.run(Thread.java:750)
|
||||
04 二月 2026 | 15:38:21,374 | ERROR | Thread-35 | service.io.ISocket | | Receiving failed.:
|
||||
com.group.service.io.TSocketException
|
||||
at com.group.service.io.SocketTcp.__read(SocketTcp.java:126)
|
||||
at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19)
|
||||
at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70)
|
||||
at java.lang.Thread.run(Thread.java:750)
|
||||
04 二月 2026 | 15:38:21,393 | INFO | tstse | service.io.SocketEngine | | status : ExceptionOnReceive
|
||||
04 二月 2026 | 15:38:21,393 | INFO | tstse | service.io.SocketEngine | | status : ExceptionOnReceive
|
||||
04 二月 2026 | 15:38:40,019 | INFO | qtp391618063-73 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 15:38:43,954 | INFO | tstse | service.io.SocketEngine | | status : Connect
|
||||
04 二月 2026 | 15:38:45,982 | INFO | qtp391618063-73 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:6861ms
|
||||
04 二月 2026 | 15:42:35,519 | ERROR | Thread-43 | service.io.ISocket | | Receiving failed.:
|
||||
com.group.service.io.TSocketException
|
||||
at com.group.service.io.SocketTcp.__read(SocketTcp.java:126)
|
||||
at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19)
|
||||
at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70)
|
||||
at java.lang.Thread.run(Thread.java:750)
|
||||
04 二月 2026 | 15:42:35,539 | INFO | tstse | service.io.SocketEngine | | status : ExceptionOnReceive
|
||||
04 二月 2026 | 15:42:53,549 | INFO | qtp391618063-93 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 15:42:57,450 | INFO | tstse | service.io.SocketEngine | | status : Connect
|
||||
04 二月 2026 | 15:42:59,447 | INFO | qtp391618063-93 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:7086ms
|
||||
04 二月 2026 | 15:43:32,392 | ERROR | Thread-51 | service.io.ISocket | | Receiving failed.:
|
||||
com.group.service.io.TSocketException
|
||||
at com.group.service.io.SocketTcp.__read(SocketTcp.java:126)
|
||||
at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19)
|
||||
at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70)
|
||||
at java.lang.Thread.run(Thread.java:750)
|
||||
04 二月 2026 | 15:43:32,417 | INFO | tstse | service.io.SocketEngine | | status : ExceptionOnReceive
|
||||
04 二月 2026 | 15:43:33,381 | INFO | qtp391618063-93 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 15:43:38,078 | INFO | tstse | service.io.SocketEngine | | status : Connect
|
||||
04 二月 2026 | 15:43:39,263 | INFO | qtp391618063-93 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:6690ms
|
||||
04 二月 2026 | 15:44:37,280 | ERROR | Thread-56 | service.io.ISocket | | Receiving failed.:
|
||||
com.group.service.io.TSocketException
|
||||
at com.group.service.io.SocketTcp.__read(SocketTcp.java:126)
|
||||
at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19)
|
||||
at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70)
|
||||
at java.lang.Thread.run(Thread.java:750)
|
||||
04 二月 2026 | 15:44:37,284 | INFO | tstse | service.io.SocketEngine | | status : ExceptionOnReceive
|
||||
04 二月 2026 | 15:44:53,697 | INFO | qtp391618063-93 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 15:44:57,396 | INFO | tstse | service.io.SocketEngine | | status : Connect
|
||||
04 二月 2026 | 15:44:59,499 | INFO | qtp391618063-93 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:6511ms
|
||||
04 二月 2026 | 15:45:34,664 | ERROR | Thread-61 | service.io.ISocket | | Receiving failed.:
|
||||
com.group.service.io.TSocketException
|
||||
at com.group.service.io.SocketTcp.__read(SocketTcp.java:126)
|
||||
at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19)
|
||||
at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70)
|
||||
at java.lang.Thread.run(Thread.java:750)
|
||||
04 二月 2026 | 15:45:34,676 | INFO | tstse | service.io.SocketEngine | | status : ExceptionOnReceive
|
||||
04 二月 2026 | 15:45:45,855 | INFO | qtp391618063-93 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 15:45:49,621 | INFO | tstse | service.io.SocketEngine | | status : Connect
|
||||
04 二月 2026 | 15:45:51,697 | INFO | qtp391618063-93 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:6654ms
|
||||
04 二月 2026 | 15:49:16,689 | ERROR | Thread-66 | service.io.ISocket | | Receiving failed.:
|
||||
com.group.service.io.TSocketException
|
||||
at com.group.service.io.SocketTcp.__read(SocketTcp.java:126)
|
||||
at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19)
|
||||
at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70)
|
||||
at java.lang.Thread.run(Thread.java:750)
|
||||
04 二月 2026 | 15:49:16,701 | INFO | tstse | service.io.SocketEngine | | status : ExceptionOnReceive
|
||||
04 二月 2026 | 15:49:20,659 | INFO | qtp391618063-124 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 15:49:24,439 | INFO | tstse | service.io.SocketEngine | | status : Connect
|
||||
04 二月 2026 | 15:49:26,423 | INFO | qtp391618063-124 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:6362ms
|
||||
04 二月 2026 | 15:51:45,966 | INFO | qtp391618063-134 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 15:51:50,802 | INFO | tstse | service.io.SocketEngine | | status : Connect
|
||||
04 二月 2026 | 15:51:52,722 | INFO | qtp391618063-134 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:7509ms
|
||||
04 二月 2026 | 15:52:16,160 | INFO | qtp391618063-134 | group.controller.GroupController | | jefe_test: 112233
|
||||
04 二月 2026 | 15:52:17,103 | INFO | qtp391618063-134 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:1555ms
|
||||
04 二月 2026 | 15:52:22,556 | INFO | qtp391618063-134 | taurus.web.WebFilter | | action: enter_group[{user}:112233] time:561ms
|
||||
04 二月 2026 | 15:52:52,871 | ERROR | Thread-80 | service.io.ISocket | | Receiving failed.:
|
||||
com.group.service.io.TSocketException
|
||||
at com.group.service.io.SocketTcp.__read(SocketTcp.java:126)
|
||||
at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19)
|
||||
at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70)
|
||||
at java.lang.Thread.run(Thread.java:750)
|
||||
04 二月 2026 | 15:52:52,871 | ERROR | Thread-73 | service.io.ISocket | | Receiving failed.:
|
||||
com.group.service.io.TSocketException
|
||||
at com.group.service.io.SocketTcp.__read(SocketTcp.java:126)
|
||||
at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19)
|
||||
at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70)
|
||||
at java.lang.Thread.run(Thread.java:750)
|
||||
04 二月 2026 | 15:52:52,883 | INFO | tstse | service.io.SocketEngine | | status : ExceptionOnReceive
|
||||
04 二月 2026 | 15:52:52,883 | INFO | tstse | service.io.SocketEngine | | status : ExceptionOnReceive
|
||||
04 二月 2026 | 15:53:01,624 | INFO | qtp391618063-132 | group.controller.GroupController | | jefe_test: 115777
|
||||
04 二月 2026 | 15:53:01,955 | INFO | qtp391618063-132 | taurus.web.WebFilter | | action: get_groups[{user}:115777] time:582ms
|
||||
04 二月 2026 | 15:53:02,420 | INFO | qtp391618063-142 | taurus.web.WebFilter | | action: enter_group[{user}:115777] time:487ms
|
||||
04 二月 2026 | 15:53:03,682 | INFO | qtp391618063-142 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 15:53:05,501 | INFO | tstse | service.io.SocketEngine | | status : Connect
|
||||
04 二月 2026 | 15:53:07,479 | INFO | qtp391618063-142 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:4178ms
|
||||
04 二月 2026 | 15:53:23,466 | INFO | qtp391618063-132 | group.controller.GroupController | | jefe_test: 112233
|
||||
04 二月 2026 | 15:53:24,037 | INFO | qtp391618063-132 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:793ms
|
||||
04 二月 2026 | 15:53:24,532 | INFO | qtp391618063-142 | taurus.web.WebFilter | | action: enter_group[{user}:112233] time:493ms
|
||||
04 二月 2026 | 15:53:27,905 | INFO | qtp391618063-142 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 15:53:29,579 | INFO | tstse | service.io.SocketEngine | | status : Connect
|
||||
04 二月 2026 | 15:53:31,614 | INFO | qtp391618063-142 | taurus.web.WebFilter | | action: match_room[{user}:112233] time:3979ms
|
||||
04 二月 2026 | 15:54:08,273 | ERROR | Thread-90 | service.io.ISocket | | Receiving failed.:
|
||||
com.group.service.io.TSocketException
|
||||
at com.group.service.io.SocketTcp.__read(SocketTcp.java:126)
|
||||
at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19)
|
||||
at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70)
|
||||
at java.lang.Thread.run(Thread.java:750)
|
||||
04 二月 2026 | 15:54:08,273 | ERROR | Thread-85 | service.io.ISocket | | Receiving failed.:
|
||||
com.group.service.io.TSocketException
|
||||
at com.group.service.io.SocketTcp.__read(SocketTcp.java:126)
|
||||
at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19)
|
||||
at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70)
|
||||
at java.lang.Thread.run(Thread.java:750)
|
||||
04 二月 2026 | 15:54:08,283 | INFO | tstse | service.io.SocketEngine | | status : ExceptionOnReceive
|
||||
04 二月 2026 | 15:54:08,283 | INFO | tstse | service.io.SocketEngine | | status : ExceptionOnReceive
|
||||
04 二月 2026 | 16:01:37,449 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 16:01:37,491 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 16:01:46,031 | INFO | qtp391618063-65 | group.controller.GroupController | | jefe_test: 112233
|
||||
04 二月 2026 | 16:01:46,537 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:647ms
|
||||
04 二月 2026 | 16:01:47,607 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: enter_group[{user}:112233] time:463ms
|
||||
04 二月 2026 | 16:01:50,455 | INFO | qtp391618063-62 | taurus.web.WebFilter | | action: join_room[{user}:112233] time:379ms
|
||||
04 二月 2026 | 16:01:53,487 | INFO | qtp391618063-64 | taurus.web.WebFilter | | action: join_room[{user}:112233] time:1054ms
|
||||
04 二月 2026 | 16:02:01,417 | INFO | qtp391618063-61 | group.controller.GroupController | | jefe_test: 112233
|
||||
04 二月 2026 | 16:02:01,734 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:649ms
|
||||
04 二月 2026 | 16:02:02,733 | INFO | qtp391618063-65 | group.controller.GroupController | | jefe_test: 112233
|
||||
04 二月 2026 | 16:02:03,427 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:862ms
|
||||
04 二月 2026 | 16:02:04,375 | INFO | qtp391618063-66 | taurus.web.WebFilter | | action: enter_group[{user}:112233] time:641ms
|
||||
04 二月 2026 | 16:02:16,575 | INFO | qtp391618063-65 | group.controller.GroupController | | jefe_test: 112233
|
||||
04 二月 2026 | 16:02:16,897 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:520ms
|
||||
04 二月 2026 | 16:02:17,492 | INFO | qtp391618063-62 | taurus.web.WebFilter | | action: enter_group[{user}:112233] time:545ms
|
||||
04 二月 2026 | 16:02:20,677 | INFO | qtp391618063-63 | taurus.web.WebFilter | | action: del__room[{user}:112233] time:338ms
|
||||
04 二月 2026 | 16:02:23,547 | INFO | qtp391618063-67 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 16:02:25,185 | INFO | tstse | service.io.SocketEngine | | status : Connect
|
||||
04 二月 2026 | 16:02:26,271 | INFO | qtp391618063-65 | group.controller.GroupController | | jefe_test: 112233
|
||||
04 二月 2026 | 16:02:26,630 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:641ms
|
||||
04 二月 2026 | 16:02:27,232 | INFO | qtp391618063-66 | taurus.web.WebFilter | | action: enter_group[{user}:112233] time:609ms
|
||||
04 二月 2026 | 16:02:27,306 | INFO | qtp391618063-67 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:4192ms
|
||||
04 二月 2026 | 16:03:24,217 | INFO | qtp391618063-61 | group.controller.GroupController | | jefe_test: 112233
|
||||
04 二月 2026 | 16:03:24,601 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:653ms
|
||||
04 二月 2026 | 16:03:24,932 | INFO | qtp391618063-61 | group.controller.GroupController | | jefe_test: 112233
|
||||
04 二月 2026 | 16:03:25,286 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:479ms
|
||||
04 二月 2026 | 16:03:26,515 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: enter_group[{user}:112233] time:551ms
|
||||
04 二月 2026 | 16:03:31,507 | INFO | qtp391618063-64 | taurus.web.WebFilter | | action: del__room[{user}:112233] time:367ms
|
||||
04 二月 2026 | 16:03:37,117 | INFO | qtp391618063-61 | group.controller.GroupController | | jefe_test: 112233
|
||||
04 二月 2026 | 16:03:37,537 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:580ms
|
||||
04 二月 2026 | 16:03:37,998 | INFO | qtp391618063-61 | group.controller.GroupController | | jefe_test: 112233
|
||||
04 二月 2026 | 16:03:38,451 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:587ms
|
||||
04 二月 2026 | 16:03:39,721 | INFO | qtp391618063-63 | taurus.web.WebFilter | | action: enter_group[{user}:112233] time:495ms
|
||||
04 二月 2026 | 16:03:45,974 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdatePlayRoomJob | | del robot room:377360 player:[456982,141106] fake_json:1
|
||||
04 二月 2026 | 16:04:05,338 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 16:04:05,391 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 16:04:08,687 | INFO | qtp391618063-63 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 16:04:10,863 | INFO | tstse | service.io.SocketEngine | | status : Connect
|
||||
04 二月 2026 | 16:04:12,988 | INFO | qtp391618063-63 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:4795ms
|
||||
04 二月 2026 | 16:04:16,345 | INFO | qtp391618063-67 | taurus.web.WebFilter | | action: enter_group[{user}:112233] time:648ms
|
||||
04 二月 2026 | 16:04:22,074 | ERROR | Thread-32 | service.io.ISocket | | Receiving failed.:
|
||||
com.group.service.io.TSocketException
|
||||
at com.group.service.io.SocketTcp.__read(SocketTcp.java:126)
|
||||
at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19)
|
||||
at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70)
|
||||
at java.lang.Thread.run(Thread.java:750)
|
||||
04 二月 2026 | 16:04:22,132 | INFO | tstse | service.io.SocketEngine | | status : ExceptionOnReceive
|
||||
04 二月 2026 | 16:04:28,873 | INFO | qtp391618063-65 | group.controller.GroupController | | jefe_test: 112233
|
||||
04 二月 2026 | 16:04:29,261 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:623ms
|
||||
04 二月 2026 | 16:04:31,394 | INFO | qtp391618063-67 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 16:04:33,106 | INFO | tstse | service.io.SocketEngine | | status : Connect
|
||||
04 二月 2026 | 16:04:35,188 | INFO | qtp391618063-67 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:4228ms
|
||||
04 二月 2026 | 16:04:42,316 | INFO | qtp391618063-63 | group.controller.GroupController | | jefe_test: 112233
|
||||
04 二月 2026 | 16:04:43,136 | INFO | qtp391618063-63 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:1221ms
|
||||
04 二月 2026 | 16:04:43,737 | INFO | qtp391618063-64 | taurus.web.WebFilter | | action: enter_group[{user}:112233] time:1113ms
|
||||
04 二月 2026 | 16:04:57,253 | INFO | qtp391618063-61 | group.controller.GroupController | | jefe_test: 112233
|
||||
04 二月 2026 | 16:04:57,552 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:538ms
|
||||
04 二月 2026 | 16:04:58,471 | INFO | qtp391618063-63 | taurus.web.WebFilter | | action: enter_group[{user}:112233] time:494ms
|
||||
04 二月 2026 | 16:05:00,314 | INFO | qtp391618063-60 | group.controller.GroupController | | jefe_test: 112233
|
||||
04 二月 2026 | 16:05:00,733 | INFO | qtp391618063-65 | group.controller.GroupController | | jefe_test: 112233
|
||||
04 二月 2026 | 16:05:00,769 | INFO | qtp391618063-60 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:805ms
|
||||
04 二月 2026 | 16:05:01,106 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:500ms
|
||||
04 二月 2026 | 16:05:21,168 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdatePlayRoomJob | | del robot room:500433 player:[503162,658983] fake_json:1
|
||||
04 二月 2026 | 16:05:51,193 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdatePlayRoomJob | | del robot room:376250 player:[296214,457322] fake_json:1
|
||||
04 二月 2026 | 16:06:27,138 | ERROR | Thread-36 | service.io.ISocket | | Receiving failed.:
|
||||
com.group.service.io.TSocketException
|
||||
at com.group.service.io.SocketTcp.__read(SocketTcp.java:126)
|
||||
at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19)
|
||||
at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70)
|
||||
at java.lang.Thread.run(Thread.java:750)
|
||||
04 二月 2026 | 16:06:27,151 | INFO | tstse | service.io.SocketEngine | | status : ExceptionOnReceive
|
||||
04 二月 2026 | 16:07:22,616 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 16:07:22,663 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 16:07:29,364 | INFO | qtp391618063-62 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 16:07:31,479 | INFO | tstse | service.io.SocketEngine | | status : Connect
|
||||
04 二月 2026 | 16:07:33,507 | INFO | qtp391618063-62 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:4640ms
|
||||
04 二月 2026 | 16:08:02,000 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdatePlayRoomJob | | del robot room:616587 player:[834603,923379] fake_json:1
|
||||
04 二月 2026 | 16:08:26,452 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdatePlayRoomJob | | del robot room:224143 player:[223369,152827] fake_json:1
|
||||
04 二月 2026 | 16:09:36,205 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdatePlayRoomJob | | del robot room:882695 player:[745978,447305] fake_json:1
|
||||
04 二月 2026 | 16:09:45,998 | INFO | qtp391618063-62 | group.controller.GroupController | | jefe_test: 112233
|
||||
04 二月 2026 | 16:09:46,542 | INFO | qtp391618063-62 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:726ms
|
||||
04 二月 2026 | 16:10:14,431 | INFO | qtp391618063-60 | group.controller.GroupController | | jefe_test: 112233
|
||||
04 二月 2026 | 16:10:14,893 | INFO | qtp391618063-60 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:813ms
|
||||
04 二月 2026 | 16:10:57,827 | ERROR | Thread-32 | service.io.ISocket | | Receiving failed.:
|
||||
com.group.service.io.TSocketException
|
||||
at com.group.service.io.SocketTcp.__read(SocketTcp.java:126)
|
||||
at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19)
|
||||
at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70)
|
||||
at java.lang.Thread.run(Thread.java:750)
|
||||
04 二月 2026 | 16:10:57,876 | INFO | tstse | service.io.SocketEngine | | status : ExceptionOnReceive
|
||||
04 二月 2026 | 16:11:21,577 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdatePlayRoomJob | | del robot room:147802 player:[857709,689714] fake_json:1
|
||||
04 二月 2026 | 16:11:41,014 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdatePlayRoomJob | | del robot room:165651 player:[268301,608562] fake_json:1
|
||||
04 二月 2026 | 16:13:15,217 | INFO | qtp391618063-87 | group.controller.GroupController | | jefe_test: 102555
|
||||
04 二月 2026 | 16:13:15,910 | INFO | qtp391618063-87 | taurus.web.WebFilter | | action: get_groups[{user}:102555] time:850ms
|
||||
04 二月 2026 | 16:13:18,098 | INFO | qtp391618063-86 | taurus.web.WebFilter | | action: enter_group[{user}:102555] time:472ms
|
||||
04 二月 2026 | 16:13:20,968 | INFO | qtp391618063-87 | group.controller.GroupController | | jefe_test: 102555
|
||||
04 二月 2026 | 16:13:21,528 | INFO | qtp391618063-87 | taurus.web.WebFilter | | action: get_groups[{user}:102555] time:693ms
|
||||
04 二月 2026 | 16:13:35,618 | INFO | qtp391618063-87 | group.controller.GroupController | | jefe_test: 112233
|
||||
04 二月 2026 | 16:13:36,431 | INFO | qtp391618063-87 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:976ms
|
||||
04 二月 2026 | 16:13:37,882 | INFO | qtp391618063-66 | taurus.web.WebFilter | | action: enter_group[{user}:112233] time:571ms
|
||||
04 二月 2026 | 16:13:40,953 | INFO | qtp391618063-86 | taurus.web.WebFilter | | action: del__room[{user}:112233] time:410ms
|
||||
04 二月 2026 | 16:13:49,204 | INFO | qtp391618063-85 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 16:13:50,755 | INFO | tstse | service.io.SocketEngine | | status : Connect
|
||||
04 二月 2026 | 16:13:50,985 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdatePlayRoomJob | | del robot room:280253 player:[635285,923379] fake_json:1
|
||||
04 二月 2026 | 16:13:52,767 | INFO | qtp391618063-85 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:3965ms
|
||||
04 二月 2026 | 16:14:03,848 | INFO | qtp391618063-66 | taurus.web.WebFilter | | action: enter_group[{user}:102555] time:750ms
|
||||
04 二月 2026 | 16:14:05,254 | INFO | qtp391618063-86 | group.controller.GroupController | | jefe_test: 102555
|
||||
04 二月 2026 | 16:14:05,728 | INFO | qtp391618063-86 | taurus.web.WebFilter | | action: get_groups[{user}:102555] time:653ms
|
||||
04 二月 2026 | 16:14:10,836 | INFO | qtp391618063-66 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 16:14:12,682 | INFO | tstse | service.io.SocketEngine | | status : Connect
|
||||
04 二月 2026 | 16:14:14,745 | INFO | qtp391618063-66 | taurus.web.WebFilter | | action: match_room[{user}:112233] time:4168ms
|
||||
04 二月 2026 | 16:15:16,010 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdatePlayRoomJob | | del robot room:860116 player:[751231,427087] fake_json:1
|
||||
04 二月 2026 | 16:15:40,120 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 16:15:40,165 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 16:16:01,506 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdatePlayRoomJob | | del robot room:383709 player:[977049,137207] fake_json:1
|
||||
04 二月 2026 | 16:16:04,352 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: join_room[{user}:112233] time:1942ms
|
||||
04 二月 2026 | 16:16:17,091 | INFO | qtp391618063-67 | taurus.web.WebFilter | | action: join_room[{user}:112233] time:1448ms
|
||||
04 二月 2026 | 16:16:21,085 | INFO | qtp391618063-62 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 16:16:22,832 | INFO | tstse | service.io.SocketEngine | | status : Connect
|
||||
04 二月 2026 | 16:16:24,790 | INFO | qtp391618063-62 | taurus.web.WebFilter | | action: match_room[{user}:112233] time:3957ms
|
||||
04 二月 2026 | 16:18:41,045 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdatePlayRoomJob | | del robot room:894419 player:[624684,232304] fake_json:1
|
||||
04 二月 2026 | 16:18:44,517 | INFO | qtp391618063-61 | group.controller.GroupController | | jefe_test: 525057
|
||||
04 二月 2026 | 16:18:44,978 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: get_groups[{user}:525057] time:669ms
|
||||
04 二月 2026 | 16:18:46,195 | INFO | qtp391618063-62 | taurus.web.WebFilter | | action: enter_group[{user}:525057] time:514ms
|
||||
04 二月 2026 | 16:18:47,452 | INFO | qtp391618063-61 | group.controller.GroupController | | jefe_test: 525057
|
||||
04 二月 2026 | 16:18:47,829 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: get_groups[{user}:525057] time:538ms
|
||||
04 二月 2026 | 16:19:02,221 | INFO | qtp391618063-63 | group.controller.GroupController | | jefe_test: 177475
|
||||
04 二月 2026 | 16:19:02,566 | INFO | qtp391618063-63 | taurus.web.WebFilter | | action: get_groups[{user}:177475] time:532ms
|
||||
04 二月 2026 | 16:19:03,858 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: enter_group[{user}:177475] time:518ms
|
||||
04 二月 2026 | 16:19:05,761 | INFO | qtp391618063-67 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 16:19:08,164 | INFO | tstse | service.io.SocketEngine | | status : Connect
|
||||
04 二月 2026 | 16:19:10,217 | INFO | qtp391618063-67 | taurus.web.WebFilter | | action: match_room[{user}:177475] time:4696ms
|
||||
04 二月 2026 | 16:19:40,542 | INFO | qtp391618063-61 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 16:19:41,933 | INFO | tstse | service.io.SocketEngine | | status : Connect
|
||||
04 二月 2026 | 16:19:44,154 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: match_room[{user}:177475] time:3868ms
|
||||
04 二月 2026 | 16:19:46,392 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdatePlayRoomJob | | del robot room:113345 player:[380267,870909] fake_json:1
|
||||
04 二月 2026 | 16:21:15,828 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdatePlayRoomJob | | del robot room:755135 player:[992179,657879] fake_json:1
|
||||
04 二月 2026 | 16:21:25,632 | ERROR | Thread-32 | service.io.ISocket | | Receiving failed.:
|
||||
com.group.service.io.TSocketException
|
||||
at com.group.service.io.SocketTcp.__read(SocketTcp.java:130)
|
||||
at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19)
|
||||
at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70)
|
||||
at java.lang.Thread.run(Thread.java:750)
|
||||
04 二月 2026 | 16:21:25,714 | INFO | tstse | service.io.SocketEngine | | status : DisconnectByServer
|
||||
04 二月 2026 | 16:22:11,302 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdatePlayRoomJob | | del robot room:669919 player:[733468,560202] fake_json:1
|
||||
04 二月 2026 | 16:23:35,957 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdatePlayRoomJob | | del robot room:109294 player:[977049,971057] fake_json:1
|
||||
04 二月 2026 | 16:24:15,714 | ERROR | Thread-36 | service.io.ISocket | | Receiving failed.:
|
||||
com.group.service.io.TSocketException
|
||||
at com.group.service.io.SocketTcp.__read(SocketTcp.java:130)
|
||||
at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19)
|
||||
at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70)
|
||||
at java.lang.Thread.run(Thread.java:750)
|
||||
04 二月 2026 | 16:24:15,786 | INFO | tstse | service.io.SocketEngine | | status : DisconnectByServer
|
||||
04 二月 2026 | 16:24:36,017 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdatePlayRoomJob | | del robot room:728457 player:[426015,950997] fake_json:1
|
||||
04 二月 2026 | 16:24:45,763 | ERROR | Thread-40 | service.io.ISocket | | Receiving failed.:
|
||||
com.group.service.io.TSocketException
|
||||
at com.group.service.io.SocketTcp.__read(SocketTcp.java:130)
|
||||
at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19)
|
||||
at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70)
|
||||
at java.lang.Thread.run(Thread.java:750)
|
||||
04 二月 2026 | 16:24:45,774 | INFO | tstse | service.io.SocketEngine | | status : DisconnectByServer
|
||||
04 二月 2026 | 16:26:15,848 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdatePlayRoomJob | | del robot room:751474 player:[176545,909321] fake_json:1
|
||||
04 二月 2026 | 16:26:45,840 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdatePlayRoomJob | | del robot room:580977 player:[772988,380267] fake_json:1
|
||||
04 二月 2026 | 16:28:11,130 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdatePlayRoomJob | | del robot room:742665 player:[624684,287696] fake_json:1
|
||||
04 二月 2026 | 16:28:20,853 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdatePlayRoomJob | | del robot room:965585 player:[807782,153276] fake_json:1
|
||||
04 二月 2026 | 16:30:26,512 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdatePlayRoomJob | | del robot room:417703 player:[446881,745978] fake_json:1
|
||||
04 二月 2026 | 16:35:18,858 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdatePlayRoomJob | | del robot room:885281 player:[751231,516400] fake_json:1
|
||||
04 二月 2026 | 16:35:18,928 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdatePlayRoomJob | | del robot room:885281 player:[751231,516400] fake_json:1
|
||||
04 二月 2026 | 16:35:25,913 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdatePlayRoomJob | | del robot room:787124 player:[268301,426015] fake_json:1
|
||||
04 二月 2026 | 16:37:16,447 | INFO | qtp391618063-130 | group.controller.GroupController | | jefe_test: 115777
|
||||
04 二月 2026 | 16:37:16,829 | INFO | qtp391618063-130 | taurus.web.WebFilter | | action: get_groups[{user}:115777] time:761ms
|
||||
04 二月 2026 | 16:37:17,400 | INFO | qtp391618063-131 | taurus.web.WebFilter | | action: enter_group[{user}:115777] time:460ms
|
||||
04 二月 2026 | 16:37:18,220 | INFO | qtp391618063-120 | taurus.web.WebFilter | | action: join_room[{user}:115777] time:1273ms
|
||||
04 二月 2026 | 16:38:16,070 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdatePlayRoomJob | | del robot room:578016 player:[997151,768647] fake_json:1
|
||||
04 二月 2026 | 16:38:31,060 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdatePlayRoomJob | | del robot room:133397 player:[117543,893772] fake_json:1
|
||||
04 二月 2026 | 16:40:11,144 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdatePlayRoomJob | | del robot room:372933 player:[325465,193548] fake_json:1
|
||||
04 二月 2026 | 16:41:15,999 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdatePlayRoomJob | | del robot room:142252 player:[298423,990477] fake_json:1
|
||||
04 二月 2026 | 16:42:06,416 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdatePlayRoomJob | | del robot room:451170 player:[559763,265830] fake_json:1
|
||||
04 二月 2026 | 16:43:46,318 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdatePlayRoomJob | | del robot room:400324 player:[693996,362003] fake_json:1
|
||||
04 二月 2026 | 16:44:11,453 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdatePlayRoomJob | | del robot room:992582 player:[826627,296214] fake_json:1
|
||||
04 二月 2026 | 16:46:05,988 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdatePlayRoomJob | | del robot room:940744 player:[774088,378632] fake_json:1
|
||||
04 二月 2026 | 16:47:46,149 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdatePlayRoomJob | | del robot room:740851 player:[265830,198184] fake_json:1
|
||||
04 二月 2026 | 17:47:21,143 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdatePlayRoomJob | | del robot room:330849 player:[461205,520191] fake_json:1
|
||||
04 二月 2026 | 17:47:21,726 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdatePlayRoomJob | | del robot room:785717 player:[609966,193548] fake_json:1
|
||||
04 二月 2026 | 17:47:30,880 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdatePlayRoomJob | | del robot room:785717 player:[609966,193548] fake_json:1
|
||||
04 二月 2026 | 17:47:31,682 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdatePlayRoomJob | | del robot room:330849 player:[461205,520191] fake_json:1
|
||||
04 二月 2026 | 17:48:51,277 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdatePlayRoomJob | | del robot room:840244 player:[161367,877472] fake_json:1
|
||||
04 二月 2026 | 17:49:15,965 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdatePlayRoomJob | | del robot room:330433 player:[455295,771035] fake_json:1
|
||||
04 二月 2026 | 17:51:40,823 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdatePlayRoomJob | | del robot room:786319 player:[805963,582578] fake_json:1
|
||||
04 二月 2026 | 17:52:40,881 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdatePlayRoomJob | | del robot room:795690 player:[132277,733468] fake_json:1
|
||||
04 二月 2026 | 17:54:30,946 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdatePlayRoomJob | | del robot room:487446 player:[394446,772988] fake_json:1
|
||||
04 二月 2026 | 17:55:11,208 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdatePlayRoomJob | | del robot room:569922 player:[755783,893772] fake_json:1
|
||||
04 二月 2026 | 17:57:10,931 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdatePlayRoomJob | | del robot room:849837 player:[291453,987020] fake_json:1
|
||||
04 二月 2026 | 17:58:00,925 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdatePlayRoomJob | | del robot room:846448 player:[461205,909321] fake_json:1
|
||||
04 二月 2026 | 17:58:18,146 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 17:58:18,189 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 17:59:35,879 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 17:59:35,923 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 18:18:06,038 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 18:18:06,077 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 18:18:33,917 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 18:18:33,957 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 18:19:52,101 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 18:19:52,140 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 18:19:57,203 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdatePlayRoomJob | | del robot room:944036 player:[198184,991538] fake_json:1
|
||||
04 二月 2026 | 18:20:11,158 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 18:20:11,199 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 18:20:16,326 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdatePlayRoomJob | | del robot room:754798 player:[285195,152827] fake_json:1
|
||||
04 二月 2026 | 18:21:29,490 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 18:21:29,536 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 18:21:37,000 | INFO | qtp391618063-65 | group.controller.GroupController | | jefe_test: 115777
|
||||
04 二月 2026 | 18:21:37,519 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: get_groups[{user}:115777] time:833ms
|
||||
04 二月 2026 | 18:21:38,727 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: enter_group[{user}:115777] time:425ms
|
||||
04 二月 2026 | 18:21:41,511 | INFO | qtp391618063-63 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 18:21:43,526 | INFO | qtp391618063-63 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:2377ms
|
||||
04 二月 2026 | 18:21:43,642 | INFO | tstse | service.io.SocketEngine | | status : Connect
|
||||
04 二月 2026 | 18:22:30,000 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 18:22:30,039 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 18:22:43,143 | INFO | qtp391618063-64 | group.controller.GroupController | | jefe_test: 115777
|
||||
04 二月 2026 | 18:22:43,526 | INFO | qtp391618063-64 | taurus.web.WebFilter | | action: get_groups[{user}:115777] time:540ms
|
||||
04 二月 2026 | 18:22:44,751 | INFO | qtp391618063-66 | taurus.web.WebFilter | | action: enter_group[{user}:115777] time:529ms
|
||||
04 二月 2026 | 18:22:51,739 | INFO | qtp391618063-62 | taurus.web.WebFilter | | action: join_room[{user}:115777] time:2976ms
|
||||
04 二月 2026 | 18:22:57,859 | INFO | qtp391618063-58 | taurus.web.WebFilter | | action: join_room[{user}:115777] time:392ms
|
||||
04 二月 2026 | 18:22:59,623 | INFO | qtp391618063-64 | taurus.web.WebFilter | | action: join_room[{user}:115777] time:508ms
|
||||
04 二月 2026 | 18:23:01,381 | INFO | qtp391618063-61 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 18:23:03,479 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:2611ms
|
||||
04 二月 2026 | 18:24:41,930 | INFO | qtp391618063-70 | taurus.web.WebFilter | | action: join_room[{user}:115777] time:510ms
|
||||
04 二月 2026 | 18:24:45,877 | INFO | qtp391618063-64 | taurus.web.WebFilter | | action: join_room[{user}:115777] time:2077ms
|
||||
04 二月 2026 | 18:25:28,109 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 18:25:28,154 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 18:25:32,107 | INFO | qtp391618063-62 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 18:25:33,953 | INFO | qtp391618063-62 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:2354ms
|
||||
04 二月 2026 | 18:25:34,116 | INFO | tstse | service.io.SocketEngine | | status : Connect
|
||||
04 二月 2026 | 20:14:55,906 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 20:14:55,985 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 20:16:12,778 | INFO | qtp391618063-60 | group.controller.GroupController | | jefe_test: 112233
|
||||
04 二月 2026 | 20:16:13,139 | INFO | qtp391618063-60 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:494ms
|
||||
04 二月 2026 | 20:16:14,678 | INFO | qtp391618063-64 | taurus.web.WebFilter | | action: enter_group[{user}:112233] time:529ms
|
||||
04 二月 2026 | 20:16:28,771 | INFO | qtp391618063-66 | taurus.web.WebFilter | | action: join_room[{user}:112233] time:378ms
|
||||
04 二月 2026 | 20:16:32,422 | INFO | qtp391618063-67 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 20:16:33,969 | INFO | qtp391618063-67 | taurus.web.WebFilter | | action: match_room[{user}:112233] time:1830ms
|
||||
04 二月 2026 | 20:17:16,376 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 20:17:16,464 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 20:17:26,220 | INFO | qtp391618063-60 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 20:17:27,241 | INFO | qtp391618063-60 | taurus.web.WebFilter | | action: match_room[{user}:112233] time:1328ms
|
||||
04 二月 2026 | 20:19:18,588 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: join_room[{user}:112233] time:256ms
|
||||
04 二月 2026 | 20:19:21,209 | INFO | qtp391618063-66 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 20:19:22,123 | INFO | qtp391618063-66 | taurus.web.WebFilter | | action: match_room[{user}:112233] time:1320ms
|
||||
04 二月 2026 | 20:19:22,346 | INFO | tstse | service.io.SocketEngine | | status : Connect
|
||||
04 二月 2026 | 20:24:25,725 | ERROR | Thread-32 | service.io.ISocket | | Receiving failed.:
|
||||
com.group.service.io.TSocketException
|
||||
at com.group.service.io.SocketTcp.__read(SocketTcp.java:130)
|
||||
at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19)
|
||||
at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70)
|
||||
at java.lang.Thread.run(Thread.java:750)
|
||||
04 二月 2026 | 20:24:25,765 | INFO | tstse | service.io.SocketEngine | | status : DisconnectByServer
|
||||
04 二月 2026 | 20:29:07,054 | INFO | qtp391618063-66 | group.controller.GroupController | | jefe_test: 112233
|
||||
04 二月 2026 | 20:29:07,410 | INFO | qtp391618063-66 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:496ms
|
||||
04 二月 2026 | 20:29:16,413 | INFO | qtp391618063-89 | taurus.web.WebFilter | | action: enter_group[{user}:112233] time:362ms
|
||||
04 二月 2026 | 20:29:21,849 | INFO | qtp391618063-78 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 20:29:23,099 | INFO | qtp391618063-78 | taurus.web.WebFilter | | action: match_room[{user}:112233] time:1436ms
|
||||
04 二月 2026 | 20:29:23,187 | INFO | tstse | service.io.SocketEngine | | status : Connect
|
||||
04 二月 2026 | 21:03:09,855 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 21:03:09,904 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 21:04:28,839 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 21:04:28,892 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 21:04:53,666 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 21:04:53,715 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 21:05:24,711 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 21:05:24,764 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 21:07:16,387 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 21:07:16,436 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 21:07:30,534 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 21:07:30,579 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 21:08:24,578 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 21:08:24,623 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 21:09:04,382 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 21:09:04,430 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 21:10:18,221 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 21:10:18,268 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 21:11:32,527 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 21:11:32,569 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 21:29:19,947 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 21:29:19,993 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 21:41:20,877 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 21:41:20,926 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 21:46:53,882 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 21:46:53,927 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -0,0 +1,13 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="CompilerConfiguration">
|
||||
<annotationProcessing>
|
||||
<profile name="Maven default annotation processors profile" enabled="true">
|
||||
<sourceOutputDir name="target/generated-sources/annotations" />
|
||||
<sourceTestOutputDir name="target/generated-test-sources/test-annotations" />
|
||||
<outputRelativeToContentRoot value="true" />
|
||||
<module name="web_group" />
|
||||
</profile>
|
||||
</annotationProcessing>
|
||||
</component>
|
||||
</project>
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="Encoding">
|
||||
<file url="file://$PROJECT_DIR$/src/main/java" charset="UTF-8" />
|
||||
<file url="file://$PROJECT_DIR$/src/main/resources" charset="UTF-8" />
|
||||
</component>
|
||||
</project>
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="RemoteRepositoriesConfiguration">
|
||||
<remote-repository>
|
||||
<option name="id" value="central" />
|
||||
<option name="name" value="Central Repository" />
|
||||
<option name="url" value="https://repo.maven.apache.org/maven2" />
|
||||
</remote-repository>
|
||||
<remote-repository>
|
||||
<option name="id" value="central" />
|
||||
<option name="name" value="Maven Central repository" />
|
||||
<option name="url" value="https://repo1.maven.org/maven2" />
|
||||
</remote-repository>
|
||||
<remote-repository>
|
||||
<option name="id" value="jboss.community" />
|
||||
<option name="name" value="JBoss Community repository" />
|
||||
<option name="url" value="https://repository.jboss.org/nexus/content/repositories/public/" />
|
||||
</remote-repository>
|
||||
</component>
|
||||
</project>
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ExternalStorageConfigurationManager" enabled="true" />
|
||||
<component name="MavenProjectsManager">
|
||||
<option name="originalFiles">
|
||||
<list>
|
||||
<option value="$PROJECT_DIR$/pom.xml" />
|
||||
</list>
|
||||
</option>
|
||||
</component>
|
||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" project-jdk-name="1.8" project-jdk-type="JavaSDK" />
|
||||
</project>
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="VcsDirectoryMappings">
|
||||
<mapping directory="$PROJECT_DIR$/../.." vcs="Git" />
|
||||
</component>
|
||||
</project>
|
||||
|
|
@ -0,0 +1,118 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="AutoImportSettings">
|
||||
<option name="autoReloadType" value="SELECTIVE" />
|
||||
</component>
|
||||
<component name="ChangeListManager">
|
||||
<list default="true" id="0b5e96d5-7630-407a-8e4f-0ff0311ccd8b" name="Changes" comment="">
|
||||
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/main/java/com/group/MainServer.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/group/MainServer.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/main/java/com/group/job/UpdatePlayRoomJob.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/group/job/UpdatePlayRoomJob.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/main/java/com/group/job/UpdateRobotRoomJob.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/group/job/UpdateRobotRoomJob.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/main/java/com/group/service/GroupRoomService.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/group/service/GroupRoomService.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/main/webapp/config/taurus-core.xml" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/webapp/config/taurus-core.xml" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/main/webapp/logs/web_main.log" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/webapp/logs/web_main.log" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/target/ROOT.war" beforeDir="false" afterPath="$PROJECT_DIR$/target/ROOT.war" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/target/ROOT/WEB-INF/classes/com/group/MainServer.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/ROOT/WEB-INF/classes/com/group/MainServer.class" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/target/ROOT/WEB-INF/classes/com/group/job/UpdatePlayRoomJob.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/ROOT/WEB-INF/classes/com/group/job/UpdatePlayRoomJob.class" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/target/ROOT/WEB-INF/classes/com/group/job/UpdateRobotRoomJob.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/ROOT/WEB-INF/classes/com/group/job/UpdateRobotRoomJob.class" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/target/ROOT/WEB-INF/classes/com/group/service/GroupRoomService.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/ROOT/WEB-INF/classes/com/group/service/GroupRoomService.class" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/target/ROOT/WEB-INF/classes/com/group/service/GroupService.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/ROOT/WEB-INF/classes/com/group/service/GroupService.class" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/target/classes/com/group/MainServer.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/group/MainServer.class" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/target/classes/com/group/job/UpdatePlayRoomJob.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/group/job/UpdatePlayRoomJob.class" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/target/classes/com/group/job/UpdateRobotRoomJob.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/group/job/UpdateRobotRoomJob.class" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/target/classes/com/group/service/GroupRoomService.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/group/service/GroupRoomService.class" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/target/classes/com/group/service/GroupService.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/group/service/GroupService.class" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/../../libs/game_common/src/main/java/com/game/data/Player.java" beforeDir="false" afterPath="$PROJECT_DIR$/../../libs/game_common/src/main/java/com/game/data/Player.java" afterDir="false" />
|
||||
</list>
|
||||
<option name="SHOW_DIALOG" value="false" />
|
||||
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
||||
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
|
||||
<option name="LAST_RESOLUTION" value="IGNORE" />
|
||||
</component>
|
||||
<component name="Git.Settings">
|
||||
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$/../.." />
|
||||
</component>
|
||||
<component name="ProjectColorInfo">{
|
||||
"associatedIndex": 5
|
||||
}</component>
|
||||
<component name="ProjectId" id="3976D3jFfFaRPSUxbaPEaUpbzE9" />
|
||||
<component name="ProjectViewState">
|
||||
<option name="hideEmptyMiddlePackages" value="true" />
|
||||
<option name="showLibraryContents" value="true" />
|
||||
</component>
|
||||
<component name="PropertiesComponent">{
|
||||
"keyToString": {
|
||||
"Application.Main.executor": "Run",
|
||||
"Maven.web_group [clean].executor": "Run",
|
||||
"Maven.web_group [install].executor": "Run",
|
||||
"RunOnceActivity.ShowReadmeOnStart": "true",
|
||||
"git-widget-placeholder": "master",
|
||||
"kotlin-language-version-configured": "true",
|
||||
"last_opened_file_path": "D:/project/changhongserver",
|
||||
"node.js.detected.package.eslint": "true",
|
||||
"node.js.detected.package.tslint": "true",
|
||||
"node.js.selected.package.eslint": "(autodetect)",
|
||||
"node.js.selected.package.tslint": "(autodetect)",
|
||||
"nodejs_package_manager_path": "npm",
|
||||
"vue.rearranger.settings.migration": "true"
|
||||
}
|
||||
}</component>
|
||||
<component name="RecentsManager">
|
||||
<key name="CopyFile.RECENT_KEYS">
|
||||
<recent name="D:\fengyeserver\xtserver_anchou\game_web\web_group\src\main\java\com\group\service" />
|
||||
</key>
|
||||
<key name="CopyClassDialog.RECENTS_KEY">
|
||||
<recent name="com.group.job" />
|
||||
<recent name="com.group.service" />
|
||||
</key>
|
||||
</component>
|
||||
<component name="RunManager">
|
||||
<configuration name="Main" type="Application" factoryName="Application" temporary="true" nameIsGenerated="true">
|
||||
<option name="MAIN_CLASS_NAME" value="web_group.Main" />
|
||||
<module name="web_group" />
|
||||
<extension name="coverage">
|
||||
<pattern>
|
||||
<option name="PATTERN" value="web_group.*" />
|
||||
<option name="ENABLED" value="true" />
|
||||
</pattern>
|
||||
</extension>
|
||||
<method v="2">
|
||||
<option name="Make" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
<recent_temporary>
|
||||
<list>
|
||||
<item itemvalue="Application.Main" />
|
||||
</list>
|
||||
</recent_temporary>
|
||||
</component>
|
||||
<component name="SharedIndexes">
|
||||
<attachedChunks>
|
||||
<set>
|
||||
<option value="bundled-jdk-9f38398b9061-18abd8497189-intellij.indexing.shared.core-IU-241.14494.240" />
|
||||
<option value="bundled-js-predefined-1d06a55b98c1-74d2a5396914-JavaScript-IU-241.14494.240" />
|
||||
</set>
|
||||
</attachedChunks>
|
||||
</component>
|
||||
<component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="application-level" UseSingleDictionary="true" transferred="true" />
|
||||
<component name="TaskManager">
|
||||
<task active="true" id="Default" summary="Default task">
|
||||
<changelist id="0b5e96d5-7630-407a-8e4f-0ff0311ccd8b" name="Changes" comment="" />
|
||||
<created>1770034638903</created>
|
||||
<option name="number" value="Default" />
|
||||
<option name="presentableId" value="Default" />
|
||||
<updated>1770034638903</updated>
|
||||
<workItem from="1770034639979" duration="1384000" />
|
||||
<workItem from="1770184768302" duration="11751000" />
|
||||
<workItem from="1770207182971" duration="24200000" />
|
||||
<workItem from="1770246092084" duration="3540000" />
|
||||
<workItem from="1770292300535" duration="7319000" />
|
||||
<workItem from="1770368267167" duration="1586000" />
|
||||
</task>
|
||||
<servers />
|
||||
</component>
|
||||
<component name="TypeScriptGeneratedFilesManager">
|
||||
<option name="version" value="3" />
|
||||
</component>
|
||||
</project>
|
||||
|
|
@ -0,0 +1,96 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<serivce-core>
|
||||
<log4jPath>log4j.properties</log4jPath>
|
||||
|
||||
<plugin>
|
||||
<id>database</id>
|
||||
<class>com.taurus.core.plugin.database.DataBasePlugin</class>
|
||||
|
||||
<poolConfig>
|
||||
<!-- 最大连接数, 默认10个 -->
|
||||
<maxPool>100</maxPool>
|
||||
<!-- 最小空闲连接数, 默认0个 -->
|
||||
<minIdle>10</minIdle>
|
||||
<!-- 配置获取连接等待超时的时间,单位是毫秒, 默认180000 -->
|
||||
<maxLifetime>180000</maxLifetime>
|
||||
<!--hsqldb - "select 1 from INFORMATION_SCHEMA.SYSTEM_USERS"
|
||||
Oracle - "select 1 from dual"
|
||||
DB2 - "select 1 from sysibm.sysdummy1"
|
||||
mysql - "select 1" -->
|
||||
<validationQuery>select 1</validationQuery>
|
||||
<!-- 连接超时时间,默认30000-->
|
||||
<connectionTimeout>10000</connectionTimeout>
|
||||
<!-- 待机超时时间,单位是毫秒, 默认60000 -->
|
||||
<idleTimeout>60000</idleTimeout>
|
||||
|
||||
<!-- jdbc 属性 -->
|
||||
<props>
|
||||
<useSSL>false</useSSL>
|
||||
<useUnicode>true</useUnicode>
|
||||
<characterEncoding>utf-8</characterEncoding>
|
||||
<!-- 服务器时区 -->
|
||||
<serverTimezone>UTC</serverTimezone>
|
||||
<!-- 预编译缓存 -->
|
||||
<cachePrepStmts>true</cachePrepStmts>
|
||||
<!-- 预编译缓存大小 -->
|
||||
<prepStmtCacheSize>250</prepStmtCacheSize>
|
||||
<!-- 控制长度多大的sql可以被缓存 -->
|
||||
<prepStmtCacheSqlLimit>2048</prepStmtCacheSqlLimit>
|
||||
</props>
|
||||
</poolConfig>
|
||||
|
||||
<databases>
|
||||
<db>
|
||||
<name>db1</name>
|
||||
<driverName>com.mysql.cj.jdbc.Driver</driverName>
|
||||
<jdbcUrl>jdbc:mysql://192.168.0.11:6060/wb_game</jdbcUrl>
|
||||
<userName>proto_ff</userName>
|
||||
<password>37du_game</password>
|
||||
</db>
|
||||
</databases>
|
||||
</plugin>
|
||||
|
||||
<plugin>
|
||||
<id>redis</id>
|
||||
<class>com.taurus.core.plugin.redis.RedisPlugin</class>
|
||||
|
||||
<poolConfig>
|
||||
<!-- 最大连接数, 默认8个 -->
|
||||
<maxTotal>80</maxTotal>
|
||||
<!-- 最大空闲连接数, 默认8个 -->
|
||||
<maxIdle>20</maxIdle>
|
||||
<!-- 最小空闲连接数, 默认0个 -->
|
||||
<minIdle>5</minIdle>
|
||||
<!-- 获取连接时的最大等待毫秒数(如果设置为阻塞时BlockWhenExhausted),如果超时就抛异常, 小于零:阻塞不确定的时间, 默认-1 -->
|
||||
<maxWaitMillis>-1</maxWaitMillis>
|
||||
<!-- 在borrow一个jedis实例时,是否提前进行alidate操作, 默认false -->
|
||||
<testOnBorrow>true</testOnBorrow>
|
||||
<!-- 在return给pool时,是否提前进行validate操作, 默认false -->
|
||||
<testOnReturn>true</testOnReturn>
|
||||
<!-- 表示有一个idle object evitor线程对idle object进行扫描,如果validate失败,
|
||||
此object会被从pool中drop掉;这一项只有在timeBetweenEvictionRunsMillis大于0时才有意义, 默认true -->
|
||||
<testWhileIdle>true</testWhileIdle>
|
||||
<!-- 表示idle object evitor每次扫描的最多的对象数, 默认-1 -->
|
||||
<numTestsPerEvictionRun>100</numTestsPerEvictionRun>
|
||||
<!-- 表示一个对象至少停留在idle状态的最短时间,然后才能被idle object evitor扫描并驱逐;
|
||||
这一项只有在timeBetweenEvictionRunsMillis大于0时才有意义 , 默认60000-->
|
||||
<minEvictableIdleTimeMillis>60000</minEvictableIdleTimeMillis>
|
||||
<!-- 逐出扫描的时间间隔(毫秒) 如果为负数,则不运行逐出线程, 默认30000 -->
|
||||
<timeBetweenEvictionRunsMillis>30000</timeBetweenEvictionRunsMillis>
|
||||
<!-- 在minEvictableIdleTimeMillis基础上,加入了至少minIdle个对象已经在pool里面了。
|
||||
如果为-1,evicted不会根据idle time驱逐任何对象。如果minEvictableIdleTimeMillisd大于0,
|
||||
则此项设置无意义,且只有在timeBetweenEvictionRunsMillis大于0时才有意义,默认1800000 -->
|
||||
<softMinEvictableIdleTimeMillis>1800000</softMinEvictableIdleTimeMillis>
|
||||
<!-- 连接耗尽时是否阻塞, false报异常,ture阻塞直到超时, 默认true -->
|
||||
<blockWhenExhausted>true</blockWhenExhausted>
|
||||
</poolConfig>
|
||||
|
||||
<infos>
|
||||
<info name="group1_db0" host="127.0.0.1" password="123456" port="6379" database="0" timeout="5000"/>
|
||||
<info name="group1_db1" host="127.0.0.1" password="123456" port="6379" database="1" timeout="5000"/>
|
||||
<info name="group1_db5" host="127.0.0.1" password="123456" port="6379" database="5" timeout="5000"/>
|
||||
<info name="group1_db8" host="127.0.0.1" password="123456" port="6379" database="8" timeout="5000"/>
|
||||
<info name="group1_db10" host="127.0.0.1" password="123456" port="6379" database="10" timeout="5000"/>
|
||||
</infos>
|
||||
</plugin>
|
||||
</serivce-core>
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
local tag_hp = tonumber(redis.call('hget', KEYS[1],'hp'))
|
||||
local bank_hp = tonumber(redis.call('hget', KEYS[2],KEYS[3]))
|
||||
bank_hp = not bank_hp and 0 or bank_hp
|
||||
local hp = tonumber(ARGV[1])
|
||||
local opt = tonumber(ARGV[2])
|
||||
if opt==0 then
|
||||
if bank_hp < hp then
|
||||
return 3
|
||||
end
|
||||
bank_hp = redis.call('hincrBy',KEYS[2],KEYS[3],-hp)
|
||||
tag_hp = redis.call('hincrBy',KEYS[1],'hp',hp)
|
||||
else
|
||||
if tag_hp < hp then
|
||||
return 4
|
||||
end
|
||||
bank_hp = redis.call('hincrBy',KEYS[2],KEYS[3],hp)
|
||||
tag_hp = redis.call('hincrBy',KEYS[1],'hp',-hp)
|
||||
end
|
||||
return {tag_hp,bank_hp}
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
|
||||
log4j.rootLogger = INFO,consoleAppender,fileAppender
|
||||
|
||||
# ConsoleAppender
|
||||
log4j.appender.consoleAppender=org.apache.log4j.ConsoleAppender
|
||||
log4j.appender.consoleAppender.layout=org.apache.log4j.PatternLayout
|
||||
log4j.appender.consoleAppender.layout.ConversionPattern=%d{HH:mm:ss,SSS} %-5p [%t] %c{2} %3x - %m%n
|
||||
|
||||
|
||||
# Regular FileAppender
|
||||
log4j.appender.fileAppender=org.apache.log4j.DailyRollingFileAppender
|
||||
log4j.appender.fileAppender.layout=org.apache.log4j.PatternLayout
|
||||
log4j.appender.fileAppender.File=${WORKDIR}/logs/web_main.log
|
||||
log4j.appender.fileAppender.layout.ConversionPattern=%d{dd MMM yyyy | HH:mm:ss,SSS} | %-5p | %t | %c{3} | %3x | %m%n
|
||||
log4j.appender.fileAppender.Encoding=UTF-8
|
||||
log4j.appender.fileAppender.DatePattern='.'yyyy-MM-dd
|
||||
log4j.appender.dailyFile.Append=true
|
||||
|
||||
# The file is rolled over very day
|
||||
log4j.appender.fileAppender.DatePattern ='.'yyyy-MM-dd
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
-- redis.call('select',0)
|
||||
local mgr_hp = tonumber(redis.call('hget', KEYS[1],'hp'))
|
||||
local tag_hp = tonumber(redis.call('hget', KEYS[2],'hp'))
|
||||
|
||||
local ulev = tonumber(ARGV[2])
|
||||
local hp = tonumber(ARGV[1])
|
||||
if ulev == 3 or ulev == 2 then
|
||||
if hp > 0 and mgr_hp <hp then
|
||||
return 3
|
||||
else
|
||||
if hp < 0 and tag_hp < math.abs(hp) then
|
||||
return 4
|
||||
end
|
||||
mgr_hp = redis.call('hincrBy',KEYS[1],'hp',-hp)
|
||||
tag_hp = redis.call('hincrBy',KEYS[2],'hp',hp)
|
||||
end
|
||||
else
|
||||
tag_hp = tag_hp + hp
|
||||
if tag_hp < 0 then
|
||||
return 4
|
||||
else
|
||||
redis.call('hincrBy',KEYS[2],'hp',hp)
|
||||
end
|
||||
end
|
||||
return {mgr_hp,tag_hp}
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
local reward_hp = tonumber(redis.call('get', KEYS[1]))
|
||||
local hp = tonumber(ARGV[1])
|
||||
local tag_hp = 0
|
||||
if hp > 0 and reward_hp < hp then
|
||||
return 3
|
||||
else
|
||||
reward_hp = redis.call('incrBy',KEYS[1],-hp)
|
||||
tag_hp = redis.call('hincrBy',KEYS[2],'hp',hp)
|
||||
end
|
||||
return {reward_hp,tag_hp}
|
||||
|
|
@ -0,0 +1,99 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<serivce-core>
|
||||
<log4jPath>log4j.properties</log4jPath>
|
||||
|
||||
<plugin>
|
||||
<id>database</id>
|
||||
<class>com.taurus.core.plugin.database.DataBasePlugin</class>
|
||||
|
||||
<poolConfig>
|
||||
<!-- 最大连接数, 默认10个 -->
|
||||
<maxPool>100</maxPool>
|
||||
<!-- 最小空闲连接数, 默认0个 -->
|
||||
<minIdle>5</minIdle>
|
||||
<!-- 配置获取连接等待超时的时间,单位是毫秒, 默认180000 -->
|
||||
<maxLifetime>180000</maxLifetime>
|
||||
<!--hsqldb - "select 1 from INFORMATION_SCHEMA.SYSTEM_USERS"
|
||||
Oracle - "select 1 from dual"
|
||||
DB2 - "select 1 from sysibm.sysdummy1"
|
||||
mysql - "select 1" -->
|
||||
<validationQuery>select 1</validationQuery>
|
||||
<!-- 连接超时时间,默认30000-->
|
||||
<connectionTimeout>10000</connectionTimeout>
|
||||
<!-- 待机超时时间,单位是毫秒, 默认60000 -->
|
||||
<idleTimeout>60000</idleTimeout>
|
||||
|
||||
<!-- jdbc 属性 -->
|
||||
<props>
|
||||
<useSSL>false</useSSL>
|
||||
<useUnicode>true</useUnicode>
|
||||
<characterEncoding>utf-8</characterEncoding>
|
||||
<!-- 服务器时区 -->
|
||||
<serverTimezone>UTC</serverTimezone>
|
||||
<!-- 预编译缓存 -->
|
||||
<cachePrepStmts>true</cachePrepStmts>
|
||||
<!-- 预编译缓存大小 -->
|
||||
<prepStmtCacheSize>250</prepStmtCacheSize>
|
||||
<!-- 控制长度多大的sql可以被缓存 -->
|
||||
<prepStmtCacheSqlLimit>2048</prepStmtCacheSqlLimit>
|
||||
</props>
|
||||
</poolConfig>
|
||||
|
||||
<databases>
|
||||
<db>
|
||||
<name>db1</name>
|
||||
<driverName>com.mysql.cj.jdbc.Driver</driverName>
|
||||
<jdbcUrl>jdbc:mysql://192.168.0.11:6060/wb_game</jdbcUrl>
|
||||
<userName>proto_ff</userName>
|
||||
<password>37du_game</password>
|
||||
</db>
|
||||
</databases>
|
||||
</plugin>
|
||||
|
||||
<plugin>
|
||||
<id>redis</id>
|
||||
<class>com.taurus.core.plugin.redis.RedisPlugin</class>
|
||||
|
||||
<poolConfig>
|
||||
<!-- 最大连接数, 默认8个 -->
|
||||
<maxTotal>80</maxTotal>
|
||||
<!-- 最大空闲连接数, 默认8个 -->
|
||||
<maxIdle>8</maxIdle>
|
||||
<!-- 最小空闲连接数, 默认0个 -->
|
||||
<minIdle>2</minIdle>
|
||||
<!-- 获取连接时的最大等待毫秒数(如果设置为阻塞时BlockWhenExhausted),如果超时就抛异常, 小于零:阻塞不确定的时间, 默认-1 -->
|
||||
<maxWaitMillis>-1</maxWaitMillis>
|
||||
<!-- 在borrow一个jedis实例时,是否提前进行alidate操作, 默认false -->
|
||||
<testOnBorrow>true</testOnBorrow>
|
||||
<!-- 在return给pool时,是否提前进行validate操作, 默认false -->
|
||||
<testOnReturn>true</testOnReturn>
|
||||
<!-- 表示有一个idle object evitor线程对idle object进行扫描,如果validate失败,
|
||||
此object会被从pool中drop掉;这一项只有在timeBetweenEvictionRunsMillis大于0时才有意义, 默认true -->
|
||||
<testWhileIdle>true</testWhileIdle>
|
||||
<!-- 表示idle object evitor每次扫描的最多的对象数, 默认-1 -->
|
||||
<numTestsPerEvictionRun>100</numTestsPerEvictionRun>
|
||||
<!-- 表示一个对象至少停留在idle状态的最短时间,然后才能被idle object evitor扫描并驱逐;
|
||||
这一项只有在timeBetweenEvictionRunsMillis大于0时才有意义 , 默认60000-->
|
||||
<minEvictableIdleTimeMillis>60000</minEvictableIdleTimeMillis>
|
||||
<!-- 逐出扫描的时间间隔(毫秒) 如果为负数,则不运行逐出线程, 默认30000 -->
|
||||
<timeBetweenEvictionRunsMillis>30000</timeBetweenEvictionRunsMillis>
|
||||
<!-- 在minEvictableIdleTimeMillis基础上,加入了至少minIdle个对象已经在pool里面了。
|
||||
如果为-1,evicted不会根据idle time驱逐任何对象。如果minEvictableIdleTimeMillisd大于0,
|
||||
则此项设置无意义,且只有在timeBetweenEvictionRunsMillis大于0时才有意义,默认1800000 -->
|
||||
<softMinEvictableIdleTimeMillis>1800000</softMinEvictableIdleTimeMillis>
|
||||
<!-- 连接耗尽时是否阻塞, false报异常,ture阻塞直到超时, 默认true -->
|
||||
<blockWhenExhausted>true</blockWhenExhausted>
|
||||
</poolConfig>
|
||||
|
||||
<infos>
|
||||
<info name="group1_db0" host="127.0.0.1" password="123456" port="6379" database="0" timeout="5000"/>
|
||||
<info name="group1_db1" host="127.0.0.1" password="123456" port="6379" database="1" timeout="5000"/>
|
||||
<info name="group1_db2" host="127.0.0.1" password="123456" port="6379" database="2" timeout="5000"/>
|
||||
<info name="group1_db5" host="127.0.0.1" password="123456" port="6379" database="5" timeout="5000"/>
|
||||
<info name="group1_db8" host="127.0.0.1" password="123456" port="6379" database="8" timeout="5000"/>
|
||||
<info name="group1_db9" host="127.0.0.1" password="123456" port="6379" database="9" timeout="5000"/>
|
||||
<info name="group1_db10" host="127.0.0.1" password="123456" port="6379" database="10" timeout="5000"/>
|
||||
<info name="group1_db11" host="127.0.0.1" password="123456" port="6379" database="11" timeout="5000"/>
|
||||
</infos>
|
||||
</plugin>
|
||||
</serivce-core>
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
local mgr_hp = tonumber(redis.call('hget', KEYS[1],'hp'))
|
||||
local tag_hp = tonumber(redis.call('hget', KEYS[2],'hp'))
|
||||
mgr_hp = not mgr_hp and 0 or mgr_hp
|
||||
tag_hp = not tag_hp and 0 or tag_hp
|
||||
local hp = tonumber(ARGV[1])
|
||||
if hp > 0 and mgr_hp <hp then
|
||||
return 3
|
||||
else
|
||||
mgr_hp = redis.call('hincrBy',KEYS[1],'hp',-hp)
|
||||
tag_hp = redis.call('hincrBy',KEYS[2],'hp',hp)
|
||||
end
|
||||
return {mgr_hp,tag_hp}
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
local tag_hp = tonumber(redis.call('hget', KEYS[1],'hp'))
|
||||
local bank_hp = tonumber(redis.call('hget', KEYS[2],KEYS[3]))
|
||||
bank_hp = not bank_hp and 0 or bank_hp
|
||||
local hp = tonumber(ARGV[1])
|
||||
local opt = tonumber(ARGV[2])
|
||||
if opt==0 then
|
||||
if bank_hp < hp then
|
||||
return 3
|
||||
end
|
||||
bank_hp = redis.call('hincrBy',KEYS[2],KEYS[3],-hp)
|
||||
tag_hp = redis.call('hincrBy',KEYS[1],'hp',hp)
|
||||
else
|
||||
if tag_hp < hp then
|
||||
return 4
|
||||
end
|
||||
bank_hp = redis.call('hincrBy',KEYS[2],KEYS[3],hp)
|
||||
tag_hp = redis.call('hincrBy',KEYS[1],'hp',-hp)
|
||||
end
|
||||
return {tag_hp,bank_hp}
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
|
||||
log4j.rootLogger = INFO,consoleAppender,fileAppender
|
||||
|
||||
# ConsoleAppender
|
||||
log4j.appender.consoleAppender=org.apache.log4j.ConsoleAppender
|
||||
log4j.appender.consoleAppender.layout=org.apache.log4j.PatternLayout
|
||||
log4j.appender.consoleAppender.layout.ConversionPattern=%d{HH:mm:ss,SSS} %-5p [%t] %c{2} %3x - %m%n
|
||||
|
||||
|
||||
# Regular FileAppender
|
||||
log4j.appender.fileAppender=org.apache.log4j.DailyRollingFileAppender
|
||||
log4j.appender.fileAppender.layout=org.apache.log4j.PatternLayout
|
||||
log4j.appender.fileAppender.File=${WORKDIR}/logs/web_main.log
|
||||
log4j.appender.fileAppender.layout.ConversionPattern=%d{dd MMM yyyy | HH:mm:ss,SSS} | %-5p | %t | %c{3} | %3x | %m%n
|
||||
log4j.appender.fileAppender.Encoding=UTF-8
|
||||
log4j.appender.fileAppender.DatePattern='.'yyyy-MM-dd
|
||||
log4j.appender.dailyFile.Append=true
|
||||
|
||||
# The file is rolled over very day
|
||||
log4j.appender.fileAppender.DatePattern ='.'yyyy-MM-dd
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
-- redis.call('select',0)
|
||||
local mgr_hp = tonumber(redis.call('hget', KEYS[1],'hp'))
|
||||
local tag_hp = tonumber(redis.call('hget', KEYS[2],'hp'))
|
||||
|
||||
local ulev = tonumber(ARGV[2])
|
||||
local hp = tonumber(ARGV[1])
|
||||
if ulev == 3 or ulev == 2 then
|
||||
if hp > 0 and mgr_hp <hp then
|
||||
return 3
|
||||
else
|
||||
if hp < 0 and tag_hp < math.abs(hp) then
|
||||
return 4
|
||||
end
|
||||
mgr_hp = redis.call('hincrBy',KEYS[1],'hp',-hp)
|
||||
tag_hp = redis.call('hincrBy',KEYS[2],'hp',hp)
|
||||
end
|
||||
else
|
||||
tag_hp = tag_hp + hp
|
||||
if tag_hp < 0 then
|
||||
return 4
|
||||
else
|
||||
redis.call('hincrBy',KEYS[2],'hp',hp)
|
||||
end
|
||||
end
|
||||
return {mgr_hp,tag_hp}
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
local reward_hp = tonumber(redis.call('get', KEYS[1]))
|
||||
local hp = tonumber(ARGV[1])
|
||||
local tag_hp = 0
|
||||
if hp > 0 and reward_hp < hp then
|
||||
return 3
|
||||
else
|
||||
reward_hp = redis.call('incrBy',KEYS[1],-hp)
|
||||
tag_hp = redis.call('hincrBy',KEYS[2],'hp',hp)
|
||||
end
|
||||
return {reward_hp,tag_hp}
|
||||
|
|
@ -0,0 +1,99 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<serivce-core>
|
||||
<log4jPath>log4j.properties</log4jPath>
|
||||
|
||||
<plugin>
|
||||
<id>database</id>
|
||||
<class>com.taurus.core.plugin.database.DataBasePlugin</class>
|
||||
|
||||
<poolConfig>
|
||||
<!-- 最大连接数, 默认10个 -->
|
||||
<maxPool>100</maxPool>
|
||||
<!-- 最小空闲连接数, 默认0个 -->
|
||||
<minIdle>1</minIdle>
|
||||
<!-- 配置获取连接等待超时的时间,单位是毫秒, 默认180000 -->
|
||||
<maxLifetime>180000</maxLifetime>
|
||||
<!--hsqldb - "select 1 from INFORMATION_SCHEMA.SYSTEM_USERS"
|
||||
Oracle - "select 1 from dual"
|
||||
DB2 - "select 1 from sysibm.sysdummy1"
|
||||
mysql - "select 1" -->
|
||||
<validationQuery>select 1</validationQuery>
|
||||
<!-- 连接超时时间,默认30000-->
|
||||
<connectionTimeout>10000</connectionTimeout>
|
||||
<!-- 待机超时时间,单位是毫秒, 默认60000 -->
|
||||
<idleTimeout>60000</idleTimeout>
|
||||
|
||||
<!-- jdbc 属性 -->
|
||||
<props>
|
||||
<useSSL>false</useSSL>
|
||||
<useUnicode>true</useUnicode>
|
||||
<characterEncoding>utf-8</characterEncoding>
|
||||
<!-- 服务器时区 -->
|
||||
<serverTimezone>UTC</serverTimezone>
|
||||
<!-- 预编译缓存 -->
|
||||
<cachePrepStmts>true</cachePrepStmts>
|
||||
<!-- 预编译缓存大小 -->
|
||||
<prepStmtCacheSize>250</prepStmtCacheSize>
|
||||
<!-- 控制长度多大的sql可以被缓存 -->
|
||||
<prepStmtCacheSqlLimit>2048</prepStmtCacheSqlLimit>
|
||||
</props>
|
||||
</poolConfig>
|
||||
|
||||
<databases>
|
||||
<db>
|
||||
<name>db1</name>
|
||||
<driverName>com.mysql.cj.jdbc.Driver</driverName>
|
||||
<jdbcUrl>jdbc:mysql://192.168.0.11:6060/wb_game</jdbcUrl>
|
||||
<userName>proto_ff</userName>
|
||||
<password>37du_game</password>
|
||||
</db>
|
||||
</databases>
|
||||
</plugin>
|
||||
|
||||
<plugin>
|
||||
<id>redis</id>
|
||||
<class>com.taurus.core.plugin.redis.RedisPlugin</class>
|
||||
|
||||
<poolConfig>
|
||||
<!-- 最大连接数, 默认8个 -->
|
||||
<maxTotal>80</maxTotal>
|
||||
<!-- 最大空闲连接数, 默认8个 -->
|
||||
<maxIdle>8</maxIdle>
|
||||
<!-- 最小空闲连接数, 默认0个 -->
|
||||
<minIdle>2</minIdle>
|
||||
<!-- 获取连接时的最大等待毫秒数(如果设置为阻塞时BlockWhenExhausted),如果超时就抛异常, 小于零:阻塞不确定的时间, 默认-1 -->
|
||||
<maxWaitMillis>-1</maxWaitMillis>
|
||||
<!-- 在borrow一个jedis实例时,是否提前进行alidate操作, 默认false -->
|
||||
<testOnBorrow>true</testOnBorrow>
|
||||
<!-- 在return给pool时,是否提前进行validate操作, 默认false -->
|
||||
<testOnReturn>true</testOnReturn>
|
||||
<!-- 表示有一个idle object evitor线程对idle object进行扫描,如果validate失败,
|
||||
此object会被从pool中drop掉;这一项只有在timeBetweenEvictionRunsMillis大于0时才有意义, 默认true -->
|
||||
<testWhileIdle>true</testWhileIdle>
|
||||
<!-- 表示idle object evitor每次扫描的最多的对象数, 默认-1 -->
|
||||
<numTestsPerEvictionRun>100</numTestsPerEvictionRun>
|
||||
<!-- 表示一个对象至少停留在idle状态的最短时间,然后才能被idle object evitor扫描并驱逐;
|
||||
这一项只有在timeBetweenEvictionRunsMillis大于0时才有意义 , 默认60000-->
|
||||
<minEvictableIdleTimeMillis>60000</minEvictableIdleTimeMillis>
|
||||
<!-- 逐出扫描的时间间隔(毫秒) 如果为负数,则不运行逐出线程, 默认30000 -->
|
||||
<timeBetweenEvictionRunsMillis>30000</timeBetweenEvictionRunsMillis>
|
||||
<!-- 在minEvictableIdleTimeMillis基础上,加入了至少minIdle个对象已经在pool里面了。
|
||||
如果为-1,evicted不会根据idle time驱逐任何对象。如果minEvictableIdleTimeMillisd大于0,
|
||||
则此项设置无意义,且只有在timeBetweenEvictionRunsMillis大于0时才有意义,默认1800000 -->
|
||||
<softMinEvictableIdleTimeMillis>1800000</softMinEvictableIdleTimeMillis>
|
||||
<!-- 连接耗尽时是否阻塞, false报异常,ture阻塞直到超时, 默认true -->
|
||||
<blockWhenExhausted>true</blockWhenExhausted>
|
||||
</poolConfig>
|
||||
|
||||
<infos>
|
||||
<info name="group1_db0" host="127.0.0.1" password="123456" port="6379" database="0" timeout="5000"/>
|
||||
<info name="group1_db1" host="127.0.0.1" password="123456" port="6379" database="1" timeout="5000"/>
|
||||
<info name="group1_db2" host="127.0.0.1" password="123456" port="6379" database="2" timeout="5000"/>
|
||||
<info name="group1_db5" host="127.0.0.1" password="123456" port="6379" database="5" timeout="5000"/>
|
||||
<info name="group1_db8" host="127.0.0.1" password="123456" port="6379" database="8" timeout="5000"/>
|
||||
<info name="group1_db9" host="127.0.0.1" password="123456" port="6379" database="9" timeout="5000"/>
|
||||
<info name="group1_db10" host="127.0.0.1" password="123456" port="6379" database="10" timeout="5000"/>
|
||||
<info name="group1_db11" host="127.0.0.1" password="123456" port="6379" database="11" timeout="5000"/>
|
||||
</infos>
|
||||
</plugin>
|
||||
</serivce-core>
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
local mgr_hp = tonumber(redis.call('hget', KEYS[1],'hp'))
|
||||
local tag_hp = tonumber(redis.call('hget', KEYS[2],'hp'))
|
||||
mgr_hp = not mgr_hp and 0 or mgr_hp
|
||||
tag_hp = not tag_hp and 0 or tag_hp
|
||||
local hp = tonumber(ARGV[1])
|
||||
if hp > 0 and mgr_hp <hp then
|
||||
return 3
|
||||
else
|
||||
mgr_hp = redis.call('hincrBy',KEYS[1],'hp',-hp)
|
||||
tag_hp = redis.call('hincrBy',KEYS[2],'hp',hp)
|
||||
end
|
||||
return {mgr_hp,tag_hp}
|
||||
|
|
@ -0,0 +1,119 @@
|
|||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<groupId>com.group</groupId>
|
||||
<artifactId>web_group_robot</artifactId>
|
||||
<packaging>war</packaging>
|
||||
<version>1.0.0</version>
|
||||
<properties>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<maven.compiler.source>1.8</maven.compiler.source>
|
||||
<maven.compiler.target>1.8</maven.compiler.target>
|
||||
<build.type>pro</build.type>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>junit</groupId>
|
||||
<artifactId>junit</artifactId>
|
||||
<version>3.8.1</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
<!--依赖 data_cache -->
|
||||
<dependency>
|
||||
<groupId>com.data</groupId>
|
||||
<artifactId>data_cache</artifactId>
|
||||
<version>1.0.1</version>
|
||||
</dependency>
|
||||
|
||||
<!--依赖 taurus-core -->
|
||||
<dependency>
|
||||
<groupId>com.taurus</groupId>
|
||||
<artifactId>taurus-core</artifactId>
|
||||
<version>1.0.1</version>
|
||||
</dependency>
|
||||
|
||||
<!--依赖 taurus-web -->
|
||||
<dependency>
|
||||
<groupId>com.taurus</groupId>
|
||||
<artifactId>taurus-web</artifactId>
|
||||
<version>1.0.1</version>
|
||||
</dependency>
|
||||
|
||||
<!-- 需要用redis时导入 -->
|
||||
<dependency>
|
||||
<groupId>redis.clients</groupId>
|
||||
<artifactId>jedis</artifactId>
|
||||
<version>2.9.0</version>
|
||||
</dependency>
|
||||
|
||||
<!-- 需要用HikariCP时导入 ,自己在项目中添加 -->
|
||||
<dependency>
|
||||
<groupId>com.zaxxer</groupId>
|
||||
<artifactId>HikariCP</artifactId>
|
||||
<version>3.3.1</version>
|
||||
</dependency>
|
||||
|
||||
<!-- 需要用mysql时导入 ,自己在项目中添加 -->
|
||||
<dependency>
|
||||
<groupId>mysql</groupId>
|
||||
<artifactId>mysql-connector-java</artifactId>
|
||||
<version>8.0.16</version>
|
||||
</dependency>
|
||||
|
||||
<!-- https://mvnrepository.com/artifact/jdom/jdom -->
|
||||
<dependency>
|
||||
<groupId>jdom</groupId>
|
||||
<artifactId>jdom</artifactId>
|
||||
<version>1.0</version>
|
||||
</dependency>
|
||||
|
||||
<!-- https://mvnrepository.com/artifact/log4j/log4j -->
|
||||
<dependency>
|
||||
<groupId>log4j</groupId>
|
||||
<artifactId>log4j</artifactId>
|
||||
<version>1.2.17</version>
|
||||
</dependency>
|
||||
|
||||
|
||||
<!-- https://mvnrepository.com/artifact/org.eclipse.jetty/jetty-webapp -->
|
||||
<dependency>
|
||||
<groupId>org.eclipse.jetty</groupId>
|
||||
<artifactId>jetty-webapp</artifactId>
|
||||
<version>8.2.0.v20160908</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.quartz-scheduler</groupId>
|
||||
<artifactId>quartz</artifactId>
|
||||
<version>2.2.3</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<finalName>ROOT</finalName>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-war-plugin</artifactId>
|
||||
<configuration>
|
||||
<source>1.8</source>
|
||||
<target>1.8</target>
|
||||
<encoding>UTF-8</encoding>
|
||||
<warSourceExcludes>logs/**,config/**</warSourceExcludes>
|
||||
<webResources>
|
||||
<resource>
|
||||
<targetPath>config/</targetPath>
|
||||
<directory>${project.basedir}/build/${build.type}/</directory>
|
||||
</resource>
|
||||
</webResources>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
|
||||
</project>
|
||||
|
|
@ -0,0 +1,207 @@
|
|||
package com.group;
|
||||
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.ScheduledThreadPoolExecutor;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import com.data.cache.AccountCache;
|
||||
import com.data.cache.GroupCache;
|
||||
import com.group.controller.GroupController;
|
||||
import com.group.controller.GroupLogController;
|
||||
import com.group.controller.GroupRoomController;
|
||||
import com.group.job.UpdatePlayRoomJob;
|
||||
import com.group.job.UpdateRobotRoomJob;
|
||||
import com.taurus.core.plugin.redis.Redis;
|
||||
import com.taurus.core.routes.Extension;
|
||||
import com.taurus.core.routes.Routes;
|
||||
import com.taurus.core.util.FileUtil;
|
||||
|
||||
|
||||
import org.quartz.CronTrigger;
|
||||
import org.quartz.JobDetail;
|
||||
import org.quartz.Scheduler;
|
||||
import org.quartz.SchedulerFactory;
|
||||
import org.quartz.impl.StdSchedulerFactory;
|
||||
import redis.clients.jedis.Jedis;
|
||||
import redis.clients.jedis.JedisPool;
|
||||
import redis.clients.jedis.JedisPoolConfig;
|
||||
|
||||
|
||||
import static org.quartz.CronScheduleBuilder.cronSchedule;
|
||||
import static org.quartz.JobBuilder.newJob;
|
||||
import static org.quartz.TriggerBuilder.newTrigger;
|
||||
|
||||
public class MainServer extends Extension {
|
||||
private ScheduledThreadPoolExecutor timeScheduler;
|
||||
|
||||
private static final String WEB_CONFIG_KEY = "web_config";
|
||||
private static final String FORCE_VER_KEY = "force_ver";
|
||||
|
||||
public static Map<String,String> lua_map = new HashMap<>();
|
||||
public MainServer() {
|
||||
super();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int readVersion() {
|
||||
int ver = Integer.parseInt(Redis.use("group1_db1").hget(WEB_CONFIG_KEY,FORCE_VER_KEY));
|
||||
return ver;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void configRoute(Routes me) {
|
||||
me.setInterceptor(new WebInterceptor());
|
||||
|
||||
me.add("group", GroupController.class);
|
||||
me.add("group/room", GroupRoomController.class);
|
||||
me.add("group/log",GroupLogController.class);
|
||||
}
|
||||
|
||||
|
||||
public void initJob() {
|
||||
|
||||
try {
|
||||
SchedulerFactory sf = new StdSchedulerFactory();
|
||||
|
||||
Scheduler schedrobot = sf.getScheduler();
|
||||
JobDetail robot = newJob(UpdateRobotRoomJob.class).withIdentity("update_robot_room", "group").build();
|
||||
CronTrigger robottg= newTrigger().withIdentity("update_robot_room_trigger", "group").withSchedule(cronSchedule("0/4 * * * * ? ")).build();
|
||||
schedrobot.scheduleJob(robot, robottg);
|
||||
|
||||
|
||||
robot = newJob(UpdateRobotRoomJob.class).withIdentity("create_robot_room", "group").build();
|
||||
robottg= newTrigger().withIdentity("create_robot_room_trigger", "group").withSchedule(cronSchedule("0/3 * * * * ? ")).build();
|
||||
schedrobot.scheduleJob(robot, robottg);
|
||||
schedrobot.start();
|
||||
|
||||
}
|
||||
catch(Exception e) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStart() {
|
||||
/*JedisPoolConfig poolConfig = new JedisPoolConfig();
|
||||
poolConfig.setMaxTotal(100); // 最大连接数
|
||||
poolConfig.setMaxIdle(50); // 最大空闲连接数
|
||||
poolConfig.setMinIdle(10); // 最小空闲连接数
|
||||
|
||||
// 连接等待配置
|
||||
poolConfig.setMaxWaitMillis(3000); // 获取连接最大等待时间(毫秒)
|
||||
poolConfig.setBlockWhenExhausted(true); // 连接耗尽时是否阻塞
|
||||
|
||||
// 连接验证配置
|
||||
poolConfig.setTestOnBorrow(true); // 获取连接时验证
|
||||
poolConfig.setTestOnReturn(false); // 归还连接时验证
|
||||
poolConfig.setTestWhileIdle(true); // 空闲时验证
|
||||
|
||||
// 空闲连接清理配置
|
||||
poolConfig.setMinEvictableIdleTimeMillis(60000); // 最小空闲时间
|
||||
poolConfig.setTimeBetweenEvictionRunsMillis(30000); // 检查间隔
|
||||
poolConfig.setNumTestsPerEvictionRun(-1);
|
||||
|
||||
JedisPool jedisPool = new JedisPool(poolConfig,"r-2vc0x3clldkj94synhpd.redis.cn-chengdu.rds.aliyuncs.com",6379,2000,"KuaiLjzhu@2026");
|
||||
|
||||
|
||||
cleanIdleConnectionsByBorrowAndReturn(jedisPool);*/
|
||||
// 1. 先启动独立的事件处理线程(只启动一次)
|
||||
Thread eventThread = new Thread(() -> {
|
||||
while (true) {
|
||||
try {
|
||||
UpdateRobotRoomJob urj = new UpdateRobotRoomJob();
|
||||
urj.createRobotRoom();
|
||||
//urj.updateRobotRoom();
|
||||
Thread.sleep(5000);
|
||||
|
||||
} catch (InterruptedException e) {
|
||||
break;
|
||||
} catch (Exception e) {
|
||||
}
|
||||
}
|
||||
}, "Web_Group_Robot-Thread");
|
||||
|
||||
eventThread.setDaemon(true); // 设置为守护线程
|
||||
eventThread.start();
|
||||
|
||||
|
||||
Thread eventThread2 = new Thread(() -> {
|
||||
while (true) {
|
||||
try {
|
||||
UpdateRobotRoomJob urj = new UpdateRobotRoomJob();
|
||||
//urj.createRobotRoom();
|
||||
urj.updateRobotRoom();
|
||||
Thread.sleep(4000);
|
||||
|
||||
} catch (InterruptedException e) {
|
||||
break;
|
||||
} catch (Exception e) {
|
||||
}
|
||||
}
|
||||
}, "Web_Update_Group_Robot-Thread");
|
||||
|
||||
eventThread2.setDaemon(true); // 设置为守护线程
|
||||
eventThread2.start();
|
||||
|
||||
}
|
||||
|
||||
public static void cleanIdleConnectionsByBorrowAndReturn(JedisPool jedisPool) {
|
||||
System.out.println("=== 开始手动清理空闲连接 ===");
|
||||
|
||||
int initialIdle = jedisPool.getNumIdle();
|
||||
int initialActive = jedisPool.getNumActive();
|
||||
System.out.printf("清理前 - 空闲: %d, 活跃: %d%n", initialIdle, initialActive);
|
||||
|
||||
// 获取当前空闲连接数
|
||||
int idleConnections = initialIdle;
|
||||
|
||||
// 如果空闲连接超过阈值,开始清理
|
||||
if (idleConnections > 20) {
|
||||
int connectionsToClean = idleConnections - 10; // 保留10个空闲连接
|
||||
|
||||
System.out.printf("需要清理 %d 个空闲连接%n", connectionsToClean);
|
||||
|
||||
for (int i = 0; i < connectionsToClean; i++) {
|
||||
try (Jedis jedis = jedisPool.getResource()) {
|
||||
// 验证连接是否有效
|
||||
String pong = jedis.ping();
|
||||
if (!"PONG".equals(pong)) {
|
||||
System.out.printf("连接 %d 无效,将被销毁%n", i + 1);
|
||||
}
|
||||
// 获取后立即关闭,如果连接空闲时间过长,连接池会自动销毁
|
||||
} catch (Exception e) {
|
||||
System.err.printf("处理连接 %d 时出错: %s%n", i + 1, e.getMessage());
|
||||
}
|
||||
|
||||
// 小延迟,避免对Redis造成压力
|
||||
try {
|
||||
TimeUnit.MILLISECONDS.sleep(10);
|
||||
} catch (InterruptedException e) {
|
||||
Thread.currentThread().interrupt();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int finalIdle = jedisPool.getNumIdle();
|
||||
int finalActive = jedisPool.getNumActive();
|
||||
System.out.printf("清理后 - 空闲: %d, 活跃: %d%n", finalIdle, finalActive);
|
||||
System.out.printf("共清理了 %d 个空闲连接%n", initialIdle - finalIdle);
|
||||
System.out.println("=== 手动清理完成 ===\n");
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public void onStop() {
|
||||
if(timeScheduler!=null) {
|
||||
timeScheduler.shutdownNow();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,220 @@
|
|||
package com.group;
|
||||
|
||||
|
||||
public class Protocol {
|
||||
|
||||
|
||||
|
||||
// --------------------group--------------------------
|
||||
|
||||
|
||||
/**获取圈子列表*/
|
||||
public static final String GET_GROUPS = "get_groups";
|
||||
/**获取创建圈子*/
|
||||
public static final String CREATE_GROUP = "create_group";
|
||||
/**加入圈子*/
|
||||
public static final String JOIN_GROUP = "join_group";
|
||||
/**删除圈子*/
|
||||
public static final String DEL_GROUP = "del_group";
|
||||
/**获取申请列表*/
|
||||
public static final String GET_GROUP_JOINS = "get_group_joins";
|
||||
/**授权加入圈子*/
|
||||
public static final String VERIFY_JOIN_GROUP = "verify_join_group";
|
||||
/**获取成员列表*/
|
||||
public static final String GET_GROUP_MEMBERS = "get_group_members";
|
||||
|
||||
public static final String GET_MY_MEMBERS = "get_my_members";
|
||||
|
||||
public static final String GET_MEMBERS_COUNT = "get_members_count";
|
||||
|
||||
/**获取合伙人列表*/
|
||||
public static final String GET_GROUP_PARTNERS = "get_group_partners";
|
||||
/**删除成员*/
|
||||
public static final String GROUP_KICK = "group_kick";
|
||||
|
||||
public static final String GET_KICK_LOG = "get_kick_log";
|
||||
|
||||
/** 邀请加入圈子*/
|
||||
public static final String INVITE_GROUP_MEMBER = "invite_group_member";
|
||||
/** 获取玩家信息 */
|
||||
public static final String GET_PLAYER_INFO = "get_player_info";
|
||||
|
||||
public static final String CLONE_GROUP = "clone_group";
|
||||
|
||||
|
||||
/** 获取提取数据信息*/
|
||||
public static final String TRADE_TAKE_INFO = "get_take_info";
|
||||
/** 提取体力值*/
|
||||
public static final String TAKE_HP = "take_hp";
|
||||
/** 提取体力值*/
|
||||
public static final String GROUP_TAKE_HP = "group_take_hp";
|
||||
|
||||
public static final String GET_BANK_HP = "get_bank_hp";
|
||||
public static final String TAKE_BANK_HP = "take_bank_hp";
|
||||
public static final String SAVE_BANK_HP = "save_bake_hp";
|
||||
|
||||
/** 获取提取日志*/
|
||||
public static final String GET_TAKE_LOG = "get_take_log";
|
||||
|
||||
public static final String GET_BANK_LOG = "get_bank_log";
|
||||
|
||||
|
||||
/** 更新成员体力值*/
|
||||
public static final String UPDATE_MEMBER_HP = "update_member_hp";
|
||||
public static final String UPDATE_MEMBER_SCORE = "update_member_score";
|
||||
|
||||
public static final String UPDATE_MEMBER_QUEUEID = "update_member_queueid"; //分组id
|
||||
|
||||
public static final String UPDATE_MEMBER_SEEID = "update_member_seeid"; //权限id
|
||||
|
||||
/** 进入圈子*/
|
||||
public static final String ENTER_GROUP = "enter_group";
|
||||
|
||||
/** 置顶圈子*/
|
||||
public static final String STICK_GROUP = "stick_group";
|
||||
|
||||
|
||||
/** 添加玩法 */
|
||||
public static final String ADD_PLAY = "add_play";
|
||||
/** 删除玩法 */
|
||||
public static final String DEL_PLAY = "del_play";
|
||||
/** 更新玩法*/
|
||||
public static final String UPDATE_PLAY = "update_play";
|
||||
/** 快速加入房间 */
|
||||
public static final String GROUP_MATCH_ROOM = "match_room";
|
||||
/** 加入房间 */
|
||||
public static final String GROUP_JOIN_ROOM = "join_room";
|
||||
/** 删除房间 */
|
||||
public static final String GROUP_DEL_ROOM = "del__room";
|
||||
/** 更新圈子配置 */
|
||||
public static final String GROUP_UPDATE_INFO = "update_info";
|
||||
/** 成员禁止娱乐*/
|
||||
public static final String GROUP_BAN_MEMBER = "ban_member";
|
||||
/** 成员禁止娱乐*/
|
||||
public static final String GROUP_BLACK_MEMBER = "black_member";
|
||||
/** 成员禁止娱乐*/
|
||||
public static final String GROUP_GET_BLACK_MEMBER = "get_black_member";
|
||||
/** 玩法禁止娱乐*/
|
||||
public static final String GROUP_BAN_PLAY = "ban_play";
|
||||
/** 标识玩法*/
|
||||
public static final String GROUP_MARK_PLAY = "mark_play";
|
||||
/** 更新成员管理*/
|
||||
public static final String GROUP_SET_MEMBER_MGR = "set_member_mgr";
|
||||
/** 更新成员管理*/
|
||||
public static final String GROUP_SET_PARTNER = "set_partner";
|
||||
/** 获取成员上级合伙人列表*/
|
||||
public static final String GET_MEMBER_PARENTS = "get_member_parents";
|
||||
/** 查询成员*/
|
||||
public static final String FIND_MEMBER = "find_member";
|
||||
/** 查询成员1*/
|
||||
public static final String FIND_MEMBER1 = "find_member1";
|
||||
/** 获取管理上下分记录*/
|
||||
public static final String GET_HPLOG_MGR = "get_hplog_mgr";
|
||||
/** 获取管理上下分记录统计*/
|
||||
public static final String GET_HPLOG_MGR_COUNT = "get_hplog_mgr_count";
|
||||
/** 获取管理员上下分详细信息*/
|
||||
public static final String GET_HPLOG_MGR_INFO = "get_hplog_mgr_info";
|
||||
/** 获取玩家体力值详细*/
|
||||
public static final String GET_HPLOG_INFO = "get_hplog_info";
|
||||
|
||||
/** 获取玩家详细体力值*/
|
||||
public static final String GET_HPLOG_DETAIL_INFO = "get_hplog_detail_info";
|
||||
|
||||
/** 获取抽水体力值详细*/
|
||||
public static final String GET_HPLOG_PUMP = "get_hplog_pump";
|
||||
/** 设置奖励*/
|
||||
public static final String GROUP_SET_REWARD = "set_reward";
|
||||
/** 设置奖励*/
|
||||
public static final String GROUP_SET_XIPAI_REWARD = "set_xipai_reward";
|
||||
|
||||
/** 设置按抽奖励*/
|
||||
public static final String GROUP_SET_ANCHOU_REWARD = "set_anchou_reward";
|
||||
|
||||
/** 获取奖励数据*/
|
||||
public static final String GROUP_GET_REWARDS = "get_rewards";
|
||||
|
||||
|
||||
public static final String GROUP_GET_ROBOTPLAYS = "get_panter_robotplays";
|
||||
|
||||
public static final String GROUP_SET_ROBOTPLAYS = "set_panter_robotplays";
|
||||
|
||||
|
||||
/** 获取奖励日志*/
|
||||
public static final String GROUP_GET_REWARD_LOG = "get_reward_log";
|
||||
/** 获取奖励统计*/
|
||||
public static final String GROUP_GET_REWARD_COUNT = "get_reward_count";
|
||||
/** 获取玩法局数统计*/
|
||||
public static final String GROUP_GET_PLAY_ROUND_COUNT = "get_play_round_count";
|
||||
/** 获取消耗统计*/
|
||||
public static final String GROUP_GET_COST_COUNT = "get_cost_count";
|
||||
/** 获取局数统计*/
|
||||
public static final String GROUP_GET_ROUND_COUNT = "get_round_count";
|
||||
/**获得成员统计*/
|
||||
public static final String GROUP_GET_MEMBER_STAT = "get_member_stat";
|
||||
/**获得合伙人统计*/
|
||||
public static final String GROUP_GET_PARTNER_STAT = "get_partner_stat";
|
||||
/**查找合伙人统计*/
|
||||
public static final String GROUP_FIND_PARTNER_STAT = "find_partner_stat";
|
||||
/**获得合伙人统计 成员*/
|
||||
public static final String GROUP_GET_PARTNER_STAT_MEMBER = "get_partner_stat_member";
|
||||
/**查找合伙人统计 成员*/
|
||||
public static final String GROUP_FIND_PARTNER_STAT_MEMBER = "find_partner_stat_member";
|
||||
|
||||
public static final String GROUP_GET_DIRECT_STAT_MEMBER = "get_direct_stat_member";
|
||||
/**获得合伙人统计 玩法*/
|
||||
public static final String GROUP_GET_PARTNER_STAT_PLAY = "get_partner_stat_play";
|
||||
/** 获取成员排行*/
|
||||
public static final String GROUP_GET_MEMBER_RANK = "get_member_rank";
|
||||
/** 获取战绩列表*/
|
||||
public static final String GROUP_GET_RECORDS = "get_records";
|
||||
/** 获取个人亲友圈战绩列表*/
|
||||
public static final String GROUP_GET_PERSON_RECORDS = "get_person_records";
|
||||
/** 根据房间ID查询战绩*/
|
||||
public static final String GROUP_FIND_RECORD_ROOM = "find_record_room";
|
||||
/** 调配成员*/
|
||||
public static final String DISTRIBUTE_MEMBER = "distribute_member";
|
||||
/** 退出圈子*/
|
||||
public static final String EXIT_GROUP = "exit_group";
|
||||
/** 获取合伙人[日志]管理列表*/
|
||||
public static final String GET_PARTNER_INFOS = "get_partner_data";
|
||||
/**搜索合伙人信息*/
|
||||
public static final String QUERY_PARTNER_INFOS = "query_partner_data";
|
||||
/** 获取合伙人[日志]成员列表*/
|
||||
public static final String GET_PARTNER_MEMBERS = "get_partner_members";
|
||||
|
||||
/** 设置管理员权限*/
|
||||
public static final String SET_MGR_PERMISSION = "set_mgr_permission";
|
||||
/** 获取禁止同桌列表*/
|
||||
public static final String GET_BAN_DESK_LIST = "get_ban_desk_list";
|
||||
/** 设置禁止同桌*/
|
||||
public static final String SET_BAN_DESK = "set_ban_desk";
|
||||
/**获取体力值信息*/
|
||||
public static final String GET_HP_COUNT_INFO ="get_hp_count_info";
|
||||
/** 获取体力值消耗统计*/
|
||||
public static final String GROUP_GET_HPCONSUME_COUNT = "get_hpconsume_count";
|
||||
/** 转移合伙人*/
|
||||
public static final String MOVE_PARTNER = "move_partner";
|
||||
/**获取整线体力值*/
|
||||
public static final String GET_HP_TOTAL = "get_hp_total";
|
||||
/**更新推广设置*/
|
||||
public static final String UPDATE_PROMOTION = "update_promotion";
|
||||
/**获取推广设置*/
|
||||
public static final String GET_PROMOTION = "get_promotion";
|
||||
/**获取邮件列表*/
|
||||
public static final String GET_MAIL_LIST = "get_mail_list";
|
||||
/**删除所以邮件*/
|
||||
public static final String DEL_MAIL_ALL = "del_mail_all";
|
||||
|
||||
/**设置亲友圈合伙人阀值*/
|
||||
public static final String SET_AUTO_SCORE ="set_auto_score";
|
||||
|
||||
/**幸运号数据*/
|
||||
public static final String GET_XINGYUNHAO_INFO ="get_xingyunhao_info";
|
||||
|
||||
/** 设置屏蔽玩法 **/
|
||||
public static final String SET_PANTER_BANPLAY = "set_panter_banplay";
|
||||
|
||||
/**获取所有玩法**/
|
||||
public static final String GET_PANTER_ALLPLAYS = "get_panter_allplays";
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,186 @@
|
|||
package com.group;
|
||||
|
||||
import com.data.bean.AccountBean;
|
||||
import com.data.bean.GroupBean;
|
||||
import com.data.bean.GroupMemberBean;
|
||||
import com.data.bean.GroupPlayBean;
|
||||
import com.data.cache.AccountCache;
|
||||
import com.data.cache.GroupCache;
|
||||
import com.data.util.ErrorCode;
|
||||
import com.group.service.GroupRoomService;
|
||||
import com.taurus.core.entity.ITObject;
|
||||
import com.taurus.core.plugin.redis.Redis;
|
||||
import com.taurus.core.routes.Action;
|
||||
import com.taurus.core.routes.IController;
|
||||
import com.taurus.core.routes.Interceptor;
|
||||
import com.taurus.core.util.StringUtil;
|
||||
import com.taurus.web.Controller;
|
||||
import com.taurus.web.WebException;
|
||||
|
||||
public class WebInterceptor implements Interceptor{
|
||||
/**
|
||||
* 验证session
|
||||
*/
|
||||
public static final int V_SESSION = 1;
|
||||
/**
|
||||
* 验证圈子
|
||||
*/
|
||||
public static final int V_GROUP = 2;
|
||||
/**
|
||||
* 验证圈主
|
||||
*/
|
||||
public static final int V_GROUP_OWNER = 4;
|
||||
/**
|
||||
* 验证合伙人
|
||||
*/
|
||||
public static final int V_GROUP_PARTNER= 8;
|
||||
/**
|
||||
* 验证玩法
|
||||
*/
|
||||
public static final int V_GROUP_PLAY= 16;
|
||||
/**
|
||||
* 验证管理员
|
||||
*/
|
||||
public static final int V_GROUP_MGR= 32;
|
||||
/**
|
||||
* 验证管理员或者合伙人
|
||||
*/
|
||||
public static final int V_GROUP_MGR_OR_PARTNER= 64;
|
||||
/**
|
||||
* 检测玩家在不在房间
|
||||
*/
|
||||
public static final int V_GROUP_CHECK_ROOM= 128;
|
||||
|
||||
/**
|
||||
* 验证圈主或合伙人
|
||||
*/
|
||||
public static final int V_GROUP_OWNER_OR_MGR_OR_PARTNER = 256;
|
||||
|
||||
@Override
|
||||
public void intercept(Action action, IController controller, Object... args) throws Exception {
|
||||
Controller ctr = (Controller) controller;
|
||||
int validate = action.getActionKeyObj().validate();
|
||||
String session = ctr.getSession();
|
||||
String token = ctr.getTokens();
|
||||
if (StringUtil.isNotEmpty(token) && StringUtil.isNotEmpty(session))
|
||||
{
|
||||
String token_session = Redis.use("group1_db0").hget(token, "user");
|
||||
if (StringUtil.isEmpty(token_session))
|
||||
{
|
||||
throw new WebException(ErrorCode._NO_SESSION);
|
||||
}
|
||||
else {
|
||||
if (!token_session.equals(session))
|
||||
{
|
||||
throw new WebException(ErrorCode._NO_SESSION);
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
throw new WebException(ErrorCode._NO_SESSION);
|
||||
}
|
||||
|
||||
if ((validate&V_SESSION)!=0 ) {
|
||||
if (!Redis.use("group1_db0").exists(session)) {
|
||||
throw new WebException(ErrorCode._NO_SESSION);
|
||||
}
|
||||
String opt = Redis.use("group1_db0").hget(session, "opt");
|
||||
// background del sign
|
||||
if (!StringUtil.isEmpty(opt) && Integer.parseInt(opt) == 1) {
|
||||
throw new WebException(ErrorCode._NO_SESSION);
|
||||
}
|
||||
}
|
||||
|
||||
if((validate&V_GROUP)!=0) {
|
||||
ITObject reqData = ctr.getParams();
|
||||
if(!reqData.containsKey("id")) {
|
||||
throw new WebException(ErrorCode.GROUP_NO_EXIST);
|
||||
}
|
||||
int groupId = reqData.getInt("id");
|
||||
GroupBean gb = GroupCache.getGroup(groupId);
|
||||
if (gb == null) {
|
||||
throw new WebException(ErrorCode.GROUP_NO_EXIST);
|
||||
}
|
||||
if (gb.stop == 1) {
|
||||
throw new WebException(ErrorCode.GROUP_STOP_SERVICE);
|
||||
}
|
||||
AccountBean acc = AccountCache.getAccount(session);
|
||||
if((validate&V_GROUP_CHECK_ROOM)!=0) {
|
||||
boolean checkRoom = GroupRoomService.checkRoom(groupId, acc.id);
|
||||
if(checkRoom) {
|
||||
throw new WebException(ErrorCode.GROUP_EXIST_ROOMS);
|
||||
}
|
||||
}
|
||||
boolean v_o_p = (validate&V_GROUP_OWNER_OR_MGR_OR_PARTNER)!=0;
|
||||
if (v_o_p)
|
||||
{
|
||||
if(gb.owner != acc.id) {
|
||||
GroupMemberBean gmb = GroupCache.getMember(groupId, acc.id);
|
||||
if (gmb==null) {
|
||||
throw new WebException(ErrorCode.GROUP_NOT_MEMBER);
|
||||
}
|
||||
|
||||
if (gmb.lev >= 3)
|
||||
{
|
||||
if(gmb.partnerLev<=0) {
|
||||
throw new WebException(ErrorCode.GROUP_NOT_PARTNER);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else if((validate&V_GROUP_OWNER)!=0) {
|
||||
if(gb.owner != acc.id) {
|
||||
throw new WebException(ErrorCode.GROUP_NOT_OWNER);
|
||||
}
|
||||
}else {
|
||||
GroupMemberBean gmb = GroupCache.getMember(groupId, acc.id);
|
||||
if (gmb==null) {
|
||||
throw new WebException(ErrorCode.GROUP_NOT_MEMBER);
|
||||
}
|
||||
int count = 0;
|
||||
boolean v_m_p = (validate&V_GROUP_MGR_OR_PARTNER)!=0;
|
||||
|
||||
if((validate&V_GROUP_PARTNER)!=0 || v_m_p) {
|
||||
if(gmb.partnerLev<=0) {
|
||||
if(v_m_p) {
|
||||
count ++;
|
||||
}else {
|
||||
throw new WebException(ErrorCode.GROUP_NOT_PARTNER);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if((validate&V_GROUP_MGR)!=0 || v_m_p) {
|
||||
if(gmb.lev == 3) {
|
||||
if(v_m_p) {
|
||||
count ++;
|
||||
}else {
|
||||
throw new WebException(ErrorCode.GROUP_MGR_EXIST);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(v_m_p && count==0) {
|
||||
throw new WebException(ErrorCode.GROUP_NOT_PARTNER);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if((validate&V_GROUP_PLAY)!=0) {
|
||||
int pid = reqData.getInt("pid");
|
||||
GroupPlayBean gpb = GroupCache.getPlay(groupId, pid);
|
||||
if (gpb==null) {
|
||||
throw new WebException(ErrorCode.GROUP_PLAY_EXIST);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,652 @@
|
|||
package com.group.controller;
|
||||
|
||||
import com.data.bean.AccountBean;
|
||||
import com.data.bean.GroupMemberBean;
|
||||
import com.data.cache.AccountCache;
|
||||
import com.data.cache.GroupCache;
|
||||
import com.data.util.ErrorCode;
|
||||
import com.data.util.Utility;
|
||||
import com.group.Protocol;
|
||||
import com.group.WebInterceptor;
|
||||
import com.group.service.GroupLogService;
|
||||
import com.taurus.core.entity.ITArray;
|
||||
import com.taurus.core.entity.ITObject;
|
||||
import com.taurus.core.entity.TObject;
|
||||
import com.taurus.core.plugin.redis.Redis;
|
||||
import com.taurus.core.routes.ActionKey;
|
||||
import com.taurus.web.Controller;
|
||||
import com.taurus.web.WebException;
|
||||
import redis.clients.jedis.Jedis;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class GroupLogController extends Controller{
|
||||
|
||||
/**
|
||||
* 获取奖励日志
|
||||
*
|
||||
* @throws Exception
|
||||
*/
|
||||
@ActionKey(value = Protocol.GROUP_GET_REWARD_LOG, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP|WebInterceptor.V_GROUP_MGR_OR_PARTNER)
|
||||
public final void getRewardLog() throws Exception {
|
||||
ITObject reqData = this.getParams();
|
||||
String session = this.getSession();
|
||||
int groupId = reqData.getInt("id");
|
||||
int limit = reqData.getInt("limit");
|
||||
// 数量
|
||||
int num = reqData.getInt("num");
|
||||
int beginTime = reqData.getInt("beginTime");
|
||||
int endTime = reqData.getInt("endTime");
|
||||
int tagId = reqData.getInt("tagId");
|
||||
AccountBean acc = AccountCache.getAccount(session);
|
||||
Jedis jedis10 = Redis.use("group1_db10").getJedis();
|
||||
try {
|
||||
GroupMemberBean uid_bean = GroupCache.getMember(groupId, acc.id);
|
||||
if (uid_bean == null) {
|
||||
throw new WebException(ErrorCode.GROUP_NOT_MEMBER);
|
||||
}
|
||||
|
||||
if (uid_bean.lev >= 3 && acc.id != tagId)
|
||||
{
|
||||
List<Integer> par_list = Utility.getMemberParents(jedis10, groupId, tagId, true);
|
||||
if (par_list == null || !par_list.contains(acc.id)) {
|
||||
throw new WebException(ErrorCode.GROUP_NOT_PERMISSION);
|
||||
}
|
||||
}
|
||||
}
|
||||
finally {
|
||||
jedis10.close();
|
||||
}
|
||||
|
||||
ITObject resData = GroupLogService.getRewardLog(groupId, tagId, limit, num, beginTime, endTime);
|
||||
sendResponse(0, resData);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取奖励统计
|
||||
*
|
||||
* @throws Exception
|
||||
*/
|
||||
@ActionKey(value = Protocol.GROUP_GET_REWARD_COUNT, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP|WebInterceptor.V_GROUP_OWNER)
|
||||
public final void getRewardLogCount() throws Exception {
|
||||
ITObject reqData = this.getParams();
|
||||
int groupId = reqData.getInt("id");
|
||||
int pid = reqData.getInt("pid");
|
||||
int beginTime = reqData.getInt("beginTime");
|
||||
int endTime = reqData.getInt("endTime");
|
||||
ITObject resData = GroupLogService.getRewardLogCount(groupId,pid, beginTime, endTime);
|
||||
sendResponse(0, resData);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取体力值管理统计数据
|
||||
* @throws Exception
|
||||
*/
|
||||
@ActionKey(value = Protocol.GET_HPLOG_MGR, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP|WebInterceptor.V_GROUP_MGR_OR_PARTNER)
|
||||
public final void getHpLogMgr() throws Exception {
|
||||
String session = this.getSession();
|
||||
ITObject reqData = this.getParams();
|
||||
int groupId = reqData.getInt("id");
|
||||
AccountBean acc = AccountCache.getAccount(session);
|
||||
int limit = reqData.getInt("limit");
|
||||
int num = reqData.getInt("num");
|
||||
// 类型 type 1上分 2下分 3合伙人上分 4合伙人下分
|
||||
int type = reqData.getInt("type");
|
||||
int qid = reqData.getInt("qid");
|
||||
String tagName = reqData.getUtfString("tagName");
|
||||
ITObject resData = GroupLogService.getHpLogMgr(groupId, acc.id, limit, num, type, qid, tagName);
|
||||
sendResponse(0, resData);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取体力值管理统计数据
|
||||
* @throws Exception
|
||||
*/
|
||||
@ActionKey(value = Protocol.GET_HPLOG_MGR_COUNT, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP|WebInterceptor.V_GROUP_MGR)
|
||||
public final void getHpLogMgrCount() throws Exception {
|
||||
ITObject reqData = this.getParams();
|
||||
int groupId = reqData.getInt("id");
|
||||
ITObject resData = GroupLogService.getHpLogMgrCount(groupId);
|
||||
sendResponse(0, resData);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取体力值管理员详细信息
|
||||
* @throws Exception
|
||||
*/
|
||||
@ActionKey(value = Protocol.GET_HPLOG_MGR_INFO, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP|WebInterceptor.V_GROUP_MGR_OR_PARTNER)
|
||||
public final void getHpLogMgrInfo() throws Exception {
|
||||
ITObject reqData = this.getParams();
|
||||
String session = this.getSession();
|
||||
AccountBean acc = AccountCache.getAccount(session);
|
||||
int groupId = reqData.getInt("id");
|
||||
int beginTime = reqData.getInt("beginTime");
|
||||
int endTime = reqData.getInt("endTime");
|
||||
//1 管理员 2合伙人
|
||||
int type = reqData.getInt("type");
|
||||
|
||||
ITArray arr = GroupLogService.getHpLogMgrInfo(groupId,acc.id,beginTime,endTime,type);
|
||||
ITObject resData = TObject.newInstance();
|
||||
resData.putTArray("infos", arr);
|
||||
sendResponse(0, resData);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取玩家体力值详细
|
||||
* @throws Exception
|
||||
*/
|
||||
@ActionKey(value = Protocol.GET_HPLOG_INFO, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP|WebInterceptor.V_GROUP_MGR_OR_PARTNER)
|
||||
public final void getHpLogInfo() throws Exception {
|
||||
ITObject reqData = this.getParams();
|
||||
String session = this.getSession();
|
||||
int groupId = reqData.getInt("id");
|
||||
int limit = reqData.getInt("limit");
|
||||
int num = reqData.getInt("num");
|
||||
int tagId = reqData.getInt("tagId");
|
||||
// 筛选
|
||||
int choose = reqData.getInt("choose");
|
||||
AccountBean acc = AccountCache.getAccount(session);
|
||||
Jedis jedis10 = Redis.use("group1_db10").getJedis();
|
||||
try {
|
||||
GroupMemberBean uid_bean = GroupCache.getMember(groupId, acc.id);
|
||||
if (uid_bean == null) {
|
||||
throw new WebException(ErrorCode.GROUP_NOT_MEMBER);
|
||||
}
|
||||
|
||||
if (uid_bean.lev >= 3 && acc.id != tagId)
|
||||
{
|
||||
List<Integer> par_list = Utility.getMemberParents(jedis10, groupId, tagId, true);
|
||||
if (par_list == null || !par_list.contains(acc.id)) {
|
||||
throw new WebException(ErrorCode.GROUP_NOT_PERMISSION);
|
||||
}
|
||||
}
|
||||
}
|
||||
finally {
|
||||
jedis10.close();
|
||||
}
|
||||
|
||||
ITObject resData = GroupLogService.getHpLogInfo(groupId, tagId, limit, num, choose);
|
||||
sendResponse(0, resData);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取玩家体力值详细
|
||||
* @throws Exception
|
||||
*/
|
||||
@ActionKey(value = Protocol.GET_HPLOG_DETAIL_INFO, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP|WebInterceptor.V_GROUP_MGR_OR_PARTNER)
|
||||
public final void getHpLogDetailInfo() throws Exception {
|
||||
ITObject reqData = this.getParams();
|
||||
String session = this.getSession();
|
||||
int groupId = reqData.getInt("id");
|
||||
int tagId = reqData.getInt("tagId");
|
||||
String roomId = reqData.getUtfString("roomId");
|
||||
int time = reqData.getInt("time");
|
||||
AccountBean acc = AccountCache.getAccount(session);
|
||||
Jedis jedis10 = Redis.use("group1_db10").getJedis();
|
||||
try {
|
||||
GroupMemberBean uid_bean = GroupCache.getMember(groupId, acc.id);
|
||||
if (uid_bean == null) {
|
||||
throw new WebException(ErrorCode.GROUP_NOT_MEMBER);
|
||||
}
|
||||
|
||||
if (uid_bean.lev >= 3 && acc.id != tagId)
|
||||
{
|
||||
List<Integer> par_list = Utility.getMemberParents(jedis10, groupId, tagId, true);
|
||||
if (par_list == null || !par_list.contains(acc.id)) {
|
||||
throw new WebException(ErrorCode.GROUP_NOT_PERMISSION);
|
||||
}
|
||||
}
|
||||
}
|
||||
finally {
|
||||
jedis10.close();
|
||||
}
|
||||
|
||||
ITObject resData = GroupLogService.getHpLogDetailInfo(groupId, tagId, roomId, time);
|
||||
sendResponse(0, resData);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取抽水体力值详细
|
||||
* @throws Exception
|
||||
*/
|
||||
@ActionKey(value = Protocol.GET_HPLOG_PUMP, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP|WebInterceptor.V_GROUP_MGR)
|
||||
public final void getHpLogPumpInfo() throws Exception {
|
||||
ITObject reqData = this.getParams();
|
||||
int groupId = reqData.getInt("id");
|
||||
int limit = reqData.getInt("limit");
|
||||
// 数量
|
||||
int num = reqData.getInt("num");
|
||||
int beginTime = reqData.getInt("beginTime");
|
||||
int endTime = reqData.getInt("endTime");
|
||||
|
||||
ITObject resData = GroupLogService.getHpLogPumpInfo(groupId, limit, num, beginTime, endTime);
|
||||
sendResponse(0, resData);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取玩法局数统计
|
||||
*
|
||||
* @throws Exception
|
||||
*/
|
||||
@ActionKey(value = Protocol.GROUP_GET_MEMBER_RANK, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP)
|
||||
public final void getMemberRank() throws Exception {
|
||||
String session = this.getSession();
|
||||
AccountBean acc = AccountCache.getAccount(session);
|
||||
|
||||
ITObject reqData = this.getParams();
|
||||
|
||||
int groupId = reqData.getInt("id");
|
||||
int pid = reqData.getInt("pid");
|
||||
int limit = reqData.getInt("limit");
|
||||
// 数量
|
||||
int num = reqData.getInt("num");
|
||||
int beginTime = reqData.getInt("beginTime");
|
||||
int endTime = reqData.getInt("endTime");
|
||||
|
||||
int type = 0;
|
||||
if (reqData.containsKey("type"))
|
||||
{
|
||||
try {
|
||||
type = reqData.getInt("type");
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
ITObject resData = GroupLogService.getMemberRank(groupId, acc.id, pid, type, limit, num, beginTime, endTime);
|
||||
sendResponse(0, resData);
|
||||
}
|
||||
|
||||
@ActionKey(value = Protocol.GROUP_GET_MEMBER_STAT, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP|WebInterceptor.V_GROUP_MGR_OR_PARTNER)
|
||||
public final void getMemberStat() throws Exception {
|
||||
|
||||
String session = this.getSession();
|
||||
AccountBean acc = AccountCache.getAccount(session);
|
||||
|
||||
ITObject reqData = this.getParams();
|
||||
int groupId = reqData.getInt("id");
|
||||
int qid = reqData.getInt("qid");
|
||||
int partnerId = reqData.getInt("partner_id");
|
||||
int limit = reqData.getInt("limit");
|
||||
// 数量
|
||||
int num = reqData.getInt("num");
|
||||
|
||||
int tt = reqData.getInt("tt");
|
||||
int beginTime = 0;
|
||||
int endTime = 0;
|
||||
if(tt == 3) {
|
||||
beginTime = reqData.getInt("bt");
|
||||
endTime = reqData.getInt("et");
|
||||
}
|
||||
|
||||
ITObject resData = GroupLogService.getMemberStat(groupId,acc.id,qid,partnerId, limit, num, tt, beginTime, endTime);
|
||||
sendResponse(0, resData);
|
||||
}
|
||||
|
||||
@ActionKey(value = Protocol.GROUP_GET_PARTNER_STAT, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP|WebInterceptor.V_GROUP_MGR_OR_PARTNER)
|
||||
public final void getPartnerStat() throws Exception {
|
||||
|
||||
ITObject reqData = this.getParams();
|
||||
|
||||
String session = this.getSession();
|
||||
AccountBean acc = AccountCache.getAccount(session);
|
||||
|
||||
int groupId = reqData.getInt("id");
|
||||
|
||||
int limit = reqData.getInt("limit");
|
||||
// 数量
|
||||
int num = reqData.getInt("num");
|
||||
|
||||
int tt = reqData.getInt("tt");
|
||||
int beginTime = 0;
|
||||
int endTime = 0;
|
||||
if(tt == 0) {
|
||||
beginTime = reqData.getInt("bt");
|
||||
endTime = reqData.getInt("et");
|
||||
}
|
||||
|
||||
ITObject resData = GroupLogService.getPartnerStat(groupId, acc.id,limit, num, tt, beginTime, endTime);
|
||||
sendResponse(0, resData);
|
||||
}
|
||||
|
||||
@ActionKey(value = Protocol.GROUP_FIND_PARTNER_STAT, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP|WebInterceptor.V_GROUP_MGR_OR_PARTNER)
|
||||
public final void findPartnerStat() throws Exception {
|
||||
|
||||
ITObject reqData = this.getParams();
|
||||
|
||||
String session = this.getSession();
|
||||
AccountBean acc = AccountCache.getAccount(session);
|
||||
|
||||
int groupId = reqData.getInt("id");
|
||||
|
||||
int tagId = reqData.getInt("tagId");
|
||||
|
||||
int limit = reqData.getInt("limit");
|
||||
// 数量
|
||||
int num = reqData.getInt("num");
|
||||
|
||||
int tt = reqData.getInt("tt");
|
||||
int beginTime = 0;
|
||||
int endTime = 0;
|
||||
if(tt == 0) {
|
||||
beginTime = reqData.getInt("bt");
|
||||
endTime = reqData.getInt("et");
|
||||
}
|
||||
|
||||
ITObject resData = GroupLogService.findPartnerStat(groupId, acc.id, tagId, limit, num, tt, beginTime, endTime);
|
||||
sendResponse(0, resData);
|
||||
}
|
||||
|
||||
@ActionKey(value = Protocol.GROUP_GET_PARTNER_STAT_MEMBER, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP|WebInterceptor.V_GROUP_MGR_OR_PARTNER)
|
||||
public final void getPartnerStatMember() throws Exception {
|
||||
|
||||
ITObject reqData = this.getParams();
|
||||
|
||||
|
||||
int groupId = reqData.getInt("id");
|
||||
int limit = reqData.getInt("limit");
|
||||
int num = reqData.getInt("num");
|
||||
int uid = reqData.getInt("uid");
|
||||
int rootUid = reqData.getInt("root_uid");
|
||||
int tt = reqData.getInt("tt");
|
||||
int beginTime = 0;
|
||||
int endTime = 0;
|
||||
if(tt == 0) {
|
||||
beginTime = reqData.getInt("bt");
|
||||
endTime = reqData.getInt("et");
|
||||
}
|
||||
|
||||
ITObject resData = GroupLogService.getPartnerStatMember(groupId, uid, rootUid, limit, num, tt, beginTime, endTime);
|
||||
sendResponse(0, resData);
|
||||
}
|
||||
|
||||
@ActionKey(value = Protocol.GROUP_FIND_PARTNER_STAT_MEMBER, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP|WebInterceptor.V_GROUP_MGR_OR_PARTNER)
|
||||
public final void findPartnerStatMember() throws Exception {
|
||||
|
||||
ITObject reqData = this.getParams();
|
||||
|
||||
|
||||
int groupId = reqData.getInt("id");
|
||||
int limit = reqData.getInt("limit");
|
||||
int num = reqData.getInt("num");
|
||||
int uid = reqData.getInt("uid");
|
||||
int rootUid = reqData.getInt("root_uid");
|
||||
int tagId = reqData.getInt("tagId");
|
||||
int tt = reqData.getInt("tt");
|
||||
int beginTime = 0;
|
||||
int endTime = 0;
|
||||
if(tt == 0) {
|
||||
beginTime = reqData.getInt("bt");
|
||||
endTime = reqData.getInt("et");
|
||||
}
|
||||
|
||||
ITObject resData = GroupLogService.findPartnerStatMember(groupId, uid, rootUid, tagId, limit, num, tt, beginTime, endTime);
|
||||
sendResponse(0, resData);
|
||||
}
|
||||
|
||||
@ActionKey(value = Protocol.GROUP_GET_DIRECT_STAT_MEMBER, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP|WebInterceptor.V_GROUP_MGR_OR_PARTNER)
|
||||
public final void getDirectStatMember() throws Exception {
|
||||
|
||||
ITObject reqData = this.getParams();
|
||||
|
||||
|
||||
int groupId = reqData.getInt("id");
|
||||
int limit = reqData.getInt("limit");
|
||||
int num = reqData.getInt("num");
|
||||
int uid = reqData.getInt("uid");
|
||||
int rootUid = reqData.getInt("root_uid");
|
||||
int tt = reqData.getInt("tt");
|
||||
int beginTime = 0;
|
||||
int endTime = 0;
|
||||
if(tt == 0) {
|
||||
beginTime = reqData.getInt("bt");
|
||||
endTime = reqData.getInt("et");
|
||||
}
|
||||
|
||||
ITObject resData = GroupLogService.getDirectStatMember(groupId, uid, rootUid, limit, num, tt, beginTime, endTime);
|
||||
sendResponse(0, resData);
|
||||
}
|
||||
|
||||
|
||||
@ActionKey(value = Protocol.GROUP_GET_PARTNER_STAT_PLAY, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP|WebInterceptor.V_GROUP_MGR_OR_PARTNER)
|
||||
public final void getPartnerStatPlay() throws Exception {
|
||||
|
||||
ITObject reqData = this.getParams();
|
||||
|
||||
|
||||
int groupId = reqData.getInt("id");
|
||||
int limit = reqData.getInt("limit");
|
||||
int num = reqData.getInt("num");
|
||||
int uid = reqData.getInt("uid");
|
||||
int parent_id = reqData.getInt("parent_id");
|
||||
int tt = reqData.getInt("tt");
|
||||
int beginTime = 0;
|
||||
int endTime = 0;
|
||||
if(tt == 0) {
|
||||
beginTime = reqData.getInt("bt");
|
||||
endTime = reqData.getInt("et");
|
||||
}
|
||||
|
||||
ITObject resData = GroupLogService.getPartnerStatPlay(groupId, uid,parent_id,limit, num, tt, beginTime, endTime);
|
||||
sendResponse(0, resData);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取消耗统计
|
||||
*
|
||||
* @throws Exception
|
||||
*/
|
||||
@ActionKey(value = Protocol.GROUP_GET_COST_COUNT, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP|WebInterceptor.V_GROUP_MGR_OR_PARTNER)
|
||||
public final void getCostCount() throws Exception {
|
||||
ITObject reqData = this.getParams();
|
||||
String session = this.getSession();
|
||||
int uid = AccountCache.getAccount(session).id;
|
||||
int groupId = reqData.getInt("id");
|
||||
int beginTime = 0;
|
||||
int endTime = 0;
|
||||
try {
|
||||
beginTime = reqData.getInt("beginTime");
|
||||
endTime = reqData.getInt("endTime");
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
|
||||
}
|
||||
ITObject resData = TObject.newInstance();
|
||||
resData.putTArray("cosume_logs", GroupLogService.getCostCount(groupId, uid, beginTime, endTime));
|
||||
sendResponse(0, resData);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取消耗统计
|
||||
*
|
||||
* @throws Exception
|
||||
*/
|
||||
@ActionKey(value = Protocol.GROUP_GET_ROUND_COUNT, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP)
|
||||
public final void getRoundCount() throws Exception {
|
||||
ITObject reqData = this.getParams();
|
||||
int groupId = reqData.getInt("id");
|
||||
int pid = reqData.getInt("pid");
|
||||
ITArray arr = GroupLogService.getRoundCount(groupId,pid);
|
||||
ITObject resData = TObject.newInstance();
|
||||
resData.putTArray("rounds", arr);
|
||||
sendResponse(0, resData);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取消耗统计
|
||||
*
|
||||
* @throws Exception
|
||||
*/
|
||||
@ActionKey(value = Protocol.GROUP_GET_HPCONSUME_COUNT, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP)
|
||||
public final void getHpConsumeCount() throws Exception {
|
||||
ITObject reqData = this.getParams();
|
||||
int groupId = reqData.getInt("id");
|
||||
int tag = reqData.getInt("tagId");
|
||||
ITArray arr = GroupLogService.getHpConsumeCount(groupId,tag);
|
||||
ITObject resData = TObject.newInstance();
|
||||
resData.putTArray("list", arr);
|
||||
sendResponse(0, resData);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取战绩列表
|
||||
*
|
||||
* @throws Exception
|
||||
*/
|
||||
@ActionKey(value = Protocol.GROUP_GET_RECORDS, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP|WebInterceptor.V_GROUP_MGR_OR_PARTNER)
|
||||
public final void getRecords() throws Exception {
|
||||
ITObject reqData = this.getParams();
|
||||
String session = this.getSession();
|
||||
|
||||
int uid = AccountCache.getAccount(session).id;
|
||||
String platform = reqData.getString("platform");
|
||||
int groupId = reqData.getInt("id");
|
||||
int limit = reqData.getInt("limit");
|
||||
// 数量
|
||||
int num = reqData.getInt("num");
|
||||
int qid = reqData.getInt("qid");
|
||||
int includeMembers = reqData.containsKey("includeMembers") ? reqData.getInt("includeMembers") : 0;
|
||||
int tt = -1;
|
||||
int beginTime = 0;
|
||||
int endTime = 0;
|
||||
if(reqData.containsKey("tt")) {
|
||||
tt = reqData.getInt("tt");
|
||||
if(tt == 0) {
|
||||
beginTime = reqData.getInt("bt");
|
||||
endTime = reqData.getInt("et");
|
||||
}
|
||||
}
|
||||
ITObject resData =GroupLogService.getRecords(platform, groupId, limit, num,qid,uid,includeMembers,tt,beginTime,endTime);
|
||||
sendResponse(0, resData);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取战绩列表
|
||||
*
|
||||
* @throws Exception
|
||||
*/
|
||||
@ActionKey(value = Protocol.GROUP_GET_PERSON_RECORDS, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP)
|
||||
public final void getPersonRecords() throws Exception {
|
||||
ITObject reqData = this.getParams();
|
||||
String session = this.getSession();
|
||||
|
||||
int uid = AccountCache.getAccount(session).id;
|
||||
String platform = reqData.getString("platform");
|
||||
int groupId = reqData.getInt("id");
|
||||
int limit = reqData.getInt("limit");
|
||||
// 数量
|
||||
int num = reqData.getInt("num");
|
||||
int qid = reqData.getInt("qid");
|
||||
int tt = reqData.getInt("tt");
|
||||
int beginTime = 0;
|
||||
int endTime = 0;
|
||||
if(tt == 3) {
|
||||
beginTime = reqData.getInt("bt");
|
||||
endTime = reqData.getInt("et");
|
||||
}
|
||||
ITObject resData =GroupLogService.getPersonRecords(platform, groupId, tt, beginTime, endTime, limit, num, qid, uid);
|
||||
sendResponse(0, resData);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 根据房间ID查询战绩
|
||||
*
|
||||
* @throws Exception
|
||||
*/
|
||||
@ActionKey(value = Protocol.GROUP_FIND_RECORD_ROOM, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP|WebInterceptor.V_GROUP_MGR_OR_PARTNER)
|
||||
public final void findRecordByRoom() throws Exception {
|
||||
ITObject reqData = this.getParams();
|
||||
String session = this.getSession();
|
||||
|
||||
int uid = AccountCache.getAccount(session).id;
|
||||
String platform = reqData.getString("platform");
|
||||
int groupId = reqData.getInt("id");
|
||||
String roomid = reqData.getString("roomid");
|
||||
ITArray data = GroupLogService.findRecordByRoom(platform, groupId, roomid,uid);
|
||||
ITObject resData = TObject.newInstance();
|
||||
resData.putBoolean("is_rec", data!=null && data.size() != 0);
|
||||
if(data != null) {
|
||||
resData.putTArray("rec", data);
|
||||
}
|
||||
sendResponse(0, resData);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取提取体力值详细
|
||||
* @throws Exception
|
||||
*/
|
||||
@ActionKey(value = Protocol.GET_TAKE_LOG, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP|WebInterceptor.V_GROUP_OWNER_OR_MGR_OR_PARTNER)
|
||||
public final void getHpLogTakeInfo() throws Exception {
|
||||
ITObject reqData = this.getParams();
|
||||
String session = this.getSession();
|
||||
|
||||
int groupId = reqData.getInt("id");
|
||||
int limit = reqData.getInt("limit");
|
||||
// 数量
|
||||
int num = reqData.getInt("num");
|
||||
int beginTime = reqData.getInt("beginTime");
|
||||
int endTime = reqData.getInt("endTime");
|
||||
AccountBean acc = AccountCache.getAccount(session);
|
||||
int tagId = 0;
|
||||
try {
|
||||
tagId = reqData.getInt("tagId");
|
||||
}
|
||||
catch(Exception e) {
|
||||
|
||||
}
|
||||
if (tagId == 0)
|
||||
{
|
||||
tagId = acc.id;
|
||||
}
|
||||
ITObject resData = GroupLogService.getHpLogTakeInfo(groupId, acc.id, tagId, limit, num, beginTime, endTime);
|
||||
sendResponse(0, resData);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取提取体力值详细
|
||||
* @throws Exception
|
||||
*/
|
||||
@ActionKey(value = Protocol.GET_BANK_LOG, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP/*|WebInterceptor.V_GROUP_PARTNER*/)
|
||||
public final void getHpLogTakeBankInfo() throws Exception {
|
||||
ITObject reqData = this.getParams();
|
||||
String session = this.getSession();
|
||||
|
||||
int groupId = reqData.getInt("id");
|
||||
int limit = reqData.getInt("limit");
|
||||
// 数量
|
||||
int num = reqData.getInt("num");
|
||||
int beginTime = reqData.getInt("beginTime");
|
||||
int endTime = reqData.getInt("endTime");
|
||||
AccountBean acc = AccountCache.getAccount(session);
|
||||
int tagId = 0;
|
||||
try {
|
||||
tagId = reqData.getInt("tagId");
|
||||
}
|
||||
catch(Exception e) {
|
||||
|
||||
}
|
||||
if (tagId == 0)
|
||||
{
|
||||
tagId = acc.id;
|
||||
}
|
||||
ITObject resData = GroupLogService.getHpLogTakeBankInfo(groupId, acc.id, tagId, limit, num, beginTime, endTime);
|
||||
sendResponse(0, resData);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取体力值统计信息
|
||||
*/
|
||||
@ActionKey(value = Protocol.GET_HP_COUNT_INFO, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP|WebInterceptor.V_GROUP_MGR)
|
||||
public final void getHpCountInfo() throws Exception {
|
||||
ITObject reqData = this.getParams();
|
||||
int groupId = reqData.getInt("id");
|
||||
ITObject resData =GroupLogService.getHpCountInfo(groupId);
|
||||
sendResponse(0, resData);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,66 @@
|
|||
package com.group.controller;
|
||||
|
||||
import com.group.Protocol;
|
||||
import com.group.WebInterceptor;
|
||||
import com.group.service.GroupRoomService;
|
||||
import com.taurus.core.entity.ITObject;
|
||||
import com.taurus.core.plugin.redis.Redis;
|
||||
import com.taurus.core.routes.ActionKey;
|
||||
import com.taurus.web.Controller;
|
||||
import com.taurus.web.WebException;
|
||||
import jdk.nashorn.internal.objects.Global;
|
||||
import redis.clients.jedis.Jedis;
|
||||
|
||||
public class GroupRoomController extends Controller{
|
||||
|
||||
/**
|
||||
* 获取玩家列表
|
||||
*
|
||||
* @throws Exception
|
||||
*/
|
||||
@ActionKey(value = Protocol.GROUP_MATCH_ROOM, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP)
|
||||
public final void matchRoom() throws Exception {
|
||||
String session = this.getSession();
|
||||
ITObject reqData = this.getParams();
|
||||
int groupId = reqData.getInt("id");
|
||||
int pid = reqData.getInt("pid");
|
||||
String platform = reqData.getString("platform");
|
||||
boolean is_null = reqData.containsKey("is_null")? reqData.getBoolean("is_null"):false;
|
||||
|
||||
logger.info("matchRoom() ==> pid = "+pid);
|
||||
|
||||
ITObject resData = GroupRoomService.matchRoom(groupId, pid, session,platform,is_null);
|
||||
this.sendResponse(0, resData);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取玩家列表
|
||||
*
|
||||
* @throws Exception
|
||||
*/
|
||||
@ActionKey(value = Protocol.GROUP_JOIN_ROOM, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP)
|
||||
public final void joinRoom() throws Exception {
|
||||
String session = this.getSession();
|
||||
ITObject reqData = this.getParams();
|
||||
int groupId = reqData.getInt("id");
|
||||
String roomid = reqData.getString("room_id");
|
||||
String platform = reqData.getString("platform");
|
||||
|
||||
ITObject resData = GroupRoomService.joinRoom(groupId, roomid, session,platform);
|
||||
this.sendResponse(0, resData);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取玩家列表
|
||||
*
|
||||
* @throws Exception
|
||||
*/
|
||||
@ActionKey(value = Protocol.GROUP_DEL_ROOM, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP|WebInterceptor.V_GROUP_OWNER)
|
||||
public final void delRoom() throws Exception {
|
||||
ITObject reqData = this.getParams();
|
||||
int groupId = reqData.getInt("id");
|
||||
String roomId = reqData.getString("roomId");
|
||||
ITObject obj = GroupRoomService.delRoom(groupId, roomId);
|
||||
this.sendResponse(0, obj);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,871 @@
|
|||
package com.group.job;
|
||||
|
||||
import com.data.bean.*;
|
||||
import com.data.cache.*;
|
||||
import com.data.util.ErrorCode;
|
||||
import com.data.util.EventType;
|
||||
import com.data.util.Utility;
|
||||
import com.google.protobuf.ByteString;
|
||||
import com.group.service.GroupPublisherService;
|
||||
import com.taurus.core.entity.ITArray;
|
||||
import com.taurus.core.entity.ITObject;
|
||||
import com.taurus.core.entity.TArray;
|
||||
import com.taurus.core.entity.TObject;
|
||||
import com.taurus.core.plugin.database.DataBase;
|
||||
import com.taurus.core.plugin.redis.Redis;
|
||||
import com.taurus.core.plugin.redis.RedisLock;
|
||||
import com.taurus.core.util.*;
|
||||
import com.taurus.web.WebException;
|
||||
import org.quartz.Job;
|
||||
import org.quartz.JobExecutionContext;
|
||||
import org.quartz.JobKey;
|
||||
import redis.clients.jedis.Jedis;
|
||||
import redis.clients.jedis.ScanParams;
|
||||
import redis.clients.jedis.ScanResult;
|
||||
import com.taurus.core.util.StringUtil;
|
||||
import java.io.InputStream;
|
||||
import java.net.URL;
|
||||
import java.io.BufferedReader;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.net.HttpURLConnection;
|
||||
import java.net.URL;
|
||||
import java.util.*;
|
||||
|
||||
public class UpdatePlayRoomJob implements Job{
|
||||
|
||||
private Logger logger = Logger.getLogger(UpdatePlayRoomJob.class);
|
||||
|
||||
public static final String CHANNEL_NAME = "mgr_group";
|
||||
|
||||
private static final String CMD_DEL_ROOM="del_room";
|
||||
private static final String CMD_UPDATE_ROOM="update_room";
|
||||
|
||||
public UpdatePlayRoomJob() {
|
||||
|
||||
}
|
||||
|
||||
private void createPlayRoom(int groupId)
|
||||
{
|
||||
String gp_key = GroupCache.genPidsKey(groupId);
|
||||
Set<String> pids = Redis.use("group1_db11").zrangeByScore(gp_key, 11, 11);
|
||||
if (pids.size() == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
GroupBean gb = GroupCache.getGroup(groupId);
|
||||
if (gb == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
Jedis jedis10 = Redis.use("group1_db10").getJedis();
|
||||
try {
|
||||
|
||||
for (String str : pids) {
|
||||
int pid = Integer.parseInt(str);
|
||||
GroupPlayBean gpb = GroupCache.getPlay(groupId, pid);
|
||||
if (gpb == null)
|
||||
continue;
|
||||
|
||||
if (gpb.robot_room <= 0)
|
||||
continue;
|
||||
|
||||
try {
|
||||
Set<String> rooms = null;
|
||||
Jedis jedis = Redis.use("group1_db11").getJedis();
|
||||
try {
|
||||
int min_value = pid * 10000;
|
||||
int max_value = pid * 10000 + 9999;
|
||||
String grooms_key = GroupCache.genRoomsKey(groupId);
|
||||
rooms = jedis.zrevrangeByScore(grooms_key, max_value, min_value);
|
||||
int qfroomnum = 0;
|
||||
for (String room : rooms) {
|
||||
List<String> room_list = Redis.use("group1_db0").hmget(room, "fake", "status", "round", "id", "times", "players");
|
||||
|
||||
String fake_json = room_list.get(0);
|
||||
if (fake_json == null) {
|
||||
continue;
|
||||
}
|
||||
qfroomnum++;
|
||||
|
||||
String status = room_list.get(1);
|
||||
if (StringUtil.isEmpty(status)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
String strRound = room_list.get(2);
|
||||
if (StringUtil.isEmpty(strRound)) {
|
||||
continue;
|
||||
}
|
||||
int round = Integer.parseInt(strRound);
|
||||
|
||||
String roomId = room_list.get(3);
|
||||
if (StringUtil.isEmpty(roomId)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (round == 0) {
|
||||
roomUpdateEvent(room, groupId, roomId);
|
||||
round++;
|
||||
updateRound(room, groupId, roomId, round);
|
||||
}
|
||||
}
|
||||
|
||||
if (qfroomnum >= gpb.robot_room || rooms.size() >= 20)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
String exist = Redis.use("group1_db1").get("robot_exist");
|
||||
if (StringUtil.isNotEmpty(exist))
|
||||
{
|
||||
createGroupRoom(groupId, pid);
|
||||
|
||||
}
|
||||
}finally {
|
||||
jedis.close();
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
} finally {
|
||||
jedis10.close();
|
||||
}
|
||||
}
|
||||
|
||||
private void updateBlackSpecial(int groupId)
|
||||
{
|
||||
Map<String, String> mapString = Redis.use("group1_db1").hgetAll("gods_special");
|
||||
if (mapString == null)
|
||||
return;
|
||||
|
||||
for (Map.Entry<String, String> entry : mapString.entrySet()) {
|
||||
String strPlayerId = entry.getKey();
|
||||
String strPlayerValue = entry.getValue();
|
||||
int playerId = Integer.parseInt(strPlayerId);
|
||||
GroupMemberBean gmb = GroupCache.getMember(groupId, playerId);
|
||||
if (gmb == null)
|
||||
continue;
|
||||
if (Redis.use("group1_db1").sismember("gods", strPlayerId) == false)
|
||||
{
|
||||
String gm_key = GroupMemberCache.genKey(groupId, playerId);
|
||||
String black_key = Redis.use("group1_db10").hget(gm_key, "group_black_key");
|
||||
if (StringUtil.isEmpty(black_key))
|
||||
{
|
||||
return;
|
||||
}
|
||||
String strblack = Redis.use("group1_db10").hget(black_key, "black");
|
||||
int black = 0;
|
||||
if (StringUtil.isNotEmpty(strblack))
|
||||
{
|
||||
try {
|
||||
black = Integer.parseInt(strblack);
|
||||
if (black == 0)
|
||||
{
|
||||
logger.info("sadd gods " + strPlayerId);
|
||||
Redis.use("group1_db1").sadd("gods", strPlayerId);
|
||||
String StrWhiteValue = Redis.use("group1_db1").hget("gods_value", strPlayerId);
|
||||
if (StringUtil.isEmpty(StrWhiteValue))
|
||||
{
|
||||
Redis.use("group1_db1").hset("gods_value", strPlayerId, strPlayerValue);
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (NumberFormatException e) {
|
||||
black = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void updatePlayRoom(int groupId) {
|
||||
String gp_key = GroupCache.genPidsKey(groupId);
|
||||
Set<String> pids = Redis.use("group1_db11").zrangeByScore(gp_key, 11, 11);
|
||||
if (pids.size() == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
GroupBean gb = GroupCache.getGroup(groupId);
|
||||
if (gb == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
Jedis jedis10 = Redis.use("group1_db10").getJedis();
|
||||
try {
|
||||
|
||||
for (String str : pids) {
|
||||
int pid = Integer.parseInt(str);
|
||||
GroupPlayBean gpb = GroupCache.getPlay(groupId, pid);
|
||||
if (gpb == null)
|
||||
continue;
|
||||
|
||||
if (gpb.robot_room <= 0)
|
||||
continue;
|
||||
|
||||
try {
|
||||
Set<String> rooms = null;
|
||||
Jedis jedis = Redis.use("group1_db11").getJedis();
|
||||
try {
|
||||
int min_value = pid * 10000;
|
||||
int max_value = pid * 10000 + 9999;
|
||||
String grooms_key = GroupCache.genRoomsKey(groupId);
|
||||
rooms = jedis.zrevrangeByScore(grooms_key, max_value, min_value);
|
||||
long time = System.currentTimeMillis() / 1000;
|
||||
for (String room : rooms) {
|
||||
List<String> room_list = Redis.use("group1_db0").hmget(room, "fake", "status", "round", "id", "times", "players", "create_time", "fake_existTime");
|
||||
|
||||
String roomId = room_list.get(3);
|
||||
String createtime = room_list.get(6);
|
||||
|
||||
|
||||
/*if (StringUtil.isEmpty(room_list.get(5))&&Integer.parseInt((System.currentTimeMillis() + "").substring(0, 10))>Integer.parseInt(createtime)+30) {
|
||||
GroupPublisherService.delRoomEvt(groupId, roomId);
|
||||
jedis.zrem(grooms_key, room);
|
||||
Redis.use().hset(room, "status", 3 + "");
|
||||
Redis.use().hincrBy(room, "cache_ver", 1);
|
||||
Redis.use().expire(room, 20);
|
||||
logger.error("del 空 room:" + roomId + " player:"+room_list.get(5) + " fake_json:");
|
||||
continue;
|
||||
}*/
|
||||
ITArray players = TArray.newFromJsonData(room_list.get(5));
|
||||
|
||||
/*if(players.size()==0) {
|
||||
//清理空桌
|
||||
GroupPublisherService.delRoomEvt(groupId, roomId);
|
||||
jedis.zrem(grooms_key, room);
|
||||
Redis.use().hset(room, "status", 3 + "");
|
||||
Redis.use().hincrBy(room, "cache_ver", 1);
|
||||
Redis.use().expire(room, 20);
|
||||
logger.error("del 空 room:" + roomId + " player:"+room_list.get(5) + " fake_json:");
|
||||
continue;
|
||||
}*/
|
||||
|
||||
String fake_json = room_list.get(0);
|
||||
if (fake_json == null)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
String status = room_list.get(1);
|
||||
if(StringUtil.isEmpty(status)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
String strRound = room_list.get(2);
|
||||
if(StringUtil.isEmpty(strRound)) {
|
||||
continue;
|
||||
}
|
||||
int round = Integer.parseInt(strRound);
|
||||
|
||||
|
||||
if(StringUtil.isEmpty(roomId)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
String maxStrRound = (room_list.get(4));
|
||||
if(StringUtil.isEmpty(maxStrRound)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
int maxRound = Integer.parseInt(maxStrRound);
|
||||
if (round == 0) {
|
||||
roomUpdateEvent(room, groupId, roomId);
|
||||
round++;
|
||||
updateRound(room, groupId, roomId, round);
|
||||
continue;
|
||||
}
|
||||
|
||||
Long createTime = Long.parseLong(room_list.get(6));
|
||||
Long useTime = time - createTime;
|
||||
|
||||
String str_fake_existTime = room_list.get(7);
|
||||
int fake_existTime = 30;
|
||||
if (!StringUtil.isEmpty(str_fake_existTime))
|
||||
{
|
||||
fake_existTime = Integer.parseInt(str_fake_existTime);
|
||||
}
|
||||
|
||||
if (fake_existTime * round >= useTime)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
boolean exitGame = false;
|
||||
|
||||
if (round >= 1)
|
||||
{
|
||||
int fake_hp = (int)(Math.random() * 100000);
|
||||
int rate = (int)(Math.random() * 100);
|
||||
for (int i = 0; i < players.size(); i++) {
|
||||
int player_id = players.getInt(i);
|
||||
if (i % 2 == 0)
|
||||
{
|
||||
if (rate < 50)
|
||||
{
|
||||
Redis.use("group1_db10").hincrBy("fake_"+player_id, "fake_hp", fake_hp);
|
||||
}
|
||||
else {
|
||||
Redis.use("group1_db10").hincrBy("fake_"+player_id, "fake_hp", -fake_hp);
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (rate < 50)
|
||||
{
|
||||
Redis.use("group1_db10").hincrBy("fake_"+player_id, "fake_hp", -fake_hp);
|
||||
}
|
||||
else {
|
||||
Redis.use("group1_db10").hincrBy("fake_"+player_id, "fake_hp", fake_hp);
|
||||
}
|
||||
}
|
||||
String fakeHp = Redis.use("group1_db10").hget("fake_"+player_id, "fake_hp");
|
||||
if (!StringUtil.isEmpty(fakeHp))
|
||||
{
|
||||
long curFakeHp = Long.parseLong(fakeHp);
|
||||
if (curFakeHp <= 1000)
|
||||
{
|
||||
curFakeHp = (long)(Math.random() * 10000000);
|
||||
Redis.use("group1_db10").hset("fake_"+player_id, "fake_hp", Long.toString(curFakeHp));
|
||||
exitGame = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
round++;
|
||||
|
||||
if (round > maxRound || exitGame)
|
||||
{
|
||||
for (int i = 0; i < players.size(); i++) {
|
||||
int player_id = players.getInt(i);
|
||||
Redis.use("group1_db1").srem("used_robot", Integer.toString(player_id));
|
||||
Redis.use("group1_db1").sadd("free_robot", Integer.toString(player_id));
|
||||
}
|
||||
GroupPublisherService.delRoomEvt(groupId, roomId);
|
||||
jedis.zrem(grooms_key, room);
|
||||
Redis.use().hset(room, "status", 3 + "");
|
||||
Redis.use().hincrBy(room, "cache_ver", 1);
|
||||
Redis.use().expire(room, 20);
|
||||
// logger.error("del robot room:" + roomId + " player:"+room_list.get(5) + " fake_json:" + fake_json);
|
||||
continue;
|
||||
}
|
||||
updateRound(room, groupId, roomId, round);
|
||||
}
|
||||
}finally {
|
||||
jedis.close();
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
} finally {
|
||||
jedis10.close();
|
||||
}
|
||||
}
|
||||
|
||||
/**解散时间*/
|
||||
private static final String[] DISMISS_TIME = {"30","60","90","180"};
|
||||
/**踢出时间*/
|
||||
private static final String[] KICK_TIME = {"30","60","120","180"};
|
||||
|
||||
private String createGroupRoom(int groupId, int pid) throws Exception {
|
||||
Jedis jedis0 = Redis.use("group1_db0").getJedis();
|
||||
try {
|
||||
GroupPlayBean gpb = GroupCache.getPlay(groupId, pid);
|
||||
if (gpb==null) {
|
||||
throw new WebException(ErrorCode.GROUP_PLAY_EXIST);
|
||||
}
|
||||
|
||||
int gameId = gpb.gameId;
|
||||
GameBean gb = GameCache.getGame(gameId);
|
||||
|
||||
String grooms_key = GroupCache.genRoomsKey(groupId);
|
||||
GroupBean group = GroupCache.getGroup(groupId);
|
||||
ITObject configData = TObject.newFromJsonData(gpb.config);
|
||||
int maxPlayers = gpb.maxPlayers;
|
||||
|
||||
int opt = configData.getInt("opt");
|
||||
String owner_session = AccountCache.genKey(group.owner);
|
||||
|
||||
int dissolve_opt = group.dissolve_opt;
|
||||
int kick_opt = group.kick_opt;
|
||||
|
||||
String newRoomId = Redis.use("group1_db1").rpop("free_room");
|
||||
Redis.use("group1_db1").lpush("free_room", newRoomId);
|
||||
String room_key = "room:" + newRoomId;
|
||||
|
||||
long time = System.currentTimeMillis() / 1000;
|
||||
Map<String, String> roomMap = new HashMap<String, String>();
|
||||
/**
|
||||
* 玩家列表Seat映射
|
||||
*/
|
||||
|
||||
roomMap.put("id", newRoomId);
|
||||
roomMap.put("owner", owner_session);
|
||||
roomMap.put("AA", "0");
|
||||
roomMap.put("agent", "1");
|
||||
roomMap.put("group", groupId+"");
|
||||
roomMap.put("gpid", pid+"");
|
||||
roomMap.put("payer", group.owner+"");
|
||||
roomMap.put("maxPlayers", maxPlayers + "");
|
||||
roomMap.put("times", gb.opt.get(opt)+"");
|
||||
roomMap.put("opt", opt + "");
|
||||
roomMap.put("status", "0");
|
||||
roomMap.put("fake", "1");
|
||||
int fake_existTime = (int)((Math.random() + 0.5) * 40);
|
||||
roomMap.put("fake_existTime", fake_existTime + "");
|
||||
|
||||
roomMap.put("hpOnOff", gpb.hpOnOff+"");
|
||||
roomMap.put("rewardType", gpb.rewardType+"");
|
||||
roomMap.put("rewardValueType", gpb.rewardValueType+"");
|
||||
roomMap.put("xipai_rewardType", gpb.xipai_rewardType+"");
|
||||
roomMap.put("xipai_rewardValueType", gpb.xipai_rewardValueType+"");
|
||||
roomMap.put("dismiss_time", DISMISS_TIME[dissolve_opt-1]);
|
||||
roomMap.put("kick_time", KICK_TIME[kick_opt-1]);
|
||||
roomMap.put("hp_times",gpb.hp_times+"");
|
||||
if(gpb.hpOnOff == 1) {
|
||||
ITObject hpObj = TObject.newFromJsonData(gpb.hpConfig);
|
||||
if (hpObj.getInt("limitInRoom") != null) {
|
||||
roomMap.put("limitInRoom", hpObj.getInt("limitInRoom") + "");
|
||||
}
|
||||
configData.putTObject("hpData", hpObj);
|
||||
}
|
||||
|
||||
configData.del("opt");
|
||||
configData.del("AA");
|
||||
roomMap.put("options", configData.toJson());
|
||||
roomMap.put("game", gameId + "");
|
||||
roomMap.put("open", "1");
|
||||
roomMap.put("round", "0");
|
||||
roomMap.put("create_time", time + "");
|
||||
roomMap.put("cache_ver", "1");
|
||||
|
||||
String exist = Redis.use("group1_db1").get("robot_exist");
|
||||
if (StringUtil.isNotEmpty(exist))
|
||||
{
|
||||
jedis0.hmset(room_key, roomMap);
|
||||
|
||||
/**
|
||||
* pid open status 剩余空位
|
||||
* 11 1 1 00
|
||||
*/
|
||||
Redis.use("group1_db11").zadd(grooms_key, pid*10000+1101, room_key);
|
||||
GroupPublisherService.addRoomEvt(groupId, newRoomId);
|
||||
updateRedisMap(groupId, newRoomId, room_key, roomMap, maxPlayers);
|
||||
return room_key;
|
||||
}
|
||||
return null;
|
||||
} finally {
|
||||
jedis0.close();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新redis回合
|
||||
*/
|
||||
private void updateRound(String roomKey, int groupId,String roomid, int round) {
|
||||
Redis.use().hset(roomKey, "round", Integer.toString(round));
|
||||
roomUpdateEvent(roomKey, groupId, roomid);
|
||||
}
|
||||
|
||||
/**
|
||||
* list to TArray
|
||||
* @param list
|
||||
* @return
|
||||
*/
|
||||
public static final ITArray toTArray(List<Integer> list) {
|
||||
ITArray result = new TArray();
|
||||
for (Integer card : list) {
|
||||
result.addInt(card);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 更新房间redis数据
|
||||
*/
|
||||
public void updateRedisMap(int groupId, String roomId, String roomKey, Map<String, String> redis_room_map, int maxPlayers) {
|
||||
Map<Integer, Integer> playerMapBySeat = new HashMap<Integer, Integer>();
|
||||
for(int i = 1; i <= maxPlayers; i++)
|
||||
{
|
||||
playerMapBySeat.put(i, getRobot(maxPlayers));
|
||||
}
|
||||
|
||||
Iterator<Map.Entry<Integer, Integer>> it = playerMapBySeat.entrySet().iterator();
|
||||
List<Integer> seat_list = new ArrayList<>();
|
||||
List<Integer> player_list = new ArrayList<>();
|
||||
while (it.hasNext()) {
|
||||
Map.Entry<Integer, Integer> entry = (Map.Entry<Integer, Integer>) it.next();
|
||||
seat_list.add(entry.getKey());
|
||||
player_list.add(entry.getValue());
|
||||
}
|
||||
redis_room_map.put("players", toTArray(player_list).toJson());
|
||||
redis_room_map.put("seats", toTArray(seat_list).toJson());
|
||||
Redis.use().hmset(roomKey, redis_room_map);
|
||||
updateRound(roomKey, groupId, roomId, 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* 玩家加入房间刷新总服圈子缓存
|
||||
*/
|
||||
public void roomUpdateEvent(String roomKey, int groupId,String roomid) {
|
||||
Redis.use("group1_db0").hincrBy(roomKey, "cache_ver", 1);
|
||||
updateRoomEvt(groupId, roomid);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 更新房间事件
|
||||
* @param groupId
|
||||
* @param roomid
|
||||
*/
|
||||
public static void updateRoomEvt(int groupId,String roomid) {
|
||||
if(groupId == 0)return;
|
||||
ITObject data = TObject.newInstance();
|
||||
data.putInt("gid", groupId);
|
||||
data.putUtfString("roomid", roomid);
|
||||
data.putUtfString("cmd", CMD_UPDATE_ROOM);
|
||||
Redis.use("group1_db11").publish(CHANNEL_NAME, data.toJson());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute(JobExecutionContext context) {
|
||||
|
||||
JobKey jobKey = context.getJobDetail().getKey();
|
||||
if(jobKey.getName().equals("update_play_room") ) {
|
||||
//logger.info("执行成功" + jobKey.getName());
|
||||
Set<String> robotGroup = Redis.use("group1_db1").smembers("robot_group");
|
||||
for(String strGroupId:robotGroup){
|
||||
updatePlayRoom(Integer.parseInt(strGroupId));
|
||||
updateBlackSpecial(Integer.parseInt(strGroupId));
|
||||
}
|
||||
}
|
||||
else if(jobKey.getName().equals("create_play_room") ) {
|
||||
//logger.info("执行成功" + jobKey.getName());
|
||||
Set<String> robotGroup = Redis.use("group1_db1").smembers("robot_group");
|
||||
for(String strGroupId:robotGroup){
|
||||
createPlayRoom(Integer.parseInt(strGroupId));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public int getRobot(int maxPlayers)
|
||||
{
|
||||
long freeRobotNum = Redis.use("group1_db1").scard("free_robot");
|
||||
if (freeRobotNum < maxPlayers)
|
||||
{
|
||||
long useRobotNum = Redis.use("group1_db1").scard("used_robot");
|
||||
if (useRobotNum >= 100)
|
||||
{
|
||||
logger.warn("robot not enough, cur used robot " + useRobotNum);
|
||||
}
|
||||
try {
|
||||
createRobot();
|
||||
freeRobotNum = Redis.use("group1_db1").scard("free_robot");
|
||||
if (freeRobotNum < maxPlayers)
|
||||
{
|
||||
logger.error("create robot failed............");
|
||||
return 0;
|
||||
}
|
||||
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
logger.error(e);
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
while(freeRobotNum > 0)
|
||||
{
|
||||
String strRobotId = Redis.use("group1_db1").spop("free_robot");
|
||||
freeRobotNum = Redis.use("group1_db1").scard("free_robot");
|
||||
if (StringUtil.isEmpty(strRobotId))
|
||||
{
|
||||
createRobot();
|
||||
continue;
|
||||
}
|
||||
else {
|
||||
AccountBean acc_bean = AccountCache.getAccount(Integer.parseInt(strRobotId));
|
||||
if (acc_bean != null)
|
||||
{
|
||||
URL url = null;
|
||||
try {
|
||||
url = new URL(acc_bean.portrait);
|
||||
InputStream in = url.openStream();
|
||||
String jsonStr = inputStreamToString(in);
|
||||
String md5 = MD5.getInstance().getHash(jsonStr);
|
||||
if (md5.equals("787d66f3fdfa8df70795629c62a3a850") || md5.equals("f1fce77813a0fc9660c76d523813bb59") || md5.equals("d629ac346299c2640dfb6e8fd4232646") || md5.equals("1e76068afc60d7dcff851936b3c2b24b") )
|
||||
{
|
||||
//logger.info("will use robot:" + strRobotId + " head:" + acc_bean.portrait + " md5:" + md5);
|
||||
url = null;
|
||||
}
|
||||
//logger.info("will use robot:" + strRobotId + " head:" + acc_bean.portrait + " md5:" + md5);
|
||||
} catch (Exception e1) {
|
||||
url = null;
|
||||
}
|
||||
if (url == null)
|
||||
{
|
||||
logger.error("robot head error, this robot:"+ strRobotId + " will not use");
|
||||
continue;
|
||||
}
|
||||
}
|
||||
else {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
Redis.use("group1_db1").sadd("used_robot", strRobotId);
|
||||
int robotId = Integer.parseInt(strRobotId);
|
||||
String fakeHp = Redis.use("group1_db10").hget("fake_"+strRobotId, "fake_hp");
|
||||
if (StringUtil.isEmpty(fakeHp))
|
||||
{
|
||||
int fake_hp = (int)(Math.random() * 10000000);
|
||||
Redis.use("group1_db10").hset("fake_"+strRobotId, "fake_hp", Integer.toString(fake_hp));
|
||||
}
|
||||
return robotId;
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
logger.error(e);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 登录
|
||||
* @throws Exception
|
||||
*/
|
||||
public final void createRobot() throws Exception {
|
||||
int num = 100;
|
||||
int mng = 9999;
|
||||
|
||||
String listSql = "select * from old_account";
|
||||
ITArray resultArray = DataBase.use().executeQueryByTArray(listSql);
|
||||
ArrayList<String> nameList = new ArrayList<>();
|
||||
ArrayList<String> headList = new ArrayList<>();
|
||||
for(int i = 0; i < resultArray.size(); i++)
|
||||
{
|
||||
ITObject userData = resultArray.getTObject(i);
|
||||
String nick = userData.getUtfString("nick");
|
||||
nameList.add(nick);
|
||||
String head = userData.getUtfString("portrait");
|
||||
headList.add(head);
|
||||
}
|
||||
|
||||
Math.random();
|
||||
Collections.shuffle(nameList);
|
||||
Collections.shuffle(headList);
|
||||
|
||||
for(int i = 0; i < num; i++)
|
||||
{
|
||||
String sql = "";
|
||||
int accountid = create_register(mng, "xx123456xx", nameList, headList);
|
||||
AccountBean acc_bean = AccountCache.getAccount(accountid);
|
||||
if (acc_bean == null)
|
||||
{
|
||||
sql = String.format("SELECT * FROM account WHERE id ='%d'",
|
||||
accountid);
|
||||
|
||||
ITArray resultArray2 = DataBase.use().executeQueryByTArray(sql);
|
||||
if(resultArray2.size() ==0) {
|
||||
throw new WebException(ErrorCode._FAILED);
|
||||
}
|
||||
|
||||
ITObject userData = resultArray2.getTObject(0);
|
||||
UpdateUserData(userData, accountid);
|
||||
|
||||
acc_bean = AccountCache.getAccount(accountid);
|
||||
}
|
||||
|
||||
Redis.use("group1_db1").sadd("free_robot", Integer.toString(acc_bean.id));
|
||||
int fake_hp = (int)(Math.random() * 10000000);
|
||||
Redis.use("group1_db10").hset("fake_"+acc_bean.id, "fake_hp", Integer.toString(fake_hp));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @return
|
||||
* @throws Exception
|
||||
*/
|
||||
private final int UpdateUserData(ITObject reqData,long id) throws Exception {
|
||||
ITObject userData = TObject.newInstance();
|
||||
userData.putInt("id", (int)id);
|
||||
|
||||
userData.putUtfString("acc", reqData.getUtfString("acc"));
|
||||
userData.putUtfString("portrait", reqData.getUtfString("portrait"));
|
||||
userData.putUtfString("nick", reqData.getUtfString("nick"));
|
||||
int sex = reqData.getInt("sex");
|
||||
if(sex == 0) {
|
||||
sex = 1;
|
||||
reqData.putInt("sex", sex);
|
||||
}
|
||||
userData.putInt("sex", sex);
|
||||
|
||||
userData.putInt("mng", 0);
|
||||
userData.putInt("type", 0);
|
||||
if(reqData.containsKey("diamo")) {
|
||||
userData.putInt("diamo", reqData.getInt("diamo"));
|
||||
}
|
||||
|
||||
userData.putInt("invitation", 1);
|
||||
updateSession(userData, (int) id);
|
||||
return (int)id;
|
||||
}
|
||||
|
||||
|
||||
private static String updateSession(ITObject userData, int id) {
|
||||
String session = AccountCache.genKey(id);
|
||||
Map<String, String> map = new HashMap<String, String>();
|
||||
Utils.objectToMap(userData, map);
|
||||
|
||||
Jedis jedis0 = Redis.use("group1_db0").getJedis();
|
||||
try {
|
||||
jedis0.hmset(session, map);
|
||||
BaseCache.updateCacheVer(jedis0, session);
|
||||
}finally {
|
||||
jedis0.close();
|
||||
}
|
||||
|
||||
return session;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* @description: 将输入流转换成字符串
|
||||
* @author: Jeff
|
||||
* @date: 2019年12月15日
|
||||
* @param inputStream 输入流
|
||||
* @return
|
||||
*/
|
||||
private static String inputStreamToString(InputStream inputStream) {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
InputStreamReader inputStreamReader;
|
||||
try {
|
||||
inputStreamReader = new InputStreamReader(inputStream, "utf-8");
|
||||
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
|
||||
String str = null;
|
||||
while ((str = bufferedReader.readLine()) != null) {
|
||||
buffer.append(str);
|
||||
}
|
||||
// 释放资源
|
||||
bufferedReader.close();
|
||||
inputStreamReader.close();
|
||||
inputStream.close();
|
||||
} catch (UnsupportedEncodingException e) {
|
||||
e.printStackTrace();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return buffer.toString();
|
||||
}
|
||||
|
||||
private final int create_register(int mng, String password, ArrayList<String> nickList, ArrayList<String> headList) throws Exception {
|
||||
int count = 0;
|
||||
long id = 0;
|
||||
ArrayList<String> list = new ArrayList<>();
|
||||
for(int i = 0; i < 10; i++)
|
||||
{
|
||||
String strId = Redis.use("group1_db1").rpop("free_account");
|
||||
if (StringUtil.isEmpty(strId))
|
||||
{
|
||||
break;
|
||||
}
|
||||
list.add(strId);
|
||||
}
|
||||
//logger.info("free_account:"+list.toString());
|
||||
|
||||
Collections.shuffle(list);
|
||||
|
||||
do {
|
||||
id = Long.parseLong(list.remove(0));
|
||||
String sql = "SELECT id FROM account WHERE id =" + id;
|
||||
ITArray resultArray = DataBase.use().executeQueryByTArray(sql);
|
||||
if (resultArray.size() == 0)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}while(count++ <= 10);
|
||||
|
||||
for(int i = 0; i < list.size(); i++)
|
||||
{
|
||||
Redis.use("group1_db1").lpush("free_account", list.get(i));
|
||||
}
|
||||
|
||||
if (id == 0)
|
||||
{
|
||||
throw new WebException(ErrorCode._FAILED);
|
||||
}
|
||||
|
||||
ITObject userData = TObject.newInstance();
|
||||
userData.putInt("id", (int)id);
|
||||
|
||||
userData.putUtfString("acc", "" + id);
|
||||
userData.putUtfString("portrait", "");
|
||||
while (headList.size() > 0)
|
||||
{
|
||||
String head = null;
|
||||
try {
|
||||
head = headList.remove(0);
|
||||
URL url = new URL(head);
|
||||
InputStream in = url.openStream();
|
||||
String jsonStr = inputStreamToString(in);
|
||||
String md5 = MD5.getInstance().getHash(jsonStr);
|
||||
logger.info("robot:" + id + " head:" + head + " md5:" + md5);
|
||||
if (md5.equals("787d66f3fdfa8df70795629c62a3a850") || md5.equals("f1fce77813a0fc9660c76d523813bb59") || md5.equals("d629ac346299c2640dfb6e8fd4232646") || md5.equals("1e76068afc60d7dcff851936b3c2b24b") )
|
||||
{
|
||||
head = null;
|
||||
}
|
||||
} catch (Exception e1) {
|
||||
head = null;
|
||||
}
|
||||
if (head != null)
|
||||
{
|
||||
userData.putUtfString("portrait", head); //头像
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
String nick = "";
|
||||
if (nickList.size() > 0)
|
||||
{
|
||||
nick = nickList.remove(0);
|
||||
}
|
||||
nick = nick.replaceAll("[^a-zA-Z0-9\\u4e00-\\u9fa5]", " ");
|
||||
userData.putUtfString("nick", nick);
|
||||
int sex = 1;
|
||||
if(sex == 0) {
|
||||
sex = 1;
|
||||
}
|
||||
userData.putInt("sex", sex);
|
||||
userData.putInt("diamo", 0);
|
||||
userData.putInt("mng", 0);
|
||||
userData.putInt("regTime", mng);
|
||||
userData.putInt("type", 0);
|
||||
userData.putUtfString("password", Utils.getMD5Hash(password));
|
||||
long reg_time = System.currentTimeMillis() / 1000;
|
||||
userData.putLong("reg_time", reg_time);
|
||||
logger.info("create robot account:"+userData.toJson()+" password:" + password);
|
||||
int result = DataBase.use().insert("account", userData);
|
||||
if (result == -1) {
|
||||
throw new WebException(ErrorCode._FAILED);
|
||||
}
|
||||
userData.putInt("invitation", 1);
|
||||
String session = updateSession(userData, (int) id);
|
||||
return (int)id;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,756 @@
|
|||
package com.group.job;
|
||||
|
||||
import com.data.bean.*;
|
||||
import com.data.cache.*;
|
||||
import com.data.util.ErrorCode;
|
||||
import com.group.service.GroupPublisherService;
|
||||
import com.taurus.core.entity.ITArray;
|
||||
import com.taurus.core.entity.ITObject;
|
||||
import com.taurus.core.entity.TArray;
|
||||
import com.taurus.core.entity.TObject;
|
||||
import com.taurus.core.plugin.database.DataBase;
|
||||
import com.taurus.core.plugin.redis.Redis;
|
||||
import com.taurus.core.util.Logger;
|
||||
import com.taurus.core.util.MD5;
|
||||
import com.taurus.core.util.StringUtil;
|
||||
import com.taurus.core.util.Utils;
|
||||
import com.taurus.web.WebException;
|
||||
import org.quartz.Job;
|
||||
import org.quartz.JobExecutionContext;
|
||||
import org.quartz.JobKey;
|
||||
import org.slf4j.helpers.Util;
|
||||
import redis.clients.jedis.Jedis;
|
||||
|
||||
import java.io.*;
|
||||
import java.net.URL;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
|
||||
import static com.group.service.GroupRoomService._getSvr;
|
||||
|
||||
public class UpdateRobotRoomJob implements Job{
|
||||
|
||||
private Logger logger = Logger.getLogger(UpdateRobotRoomJob.class);
|
||||
|
||||
public static final String CHANNEL_NAME = "mgr_group";
|
||||
|
||||
private static final String CMD_DEL_ROOM="del_room";
|
||||
private static final String CMD_UPDATE_ROOM="update_room";
|
||||
|
||||
public UpdateRobotRoomJob() {
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**解散时间*/
|
||||
private static final String[] DISMISS_TIME = {"30","60","90","180"};
|
||||
/**踢出时间*/
|
||||
private static final String[] KICK_TIME = {"30","60","120","180"};
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 更新redis回合
|
||||
*/
|
||||
private void updateRound(String roomKey, int groupId,String roomid, int round) {
|
||||
Redis.use().hset(roomKey, "round", Integer.toString(round));
|
||||
roomUpdateEvent(roomKey, groupId, roomid);
|
||||
}
|
||||
|
||||
/**
|
||||
* list to TArray
|
||||
* @param list
|
||||
* @return
|
||||
*/
|
||||
public static final ITArray toTArray(List<Integer> list) {
|
||||
ITArray result = new TArray();
|
||||
for (Integer card : list) {
|
||||
result.addInt(card);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 更新房间redis数据
|
||||
*/
|
||||
public void updateRedisMap(int groupId, String roomId, String roomKey, Map<String, String> redis_room_map, int maxPlayers) {
|
||||
Map<Integer, Integer> playerMapBySeat = new HashMap<Integer, Integer>();
|
||||
for(int i = 1; i <= maxPlayers; i++)
|
||||
{
|
||||
playerMapBySeat.put(i, getRobot(maxPlayers));
|
||||
}
|
||||
|
||||
Iterator<Map.Entry<Integer, Integer>> it = playerMapBySeat.entrySet().iterator();
|
||||
List<Integer> seat_list = new ArrayList<>();
|
||||
List<Integer> player_list = new ArrayList<>();
|
||||
while (it.hasNext()) {
|
||||
Map.Entry<Integer, Integer> entry = (Map.Entry<Integer, Integer>) it.next();
|
||||
seat_list.add(entry.getKey());
|
||||
player_list.add(entry.getValue());
|
||||
}
|
||||
redis_room_map.put("players", toTArray(player_list).toJson());
|
||||
redis_room_map.put("seats", toTArray(seat_list).toJson());
|
||||
Redis.use().hmset(roomKey, redis_room_map);
|
||||
updateRound(roomKey, groupId, roomId, 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* 玩家加入房间刷新总服圈子缓存
|
||||
*/
|
||||
public void roomUpdateEvent(String roomKey, int groupId,String roomid) {
|
||||
Redis.use("group1_db0").hincrBy(roomKey, "cache_ver", 1);
|
||||
updateRoomEvt(groupId, roomid);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 更新房间事件
|
||||
* @param groupId
|
||||
* @param roomid
|
||||
*/
|
||||
public static void updateRoomEvt(int groupId,String roomid) {
|
||||
if(groupId == 0)return;
|
||||
ITObject data = TObject.newInstance();
|
||||
data.putInt("gid", groupId);
|
||||
data.putUtfString("roomid", roomid);
|
||||
data.putUtfString("cmd", CMD_UPDATE_ROOM);
|
||||
Redis.use("group1_db11").publish(CHANNEL_NAME, data.toJson());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute(JobExecutionContext context) {
|
||||
|
||||
JobKey jobKey = context.getJobDetail().getKey();
|
||||
if(jobKey.getName().equals("update_robot_room") ) {
|
||||
updateRobotRoom();
|
||||
}else if(jobKey.getName().equals("create_robot_room") ) {
|
||||
createRobotRoom();
|
||||
}
|
||||
}
|
||||
|
||||
public void updateRobotRoom(){
|
||||
|
||||
Jedis js2 = Redis.use("group1_db2").getJedis();
|
||||
Jedis js0 = Redis.use("group1_db0").getJedis();
|
||||
Jedis js11 = Redis.use("group1_db11").getJedis();
|
||||
String wokelock = "wokelock";
|
||||
try{
|
||||
int groupId = 426149;
|
||||
String gp_key = GroupCache.genPidsKey(groupId);
|
||||
Set<String> pids = Redis.use("group1_db11").zrangeByScore(gp_key, 9, 66);
|
||||
|
||||
if (pids.size() == 0) {
|
||||
return;
|
||||
}
|
||||
GroupBean gb = GroupCache.getGroup(groupId);
|
||||
if (gb == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
for (String str : pids) {
|
||||
int pid = Integer.parseInt(str);
|
||||
GroupPlayBean gpb = GroupCache.getPlay(groupId, pid);
|
||||
|
||||
|
||||
//获取所有房间
|
||||
|
||||
//Set<String> rooms = js11.zrevrangeByScore("g{426149}:rooms", min_value, max_value);
|
||||
String allrobotkeys = "{robot426149}";
|
||||
int min_value = pid * 10000;
|
||||
int max_value = pid * 10000 + 9999;
|
||||
String grooms_key = GroupCache.genRoomsKey(groupId);
|
||||
Set<String> rooms = js11.zrevrangeByScore(grooms_key, max_value, min_value);
|
||||
long sttime = System.currentTimeMillis() / 1000;
|
||||
for (String room : rooms) {
|
||||
List<String> room_list = js0.hmget(room, "robot", "status", "create_time", "id", "players","game");
|
||||
String robot = room_list.get(0);
|
||||
if (robot == null) {
|
||||
continue;
|
||||
}
|
||||
ITArray players = TArray.newFromJsonData(room_list.get(4));
|
||||
if (players.size() == 2) {
|
||||
//同步状态
|
||||
//判断players是否有在机器人中
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
String roomtime = room_list.get(2);
|
||||
if (roomtime == null) {
|
||||
continue;
|
||||
}
|
||||
String gameid = room_list.get(5);
|
||||
if (gameid == null) {
|
||||
continue;
|
||||
}
|
||||
|
||||
String roomId = room_list.get(3);
|
||||
int time = Integer.parseInt(roomtime);
|
||||
if (time+20 < sttime) {
|
||||
if(players.size()>0){
|
||||
//判断是否存在
|
||||
String s = js2.get(wokelock+players.get(0));
|
||||
if(StringUtil.isNotEmpty(s)){
|
||||
js2.set(wokelock+players.get(0),1+"");
|
||||
js2.expire(wokelock+players.get(0),20);
|
||||
}
|
||||
}
|
||||
|
||||
//解散房间
|
||||
GroupPublisherService.delRoomEvt(groupId, roomId);
|
||||
js11.zrem(grooms_key, room);
|
||||
Redis.use().hset(room, "status", 3 + "");
|
||||
Redis.use().hincrBy(room, "cache_ver", 1);
|
||||
Redis.use().expire(room, 20);
|
||||
// logger.error("del 空 robot room:" + roomId + " player:"+room_list.get(4) + " fake_json:");
|
||||
continue;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
}finally {
|
||||
js0.close();
|
||||
js2.close();
|
||||
js11.close();
|
||||
}
|
||||
}
|
||||
|
||||
public void createRobotRoom() {
|
||||
//1、获取对应的机器人id
|
||||
Jedis js2 = Redis.use("group1_db2").getJedis();
|
||||
Jedis js11 = Redis.use("group1_db11").getJedis();
|
||||
String wokelock = "wokelock";
|
||||
try{
|
||||
int robotid = 0;
|
||||
String allrobotkeys = "{robot426149}";
|
||||
int groupid = 426149;
|
||||
//获取玩法列表
|
||||
Set<String> pids = js11.keys("g{426149}:play:*");
|
||||
List<Integer> okpids = new ArrayList<>();
|
||||
for (String pid : pids) {
|
||||
String gameId = js11.hget(pid,"gameId");
|
||||
if(Integer.parseInt(gameId) == 10){
|
||||
String rpid = js11.hget(pid,"id");
|
||||
okpids.add(Integer.parseInt(rpid));
|
||||
|
||||
}
|
||||
if(Integer.parseInt(gameId) == 22){
|
||||
String rpid = js11.hget(pid,"id");
|
||||
okpids.add(Integer.parseInt(rpid));
|
||||
}
|
||||
/*if(Integer.parseInt(gameId) == 66){
|
||||
//if(Integer.parseInt(pid)==52||Integer.parseInt(pid)==26){
|
||||
String rpid = js11.hget(pid,"id");
|
||||
okpids.add(Integer.parseInt(rpid));
|
||||
//}
|
||||
|
||||
}*/
|
||||
}
|
||||
//随机生产
|
||||
int pidindex = 0;
|
||||
int pidindex2 = 0;
|
||||
int pidindex3 = 0;
|
||||
int pidindex4 = 0;
|
||||
int pidindex5 = 0;
|
||||
pidindex = new Random().nextInt(okpids.size()-1);
|
||||
pidindex2 = new Random().nextInt(okpids.size()-1);
|
||||
pidindex3 = new Random().nextInt(okpids.size()-1);
|
||||
pidindex4 = new Random().nextInt(okpids.size()-1);
|
||||
pidindex5 = new Random().nextInt(okpids.size()-1);
|
||||
|
||||
|
||||
List<Integer> plist = new ArrayList<>();
|
||||
plist.add(okpids.get(pidindex));
|
||||
plist.add(okpids.get(pidindex2));
|
||||
plist.add(okpids.get(pidindex3));
|
||||
plist.add(okpids.get(pidindex4));
|
||||
plist.add(okpids.get(pidindex5));
|
||||
|
||||
for(Integer pid : plist) {
|
||||
String gameIds = js11.hget("g{426149}:play:"+pid,"gameId");
|
||||
Map<String,String> jsRobot= js2.hgetAll(allrobotkeys+gameIds);
|
||||
|
||||
for (String key : jsRobot.keySet()) {
|
||||
|
||||
int tr = new Random().nextInt(60);
|
||||
String tmp = js2.get(wokelock+key);
|
||||
if(StringUtil.isEmpty(tmp)){
|
||||
if(tr<20) {
|
||||
//可以工作
|
||||
robotid = Integer.parseInt(key);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
if (robotid > 0){
|
||||
//查询robotid是否在房间
|
||||
|
||||
Set<String> rooms = null;
|
||||
int min_value = 100000;
|
||||
int max_value = 999999;
|
||||
String grooms_key = GroupCache.genRoomsKey(groupid);
|
||||
rooms = js11.zrevrangeByScore(grooms_key, max_value, min_value);
|
||||
int qfroomnum = 0;
|
||||
boolean flag = true;
|
||||
for (String room : rooms) {
|
||||
List<String> room_list = Redis.use("group1_db0").hmget(room, "robot", "players");
|
||||
String robot = room_list.get(0);
|
||||
if (robot == null) {
|
||||
continue;
|
||||
}
|
||||
String playerstr = room_list.get(1);
|
||||
if (playerstr.contains(robotid+"")) {
|
||||
flag = false;
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
if(flag){
|
||||
js2.set(wokelock+robotid,1+"");
|
||||
js2.expire(wokelock+robotid,900);
|
||||
createGroupRoom(groupid,pid,robotid);
|
||||
}else{
|
||||
js2.set(wokelock+robotid,1+"");
|
||||
js2.expire(wokelock+robotid,900);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}finally {
|
||||
js2.close();
|
||||
js11.close();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
private String createGroupRoom(int groupId, int pid,int robotid) throws Exception {
|
||||
Jedis jedis0 = Redis.use("group1_db0").getJedis();
|
||||
try {
|
||||
|
||||
GroupPlayBean gpb = GroupCache.getPlay(groupId, pid);
|
||||
if (gpb==null) {
|
||||
throw new WebException(ErrorCode.GROUP_PLAY_EXIST);
|
||||
}
|
||||
|
||||
int gameId = gpb.gameId;
|
||||
GameBean gb = GameCache.getGame(gameId);
|
||||
|
||||
String grooms_key = GroupCache.genRoomsKey(groupId);
|
||||
GroupBean group = GroupCache.getGroup(groupId);
|
||||
ITObject configData = TObject.newFromJsonData(gpb.config);
|
||||
int maxPlayers = gpb.maxPlayers;
|
||||
|
||||
int opt = configData.getInt("opt");
|
||||
String owner_session = AccountCache.genKey(group.owner);
|
||||
|
||||
int dissolve_opt = group.dissolve_opt;
|
||||
int kick_opt = group.kick_opt;
|
||||
|
||||
String newRoomId = Redis.use("group1_db1").rpop("free_room");
|
||||
Redis.use("group1_db1").lpush("free_room", newRoomId);
|
||||
String room_key = "room:" + newRoomId;
|
||||
|
||||
|
||||
|
||||
|
||||
String svr = _getSvr(jedis0,gb);
|
||||
if (svr == null) {
|
||||
throw new WebException(ErrorCode.NO_SERVICE);
|
||||
}
|
||||
|
||||
Integer pay = gb.pay.get("pay"+opt+"_"+maxPlayers);
|
||||
|
||||
|
||||
long time = System.currentTimeMillis() / 1000;
|
||||
Map<String, String> roomMap = new HashMap<String, String>();
|
||||
/**
|
||||
* 玩家列表Seat映射
|
||||
*/
|
||||
roomMap.put("robot", "1");
|
||||
int robot_existTime = (int)((Math.random() + 0.5) * 40);
|
||||
roomMap.put("robot_existTime", robot_existTime + "");
|
||||
|
||||
roomMap.put("id", newRoomId);
|
||||
roomMap.put("owner", owner_session);
|
||||
roomMap.put("svr", svr);
|
||||
roomMap.put("AA", "0");
|
||||
roomMap.put("pay", pay+"");
|
||||
roomMap.put("agent", "1");
|
||||
roomMap.put("group", groupId+"");
|
||||
roomMap.put("gpid", pid+"");
|
||||
roomMap.put("payer", group.owner+"");
|
||||
roomMap.put("maxPlayers", maxPlayers + "");
|
||||
roomMap.put("times", gb.opt.get(opt)+"");
|
||||
roomMap.put("opt", opt + "");
|
||||
roomMap.put("status", "0");
|
||||
roomMap.put("hpOnOff", gpb.hpOnOff+"");
|
||||
roomMap.put("rewardType", gpb.rewardType+"");
|
||||
roomMap.put("rewardValueType", gpb.rewardValueType+"");
|
||||
roomMap.put("xipai_rewardType", gpb.xipai_rewardType+"");
|
||||
roomMap.put("xipai_rewardValueType", gpb.xipai_rewardValueType+"");
|
||||
roomMap.put("dismiss_time", DISMISS_TIME[dissolve_opt-1]);
|
||||
roomMap.put("kick_time", KICK_TIME[kick_opt-1]);
|
||||
roomMap.put("hp_times",gpb.hp_times+"");
|
||||
if(gpb.hpOnOff == 1) {
|
||||
ITObject hpObj = TObject.newFromJsonData(gpb.hpConfig);
|
||||
if (hpObj.getInt("limitInRoom") != null) {
|
||||
roomMap.put("limitInRoom", hpObj.getInt("limitInRoom") + "");
|
||||
}
|
||||
configData.putTObject("hpData", hpObj);
|
||||
}
|
||||
|
||||
configData.del("opt");
|
||||
configData.del("AA");
|
||||
roomMap.put("options", configData.toJson());
|
||||
roomMap.put("game", gameId + "");
|
||||
roomMap.put("open", "1");
|
||||
roomMap.put("round", "0");
|
||||
roomMap.put("create_time", time + "");
|
||||
roomMap.put("cache_ver", "1");
|
||||
|
||||
|
||||
|
||||
|
||||
List<Integer> seat_list = new ArrayList<>();
|
||||
List<Integer> player_list = new ArrayList<>();
|
||||
|
||||
seat_list.add(1);
|
||||
player_list.add(robotid);
|
||||
|
||||
roomMap.put("players", toTArray(player_list).toJson());
|
||||
roomMap.put("seats", toTArray(seat_list).toJson());
|
||||
|
||||
|
||||
jedis0.hmset(room_key, roomMap);
|
||||
|
||||
/**
|
||||
* pid open status 剩余空位
|
||||
* 11 1 1 00
|
||||
*/
|
||||
Redis.use("group1_db11").zadd(grooms_key, pid*10000+1101, room_key);
|
||||
GroupPublisherService.addRoomEvt(groupId, newRoomId);
|
||||
//updateRedisMap(groupId, newRoomId, room_key, roomMap, maxPlayers);
|
||||
return room_key;
|
||||
} finally {
|
||||
jedis0.close();
|
||||
}
|
||||
}
|
||||
|
||||
public int getRobot(int maxPlayers)
|
||||
{
|
||||
long freeRobotNum = Redis.use("group1_db1").scard("free_robot");
|
||||
if (freeRobotNum < maxPlayers)
|
||||
{
|
||||
long useRobotNum = Redis.use("group1_db1").scard("used_robot");
|
||||
if (useRobotNum >= 100)
|
||||
{
|
||||
logger.warn("robot not enough, cur used robot " + useRobotNum);
|
||||
}
|
||||
try {
|
||||
createRobot();
|
||||
freeRobotNum = Redis.use("group1_db1").scard("free_robot");
|
||||
if (freeRobotNum < maxPlayers)
|
||||
{
|
||||
logger.error("create robot failed............");
|
||||
return 0;
|
||||
}
|
||||
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
logger.error(e);
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
while(freeRobotNum > 0)
|
||||
{
|
||||
String strRobotId = Redis.use("group1_db1").spop("free_robot");
|
||||
freeRobotNum = Redis.use("group1_db1").scard("free_robot");
|
||||
if (StringUtil.isEmpty(strRobotId))
|
||||
{
|
||||
createRobot();
|
||||
continue;
|
||||
}
|
||||
else {
|
||||
AccountBean acc_bean = AccountCache.getAccount(Integer.parseInt(strRobotId));
|
||||
if (acc_bean != null)
|
||||
{
|
||||
URL url = null;
|
||||
try {
|
||||
url = new URL(acc_bean.portrait);
|
||||
InputStream in = url.openStream();
|
||||
String jsonStr = inputStreamToString(in);
|
||||
String md5 = MD5.getInstance().getHash(jsonStr);
|
||||
if (md5.equals("787d66f3fdfa8df70795629c62a3a850") || md5.equals("f1fce77813a0fc9660c76d523813bb59") || md5.equals("d629ac346299c2640dfb6e8fd4232646") || md5.equals("1e76068afc60d7dcff851936b3c2b24b") )
|
||||
{
|
||||
//logger.info("will use robot:" + strRobotId + " head:" + acc_bean.portrait + " md5:" + md5);
|
||||
url = null;
|
||||
}
|
||||
//logger.info("will use robot:" + strRobotId + " head:" + acc_bean.portrait + " md5:" + md5);
|
||||
} catch (Exception e1) {
|
||||
url = null;
|
||||
}
|
||||
if (url == null)
|
||||
{
|
||||
logger.error("robot head error, this robot:"+ strRobotId + " will not use");
|
||||
continue;
|
||||
}
|
||||
}
|
||||
else {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
Redis.use("group1_db1").sadd("used_robot", strRobotId);
|
||||
int robotId = Integer.parseInt(strRobotId);
|
||||
String fakeHp = Redis.use("group1_db10").hget("fake_"+strRobotId, "fake_hp");
|
||||
if (StringUtil.isEmpty(fakeHp))
|
||||
{
|
||||
int fake_hp = (int)(Math.random() * 10000000);
|
||||
Redis.use("group1_db10").hset("fake_"+strRobotId, "fake_hp", Integer.toString(fake_hp));
|
||||
}
|
||||
return robotId;
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
logger.error(e);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 登录
|
||||
* @throws Exception
|
||||
*/
|
||||
public final void createRobot() throws Exception {
|
||||
int num = 100;
|
||||
int mng = 9999;
|
||||
|
||||
String listSql = "select * from old_account";
|
||||
ITArray resultArray = DataBase.use().executeQueryByTArray(listSql);
|
||||
ArrayList<String> nameList = new ArrayList<>();
|
||||
ArrayList<String> headList = new ArrayList<>();
|
||||
for(int i = 0; i < resultArray.size(); i++)
|
||||
{
|
||||
ITObject userData = resultArray.getTObject(i);
|
||||
String nick = userData.getUtfString("nick");
|
||||
nameList.add(nick);
|
||||
String head = userData.getUtfString("portrait");
|
||||
headList.add(head);
|
||||
}
|
||||
|
||||
Math.random();
|
||||
Collections.shuffle(nameList);
|
||||
Collections.shuffle(headList);
|
||||
|
||||
for(int i = 0; i < num; i++)
|
||||
{
|
||||
String sql = "";
|
||||
int accountid = create_register(mng, "xx123456xx", nameList, headList);
|
||||
AccountBean acc_bean = AccountCache.getAccount(accountid);
|
||||
if (acc_bean == null)
|
||||
{
|
||||
sql = String.format("SELECT * FROM account WHERE id ='%d'",
|
||||
accountid);
|
||||
|
||||
ITArray resultArray2 = DataBase.use().executeQueryByTArray(sql);
|
||||
if(resultArray2.size() ==0) {
|
||||
throw new WebException(ErrorCode._FAILED);
|
||||
}
|
||||
|
||||
ITObject userData = resultArray2.getTObject(0);
|
||||
UpdateUserData(userData, accountid);
|
||||
|
||||
acc_bean = AccountCache.getAccount(accountid);
|
||||
}
|
||||
|
||||
Redis.use("group1_db1").sadd("free_robot", Integer.toString(acc_bean.id));
|
||||
int fake_hp = (int)(Math.random() * 10000000);
|
||||
Redis.use("group1_db10").hset("fake_"+acc_bean.id, "fake_hp", Integer.toString(fake_hp));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @return
|
||||
* @throws Exception
|
||||
*/
|
||||
private final int UpdateUserData(ITObject reqData,long id) throws Exception {
|
||||
ITObject userData = TObject.newInstance();
|
||||
userData.putInt("id", (int)id);
|
||||
|
||||
userData.putUtfString("acc", reqData.getUtfString("acc"));
|
||||
userData.putUtfString("portrait", reqData.getUtfString("portrait"));
|
||||
userData.putUtfString("nick", reqData.getUtfString("nick"));
|
||||
int sex = reqData.getInt("sex");
|
||||
if(sex == 0) {
|
||||
sex = 1;
|
||||
reqData.putInt("sex", sex);
|
||||
}
|
||||
userData.putInt("sex", sex);
|
||||
|
||||
userData.putInt("mng", 0);
|
||||
userData.putInt("type", 0);
|
||||
if(reqData.containsKey("diamo")) {
|
||||
userData.putInt("diamo", reqData.getInt("diamo"));
|
||||
}
|
||||
|
||||
userData.putInt("invitation", 1);
|
||||
updateSession(userData, (int) id);
|
||||
return (int)id;
|
||||
}
|
||||
|
||||
|
||||
private static String updateSession(ITObject userData, int id) {
|
||||
String session = AccountCache.genKey(id);
|
||||
Map<String, String> map = new HashMap<String, String>();
|
||||
Utils.objectToMap(userData, map);
|
||||
|
||||
Jedis jedis0 = Redis.use("group1_db0").getJedis();
|
||||
try {
|
||||
jedis0.hmset(session, map);
|
||||
BaseCache.updateCacheVer(jedis0, session);
|
||||
}finally {
|
||||
jedis0.close();
|
||||
}
|
||||
|
||||
return session;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* @description: 将输入流转换成字符串
|
||||
* @author: Jeff
|
||||
* @date: 2019年12月15日
|
||||
* @param inputStream 输入流
|
||||
* @return
|
||||
*/
|
||||
private static String inputStreamToString(InputStream inputStream) {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
InputStreamReader inputStreamReader;
|
||||
try {
|
||||
inputStreamReader = new InputStreamReader(inputStream, "utf-8");
|
||||
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
|
||||
String str = null;
|
||||
while ((str = bufferedReader.readLine()) != null) {
|
||||
buffer.append(str);
|
||||
}
|
||||
// 释放资源
|
||||
bufferedReader.close();
|
||||
inputStreamReader.close();
|
||||
inputStream.close();
|
||||
} catch (UnsupportedEncodingException e) {
|
||||
e.printStackTrace();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return buffer.toString();
|
||||
}
|
||||
|
||||
private final int create_register(int mng, String password, ArrayList<String> nickList, ArrayList<String> headList) throws Exception {
|
||||
int count = 0;
|
||||
long id = 0;
|
||||
ArrayList<String> list = new ArrayList<>();
|
||||
for(int i = 0; i < 10; i++)
|
||||
{
|
||||
String strId = Redis.use("group1_db1").rpop("free_account");
|
||||
if (StringUtil.isEmpty(strId))
|
||||
{
|
||||
break;
|
||||
}
|
||||
list.add(strId);
|
||||
}
|
||||
//logger.info("free_account:"+list.toString());
|
||||
|
||||
Collections.shuffle(list);
|
||||
|
||||
do {
|
||||
id = Long.parseLong(list.remove(0));
|
||||
String sql = "SELECT id FROM account WHERE id =" + id;
|
||||
ITArray resultArray = DataBase.use().executeQueryByTArray(sql);
|
||||
if (resultArray.size() == 0)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}while(count++ <= 10);
|
||||
|
||||
for(int i = 0; i < list.size(); i++)
|
||||
{
|
||||
Redis.use("group1_db1").lpush("free_account", list.get(i));
|
||||
}
|
||||
|
||||
if (id == 0)
|
||||
{
|
||||
throw new WebException(ErrorCode._FAILED);
|
||||
}
|
||||
|
||||
ITObject userData = TObject.newInstance();
|
||||
userData.putInt("id", (int)id);
|
||||
|
||||
userData.putUtfString("acc", "" + id);
|
||||
userData.putUtfString("portrait", "");
|
||||
while (headList.size() > 0)
|
||||
{
|
||||
String head = null;
|
||||
try {
|
||||
head = headList.remove(0);
|
||||
URL url = new URL(head);
|
||||
InputStream in = url.openStream();
|
||||
String jsonStr = inputStreamToString(in);
|
||||
String md5 = MD5.getInstance().getHash(jsonStr);
|
||||
// logger.info("robot:" + id + " head:" + head + " md5:" + md5);
|
||||
if (md5.equals("787d66f3fdfa8df70795629c62a3a850") || md5.equals("f1fce77813a0fc9660c76d523813bb59") || md5.equals("d629ac346299c2640dfb6e8fd4232646") || md5.equals("1e76068afc60d7dcff851936b3c2b24b") )
|
||||
{
|
||||
head = null;
|
||||
}
|
||||
} catch (Exception e1) {
|
||||
head = null;
|
||||
}
|
||||
if (head != null)
|
||||
{
|
||||
userData.putUtfString("portrait", head); //头像
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
String nick = "";
|
||||
if (nickList.size() > 0)
|
||||
{
|
||||
nick = nickList.remove(0);
|
||||
}
|
||||
nick = nick.replaceAll("[^a-zA-Z0-9\\u4e00-\\u9fa5]", " ");
|
||||
userData.putUtfString("nick", nick);
|
||||
int sex = 1;
|
||||
if(sex == 0) {
|
||||
sex = 1;
|
||||
}
|
||||
userData.putInt("sex", sex);
|
||||
userData.putInt("diamo", 0);
|
||||
userData.putInt("mng", 0);
|
||||
userData.putInt("regTime", mng);
|
||||
userData.putInt("type", 0);
|
||||
userData.putUtfString("password", Utils.getMD5Hash(password));
|
||||
long reg_time = System.currentTimeMillis() / 1000;
|
||||
userData.putLong("reg_time", reg_time);
|
||||
logger.info("create robot account:"+userData.toJson()+" password:" + password);
|
||||
int result = DataBase.use().insert("account", userData);
|
||||
if (result == -1) {
|
||||
throw new WebException(ErrorCode._FAILED);
|
||||
}
|
||||
userData.putInt("invitation", 1);
|
||||
String session = updateSession(userData, (int) id);
|
||||
return (int)id;
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,117 @@
|
|||
package com.group.service;
|
||||
|
||||
import com.taurus.core.entity.ITObject;
|
||||
import com.taurus.core.entity.TObject;
|
||||
import com.taurus.core.plugin.redis.Redis;
|
||||
|
||||
public class GroupPublisherService {
|
||||
public static final String CHANNEL_NAME = "mgr_group";
|
||||
|
||||
private static final String CMD_ADD_ROOM = "add_room";
|
||||
private static final String CMD_DEL_ROOM = "del_room";
|
||||
private static final String CMD_DEL_PLAY = "del_play";
|
||||
private static final String CMD_ADD_PLAY = "add_play";
|
||||
private static final String CMD_UPDATE_PLAY = "update_play";
|
||||
private static final String CMD_DEL_GROUP = "del_group";
|
||||
private static final String CMD_UPDATE_GROUP = "update_group";
|
||||
|
||||
private static final String CMD_UPDATE_JOINS = "update_joins";
|
||||
private static final String CMD_UPDATE_MAIL_TIP = "update_mail_tip";
|
||||
// private static final String CMD_UPDATE_MEMBER = "update_member";
|
||||
|
||||
public static void addRoomEvt(int groupId, String roomid) {
|
||||
ITObject data = TObject.newInstance();
|
||||
data.putInt("gid", groupId);
|
||||
data.putString("roomid", roomid);
|
||||
data.putString("cmd", CMD_ADD_ROOM);
|
||||
Redis.use("group1_db11").publish(CHANNEL_NAME, data.toJson());
|
||||
}
|
||||
|
||||
public static void delRoomEvt(int groupId, String roomid) {
|
||||
ITObject data = TObject.newInstance();
|
||||
data.putInt("gid", groupId);
|
||||
data.putString("roomid", roomid);
|
||||
data.putString("cmd", CMD_DEL_ROOM);
|
||||
Redis.use("group1_db11").publish(CHANNEL_NAME, data.toJson());
|
||||
}
|
||||
|
||||
public static void delPlayEvt(int groupId, int pid) {
|
||||
ITObject data = TObject.newInstance();
|
||||
data.putInt("gid", groupId);
|
||||
data.putInt("pid", pid);
|
||||
data.putString("cmd", CMD_DEL_PLAY);
|
||||
Redis.use("group1_db11").publish(CHANNEL_NAME, data.toJson());
|
||||
}
|
||||
|
||||
public static void addPlayEvt(int groupId, int pid) {
|
||||
ITObject data = TObject.newInstance();
|
||||
data.putInt("gid", groupId);
|
||||
data.putInt("pid", pid);
|
||||
data.putString("cmd", CMD_ADD_PLAY);
|
||||
Redis.use("group1_db11").publish(CHANNEL_NAME, data.toJson());
|
||||
}
|
||||
|
||||
public static void updatePlayEvt(int groupId, int pid) {
|
||||
ITObject data = TObject.newInstance();
|
||||
data.putInt("gid", groupId);
|
||||
data.putInt("pid", pid);
|
||||
data.putString("cmd", CMD_UPDATE_PLAY);
|
||||
Redis.use("group1_db11").publish(CHANNEL_NAME, data.toJson());
|
||||
}
|
||||
|
||||
public static void delGroupEvt(int groupId) {
|
||||
ITObject data = TObject.newInstance();
|
||||
data.putInt("gid", groupId);
|
||||
data.putString("cmd", CMD_DEL_GROUP);
|
||||
Redis.use("group1_db11").publish(CHANNEL_NAME, data.toJson());
|
||||
}
|
||||
|
||||
public static void updateGroupEvt(int groupId, String name, boolean ban,String notice,int option,int showNum) {
|
||||
ITObject data = TObject.newInstance();
|
||||
data.putInt("gid", groupId);
|
||||
data.putString("cmd", CMD_UPDATE_GROUP);
|
||||
data.putString("name", name);
|
||||
data.putBoolean("ban", ban);
|
||||
data.putString("notice", notice);
|
||||
data.putInt("option", option);
|
||||
data.putInt("show_num", showNum);
|
||||
Redis.use("group1_db11").publish(CHANNEL_NAME, data.toJson());
|
||||
}
|
||||
|
||||
public static void updateJoinsEvt(int groupId, int joins) {
|
||||
ITObject data = TObject.newInstance();
|
||||
data.putInt("gid", groupId);
|
||||
data.putInt("joins", joins);
|
||||
data.putString("cmd", CMD_UPDATE_JOINS);
|
||||
Redis.use("group1_db11").publish(CHANNEL_NAME, data.toJson());
|
||||
}
|
||||
|
||||
public static void updateMailTipEvt(int groupId, int uid) {
|
||||
ITObject data = TObject.newInstance();
|
||||
data.putInt("gid", groupId);
|
||||
data.putInt("uid", uid);
|
||||
data.putString("cmd", CMD_UPDATE_MAIL_TIP);
|
||||
Redis.use("group1_db11").publish(CHANNEL_NAME, data.toJson());
|
||||
}
|
||||
|
||||
/**
|
||||
* 1 hp 2 等级 3 合伙人等级
|
||||
*
|
||||
* @param groupId
|
||||
* @param uid
|
||||
* @param type
|
||||
* @param value
|
||||
*/
|
||||
public static void updateMemberEvt(int groupId, int uid, int type, int value) {
|
||||
// if (type == 1) {
|
||||
// return;
|
||||
// }
|
||||
// ITObject data = TObject.newInstance();
|
||||
// data.putInt("gid", groupId);
|
||||
// data.putInt("uid", uid);
|
||||
// data.putInt("type", type);
|
||||
// data.putInt("value", value);
|
||||
// data.putString("cmd", CMD_UPDATE_MEMBER);
|
||||
// Redis.use("group1_db11").publish(CHANNEL_NAME, data.toJson());
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,220 @@
|
|||
package com.group.service;
|
||||
|
||||
import com.taurus.core.entity.ITObject;
|
||||
import com.taurus.core.entity.TObject;
|
||||
import com.taurus.core.util.*;
|
||||
import com.group.service.TaurusClient.ConnectionProtocol;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
import java.net.ConnectException;
|
||||
import java.net.HttpURLConnection;
|
||||
import java.net.SocketTimeoutException;
|
||||
import java.net.URL;
|
||||
import java.util.LinkedList;
|
||||
import java.util.Queue;
|
||||
|
||||
|
||||
/**
|
||||
* Http缃戠粶璇锋眰澶勭悊绫?
|
||||
* @author daixiwei daixiwei15@126.com
|
||||
*
|
||||
*/
|
||||
public class HttpClient implements ISocketLayer {
|
||||
private static final Logger logger = Logger.getLogger(HttpClient.class);
|
||||
private static final byte[] NULL_BYTES = new byte[0];
|
||||
private static final String _Method = "POST";
|
||||
private static final String _ContentTypeName = "Content-Type";
|
||||
private static final String _ContentType = "application/octet-stream";
|
||||
private static final String _Result = "$r";
|
||||
private static final String _Param = "$p";
|
||||
private static final String _Session = "$s";
|
||||
private static final String _Version = "$v";
|
||||
String _url;
|
||||
String _session_id = "";
|
||||
|
||||
final Queue<Runnable> _actionQueue = new LinkedList<Runnable>();
|
||||
|
||||
|
||||
public HttpClient(String url) {
|
||||
_url = url;
|
||||
}
|
||||
|
||||
private void __sendMsg(Message msg) {
|
||||
byte[] bytes = NULL_BYTES;
|
||||
ITObject _data = TObject.newInstance();
|
||||
_data.putString(_Session, _session_id);
|
||||
_data.putInt(_Version, NetManager.VERSION);
|
||||
if (msg.useText && msg.param == null) {
|
||||
if (StringUtil.isEmpty(msg.textParam)) {
|
||||
msg.param = TObject.newInstance();
|
||||
} else {
|
||||
try {
|
||||
msg.param = TObject.newFromJsonData(msg.textParam);
|
||||
} catch (Exception e) {
|
||||
msg.param = TObject.newInstance();
|
||||
}
|
||||
}
|
||||
}
|
||||
_data.putTObject(_Param, msg.param);
|
||||
ByteArray buff = new ByteArray(_data.toBinary());
|
||||
try {
|
||||
buff.compress();
|
||||
} catch (Exception e) {
|
||||
logger.error(e);
|
||||
}
|
||||
bytes = buff.bytes();
|
||||
|
||||
__requestAsync(msg, bytes);
|
||||
}
|
||||
|
||||
private void __requestAsync(final Message msg,byte[] bytes) {
|
||||
OutputStream out = null;
|
||||
InputStream in = null;
|
||||
int code = 500;
|
||||
HttpURLConnection conn = null;
|
||||
try {
|
||||
|
||||
URL realUrl = new URL(_url + msg.command);
|
||||
conn = (HttpURLConnection) realUrl.openConnection();
|
||||
conn.setDoOutput(true);
|
||||
conn.setDoInput(true);
|
||||
conn.setRequestProperty(_ContentTypeName, _ContentType);
|
||||
conn.setUseCaches(false);// Post 璇锋眰涓嶈兘浣跨敤缂撳瓨
|
||||
conn.setRequestMethod(_Method);
|
||||
conn.setConnectTimeout(NetManager.TIMEOUT_TIME * 1000);
|
||||
conn.setReadTimeout(NetManager.TIMEOUT_TIME * 1000);
|
||||
conn.connect();
|
||||
|
||||
|
||||
out = conn.getOutputStream();
|
||||
out.write(bytes);
|
||||
if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) {
|
||||
in = conn.getInputStream();
|
||||
bytes = Utils.uncompress(in);
|
||||
if (bytes!=null) {
|
||||
|
||||
ITObject tem = TObject.newFromBinaryData(bytes);
|
||||
int result = tem.getInt(_Result);
|
||||
|
||||
if (result == 0) {
|
||||
ITObject _param = tem.getTObject(_Param);
|
||||
msg.param = _param;
|
||||
if(msg.useText) {
|
||||
msg.textParam = _param.toJson();
|
||||
}
|
||||
}
|
||||
code = result;
|
||||
|
||||
}
|
||||
}
|
||||
} catch (SocketTimeoutException e) {
|
||||
logger.error(e);
|
||||
code = 102;
|
||||
} catch (ConnectException ex1) {
|
||||
logger.error(ex1);
|
||||
code = 101;
|
||||
} catch (Exception ex2) {
|
||||
logger.error(ex2);
|
||||
code = 500;
|
||||
}finally {
|
||||
try {
|
||||
if (out != null) {
|
||||
out.close();
|
||||
}
|
||||
} catch (IOException ex) {
|
||||
logger.error(ex);
|
||||
}
|
||||
try {
|
||||
if (in != null) {
|
||||
in.close();
|
||||
}
|
||||
}catch (IOException ex) {
|
||||
logger.error(ex);
|
||||
}
|
||||
if(conn!=null) {
|
||||
conn.disconnect();
|
||||
}
|
||||
}
|
||||
if (msg.callback != null) {
|
||||
final MessageResponse response = new MessageResponse();
|
||||
response.messageData = msg;
|
||||
response.returnCode = code;
|
||||
enqueueActionForDispatch(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
msg.callback.action(response);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void connect(String ip, String game) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void disconnect() {
|
||||
|
||||
}
|
||||
|
||||
private void enqueueActionForDispatch(Runnable action) {
|
||||
synchronized (_actionQueue) {
|
||||
_actionQueue.offer(action);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void processEvent() {
|
||||
while (true) {
|
||||
Runnable myAction;
|
||||
synchronized (_actionQueue) {
|
||||
if (_actionQueue.size() <= 0) {
|
||||
break;
|
||||
}
|
||||
myAction = _actionQueue.poll();
|
||||
}
|
||||
myAction.run();
|
||||
}
|
||||
}
|
||||
|
||||
public void write(final Message msg) {
|
||||
new Thread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
__sendMsg(msg);
|
||||
}
|
||||
}).start();
|
||||
}
|
||||
|
||||
public int getAveragePingTime() {
|
||||
return 1000;
|
||||
}
|
||||
|
||||
public void setSession(String session) {
|
||||
_session_id = session == null ? StringUtil.Empty : session;
|
||||
}
|
||||
|
||||
public String getSession() {
|
||||
return _session_id;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setOnConnect(ICallback<SocketCode> onConnect) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setOnEvent(ICallback<Message> onEvent) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public ConnectionProtocol getProtocol() {
|
||||
return ConnectionProtocol.Web;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,67 @@
|
|||
package com.group.service;
|
||||
|
||||
import com.taurus.core.util.ICallback;
|
||||
import com.group.service.TaurusClient.ConnectionProtocol;
|
||||
|
||||
/**
|
||||
* 网络协议处理通用接口
|
||||
* @author daixiwei daixiwei15@126.com
|
||||
*
|
||||
*/
|
||||
public interface ISocketLayer {
|
||||
/**
|
||||
* 连接服务器
|
||||
* @param ip
|
||||
* @param game
|
||||
*/
|
||||
public void connect(String ip, String game);
|
||||
|
||||
/**
|
||||
* 断开连接
|
||||
*/
|
||||
public void disconnect();
|
||||
|
||||
/**
|
||||
* 处理事件
|
||||
*/
|
||||
public void processEvent();
|
||||
|
||||
/**
|
||||
* 发送消息
|
||||
* @param msg
|
||||
*/
|
||||
public void write(Message msg);
|
||||
|
||||
/**
|
||||
* get Protocol type
|
||||
* @return
|
||||
*/
|
||||
public ConnectionProtocol getProtocol();
|
||||
|
||||
/**
|
||||
* 设置连接状态回调
|
||||
*/
|
||||
public void setOnConnect(ICallback<SocketCode> onConnect);
|
||||
|
||||
|
||||
/**
|
||||
* 设置事件消息回调E
|
||||
*/
|
||||
public void setOnEvent(ICallback<Message> onEvent);
|
||||
|
||||
/**
|
||||
* 网络延时
|
||||
*/
|
||||
public int getAveragePingTime();
|
||||
|
||||
/**
|
||||
* 获取服务器Session字符
|
||||
*/
|
||||
public String getSession();
|
||||
|
||||
/**
|
||||
* 设置服务器Session字符
|
||||
* @param session
|
||||
*/
|
||||
public void setSession(String session);
|
||||
}
|
||||
|
|
@ -0,0 +1,47 @@
|
|||
package com.group.service;
|
||||
|
||||
import com.taurus.core.entity.ITObject;
|
||||
import com.taurus.core.util.ICallback;
|
||||
|
||||
/**
|
||||
* 网络协议消息包
|
||||
* @author daixiwei daixiwei15@126.com
|
||||
*
|
||||
*/
|
||||
public class Message {
|
||||
/**
|
||||
* 使用文本,不转换ITObject
|
||||
*/
|
||||
public boolean useText;
|
||||
/**
|
||||
* 网络协议指令Key
|
||||
*/
|
||||
public String command;
|
||||
|
||||
/**
|
||||
* 参数
|
||||
*/
|
||||
public ITObject param;
|
||||
/**
|
||||
* 文本数据
|
||||
*/
|
||||
public String textParam;
|
||||
|
||||
/**
|
||||
* 网络消息回调
|
||||
*/
|
||||
public ICallback<MessageResponse> callback;
|
||||
/**
|
||||
* 自定义参数
|
||||
*/
|
||||
public Object data;
|
||||
/**
|
||||
* 网络包最后写入时间
|
||||
*/
|
||||
public long lastTime;
|
||||
/**
|
||||
* 网络包返回匹配的GID
|
||||
*/
|
||||
public int gid;
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
package com.group.service;
|
||||
|
||||
/**
|
||||
* 缃戠粶娑堟伅鍥炶皟鏁版嵁瀵硅薄
|
||||
* @author daixiwei daixiwei15@126.com
|
||||
*
|
||||
*/
|
||||
public class MessageResponse {
|
||||
/**
|
||||
* 娑堟伅鏁版嵁
|
||||
*/
|
||||
public Message messageData;
|
||||
/**
|
||||
* 杩斿洖缁撴瀯鍊?
|
||||
*/
|
||||
public int returnCode;
|
||||
}
|
||||
|
|
@ -0,0 +1,107 @@
|
|||
package com.group.service;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 网络管理对象
|
||||
* @author daixiwei daixiwei15@126.com
|
||||
*
|
||||
*/
|
||||
public class NetManager {
|
||||
|
||||
private static List<TaurusClient> _clientList = new ArrayList<TaurusClient>();
|
||||
private static Map<Integer, TaurusClient> _clientMap = new HashMap<Integer, TaurusClient>();
|
||||
|
||||
/**
|
||||
* 网络超时时间
|
||||
*/
|
||||
public static int TIMEOUT_TIME = 10;
|
||||
/**
|
||||
* 网络版本号
|
||||
*/
|
||||
public static int VERSION = 10;
|
||||
public static boolean debug_print = false;
|
||||
|
||||
static void addNetClient(TaurusClient net) {
|
||||
if (net == null) {
|
||||
throw new RuntimeException("TaurusClient is null, it can't be added.");
|
||||
}
|
||||
if (_clientMap.containsKey(net.getId())) {
|
||||
throw new RuntimeException("A client with id: " + net.getId() + " already exists! Controller can't be added: " + net);
|
||||
}
|
||||
synchronized (_clientList) {
|
||||
_clientMap.put(net.getId(), net);
|
||||
_clientList.add(net);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* The process events
|
||||
*/
|
||||
public static void processEvents() {
|
||||
for (int i = 0; i < _clientList.size(); ++i) {
|
||||
TaurusClient nc = _clientList.get(i);
|
||||
if (nc._kill){
|
||||
synchronized (_clientList) {
|
||||
_clientMap.remove(nc.getId());
|
||||
_clientList.remove(nc);
|
||||
}
|
||||
i--;
|
||||
continue;
|
||||
}else{
|
||||
nc.processEvent();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 返回指定的NetClient
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
public static TaurusClient getNetClient(int id) {
|
||||
for (int i = 0; i < _clientList.size(); ++i) {
|
||||
TaurusClient nc = _clientList.get(i);
|
||||
if (nc.getId() == id)
|
||||
return nc;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 断开指定连接
|
||||
* @param id
|
||||
*/
|
||||
public static void killConnection(int id) {
|
||||
for (int i = 0; i < _clientList.size(); ++i) {
|
||||
TaurusClient nc = _clientList.get(i);
|
||||
if (nc.getId() == id) {
|
||||
nc.killConnection();
|
||||
synchronized (_clientList) {
|
||||
_clientMap.remove(id);
|
||||
_clientList.remove(nc);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 断开所有连接
|
||||
*/
|
||||
public static void killAllConnection() {
|
||||
synchronized (_clientList) {
|
||||
for (TaurusClient nc : _clientList) {
|
||||
nc.killConnection();
|
||||
}
|
||||
_clientList.clear();
|
||||
_clientMap.clear();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,46 @@
|
|||
package com.group.service;
|
||||
|
||||
/**
|
||||
* Socket code
|
||||
* @author daixiwei daixiwei15@126.com
|
||||
*
|
||||
*/
|
||||
public enum SocketCode {
|
||||
/**
|
||||
* 杩炴帴鎴愬姛
|
||||
*/
|
||||
Connect,
|
||||
Disconnect,
|
||||
/**
|
||||
* 鏈煡寮傚父
|
||||
*/
|
||||
Exception,
|
||||
/**
|
||||
* 杩炴帴鏈嶅姟寮傚父
|
||||
*/
|
||||
ExceptionOnConnect,
|
||||
/**
|
||||
* 鍙戦€佹暟鎹祦閿欒
|
||||
*/
|
||||
SendError,
|
||||
/**
|
||||
* 鎺ユ敹鏈嶅姟鍣ㄦ暟鎹祦寮傚父
|
||||
*/
|
||||
ExceptionOnReceive,
|
||||
/**
|
||||
* 鏈嶅姟鍣ㄨ繛鎺ヨ秴鏃?
|
||||
*/
|
||||
TimeoutDisconnect,
|
||||
/**
|
||||
* 鏈嶅姟鍣ㄦ柇寮€杩炴帴
|
||||
*/
|
||||
DisconnectByServer,
|
||||
/**
|
||||
* 瀹㈡埛绔綉缁滃紓甯?
|
||||
*/
|
||||
NetworkException,
|
||||
/**
|
||||
* 杩炴帴瀹夊叏寮傚父锛屼竴鑸负闃茬伀澧欓樆姝?
|
||||
*/
|
||||
SecurityExceptionOnConnect
|
||||
}
|
||||
|
|
@ -0,0 +1,354 @@
|
|||
package com.group.service;
|
||||
|
||||
import com.taurus.core.entity.ITObject;
|
||||
import com.taurus.core.events.Event;
|
||||
import com.taurus.core.events.EventDispatcher;
|
||||
import com.taurus.core.events.IEventListener;
|
||||
import com.taurus.core.util.ICallback;
|
||||
import com.taurus.core.util.Logger;
|
||||
import com.group.service.io.SocketEngine;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
|
||||
/**
|
||||
* 缃戠粶鏍稿績鍔熻兘澶勭悊绫?
|
||||
* @author daixiwei daixiwei15@126.com
|
||||
*
|
||||
*/
|
||||
public class TaurusClient {
|
||||
private static final Logger logger = Logger.getLogger(TaurusClient.class);
|
||||
private int _id;
|
||||
private boolean _connect;
|
||||
private String _gameId;
|
||||
private String _currentIp;
|
||||
|
||||
private ISocketLayer _scoket;
|
||||
private ThreadManager _threadManager;
|
||||
|
||||
private EventDispatcher _dispatcher;
|
||||
private Map<Message, ICallback<MessageResponse>> _responseMap;
|
||||
volatile boolean _kill = false;
|
||||
private static int _tempID;
|
||||
private int _protocolCompression=100;
|
||||
|
||||
private static int _getValidID() {
|
||||
return ++_tempID;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param host
|
||||
* @param game
|
||||
* @param protocol
|
||||
*/
|
||||
public TaurusClient(String host, String game, ConnectionProtocol protocol) {
|
||||
ISocketLayer socket = null;
|
||||
switch (protocol) {
|
||||
case Tcp:
|
||||
socket = new SocketEngine(this);
|
||||
break;
|
||||
case Web:
|
||||
socket = new HttpClient(host);
|
||||
_connect = true;
|
||||
break;
|
||||
default:
|
||||
socket = new SocketEngine(this);
|
||||
break;
|
||||
}
|
||||
__initialize(host, game, socket);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param host
|
||||
* @param game
|
||||
* @param socket
|
||||
* @param protocol
|
||||
*/
|
||||
public TaurusClient(String host, String game, ISocketLayer socket) {
|
||||
__initialize(host, game, socket);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 娣诲姞浜嬩欢
|
||||
* @param eventType
|
||||
* @param listener
|
||||
*/
|
||||
public void addEventListener(String eventType, IEventListener listener) {
|
||||
_dispatcher.addEventListener(eventType, listener);
|
||||
}
|
||||
|
||||
/**
|
||||
* 绉婚櫎鎵€鏈変簨浠?
|
||||
*/
|
||||
public void removeAllListener() {
|
||||
_dispatcher.removeAllListener();
|
||||
}
|
||||
|
||||
/**
|
||||
* 绉婚櫎鎸囧畾浜嬩欢
|
||||
* @param eventType
|
||||
* @param listener
|
||||
*/
|
||||
public void removeEventListener(String eventType, IEventListener listener) {
|
||||
_dispatcher.removeEventListener(eventType, listener);
|
||||
}
|
||||
|
||||
private void __initialize(String host, String game, ISocketLayer socket) {
|
||||
_dispatcher = new EventDispatcher();
|
||||
_responseMap = new HashMap<Message, ICallback<MessageResponse>>();
|
||||
_id = _getValidID();
|
||||
NetManager.addNetClient(this);
|
||||
_currentIp = host;
|
||||
_gameId = game;
|
||||
_threadManager = new ThreadManager();
|
||||
_threadManager.start();
|
||||
_scoket = socket;
|
||||
_scoket.setOnConnect(new ICallback<SocketCode>() {
|
||||
@Override
|
||||
public void action(SocketCode code) {
|
||||
if (code == SocketCode.Connect)
|
||||
_connect = true;
|
||||
else
|
||||
_connect = false;
|
||||
Event evt = new Event(NetClientEvent.Connect);
|
||||
evt.setParameter("code", code);
|
||||
_dispatcher.dispatchEvent(evt);
|
||||
}
|
||||
});
|
||||
_scoket.setOnEvent(new ICallback<Message>() {
|
||||
@Override
|
||||
public void action(Message msg) {
|
||||
if (_connect) {
|
||||
Event evt = new Event(NetClientEvent.OnEvent);
|
||||
evt.setParameter("msg", msg);
|
||||
_dispatcher.dispatchEvent(evt);
|
||||
if (NetManager.debug_print){
|
||||
String str = getProtocol() == ConnectionProtocol.Web ? "WEB" : "TCP";
|
||||
String data_str = msg.useText ? msg.textParam : (msg.param != null ? msg.param.toJson() : "null");
|
||||
logger.debug("Event [" + str + "->" + msg.command + "] data:" + data_str);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 杩炴帴鏈嶅姟鍣?
|
||||
*/
|
||||
public void connect() {
|
||||
_scoket.connect(_currentIp, _gameId);
|
||||
}
|
||||
|
||||
/**
|
||||
* Kill net connection.
|
||||
*/
|
||||
public void killConnection() {
|
||||
removeAllListener();
|
||||
_responseMap.clear();
|
||||
_threadManager.stop();
|
||||
_scoket.disconnect();
|
||||
_connect = false;
|
||||
_kill = true;
|
||||
}
|
||||
|
||||
/**
|
||||
* 鍙戦€佺綉缁滄秷鎭寘
|
||||
* @param msg 娑堟伅鏁版嵁瀵硅薄
|
||||
*/
|
||||
protected void send(Message msg) {
|
||||
if (msg == null)
|
||||
return;
|
||||
if (NetManager.debug_print) {
|
||||
String str = getProtocol() == ConnectionProtocol.Web ? "WEB" : "TCP";
|
||||
String data_str = msg.useText ? msg.textParam : (msg.param != null ? msg.param.toJson() : "null");
|
||||
str = "Requst [" + str + "->" + msg.command + "] ->data:" + data_str;
|
||||
logger.debug(str);
|
||||
}
|
||||
if (msg.callback != null) {
|
||||
_responseMap.put(msg, msg.callback);
|
||||
msg.callback = new ICallback<MessageResponse>() {
|
||||
|
||||
@Override
|
||||
public void action(MessageResponse response) {
|
||||
ICallback<MessageResponse> callback = _responseMap.get(response.messageData);
|
||||
if (callback == null) {
|
||||
return;
|
||||
}
|
||||
if (NetManager.debug_print){
|
||||
String str = getProtocol() == ConnectionProtocol.Web ? "WEB" : "TCP";
|
||||
String data_str = msg.useText ? msg.textParam : (msg.param != null ? msg.param.toJson() : "null");
|
||||
str = "Response [" + str + "->" + msg.command + "] ->result:"+ response.returnCode + " param:" + data_str;
|
||||
logger.debug(str);
|
||||
}
|
||||
_responseMap.remove(response.messageData);
|
||||
callback.action(response);
|
||||
}
|
||||
|
||||
};
|
||||
}
|
||||
|
||||
_threadManager.enqueueSend(new ICallback<Message>() {
|
||||
@Override
|
||||
public void action(Message msg) {
|
||||
sendData(msg);
|
||||
}
|
||||
}, msg);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 鍙戦€佺綉缁滄秷鎭寘
|
||||
* @param cmd 缃戠粶鍗忚鎸囦护Key
|
||||
* @param param 鍙傛暟
|
||||
* @param callback 缃戠粶娑堟伅鍥炶皟
|
||||
* @return
|
||||
*/
|
||||
public Message send(String cmd, ITObject param, ICallback<MessageResponse> callback) {
|
||||
Message msg = new Message();
|
||||
msg.useText = false;
|
||||
msg.command = cmd;
|
||||
msg.param = param;
|
||||
msg.callback = callback;
|
||||
this.send(msg);
|
||||
return msg;
|
||||
}
|
||||
|
||||
/**
|
||||
* 鍙戦€佺綉缁滄秷鎭寘
|
||||
* @param cmd 缃戠粶鍗忚鎸囦护Key
|
||||
* @param text JSON 鏂囨湰
|
||||
* @param callback 缃戠粶娑堟伅鍥炶皟
|
||||
* @return
|
||||
*/
|
||||
public Message sendText(String cmd, String text, ICallback<MessageResponse> callback) {
|
||||
Message msg = new Message();
|
||||
msg.command = cmd;
|
||||
msg.textParam = text;
|
||||
msg.callback = callback;
|
||||
msg.useText = true;
|
||||
this.send(msg);
|
||||
return msg;
|
||||
}
|
||||
|
||||
/**
|
||||
* 鍙戦€佹暟鎹嚎绋嬫柟娉?
|
||||
* @param message
|
||||
*/
|
||||
private void sendData(Message msg) {
|
||||
_scoket.write(msg);
|
||||
}
|
||||
|
||||
/**
|
||||
* 澶勭悊浜嬩欢
|
||||
*/
|
||||
void processEvent() {
|
||||
if(_scoket!=null) {
|
||||
_scoket.processEvent();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 娓呯悊鍝嶅簲鍥炶皟
|
||||
*/
|
||||
public void clearResponse() {
|
||||
_responseMap.clear();
|
||||
}
|
||||
|
||||
/**
|
||||
* The net client id
|
||||
* @return
|
||||
*/
|
||||
public int getId() {
|
||||
|
||||
return _id;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* The curren ip
|
||||
* @return
|
||||
*/
|
||||
public String getCurrentIp() {
|
||||
return _currentIp;
|
||||
}
|
||||
|
||||
/**
|
||||
* The curren Game ID
|
||||
* @return
|
||||
*/
|
||||
public String getGameID() {
|
||||
return _gameId;
|
||||
}
|
||||
|
||||
/**
|
||||
* 缃戠粶鏄惁宸茶繛鎺?
|
||||
* @return
|
||||
*/
|
||||
public boolean isConnected() {
|
||||
return _connect;
|
||||
}
|
||||
|
||||
/**
|
||||
* 褰撳墠缃戠粶绫诲瀷
|
||||
* @return
|
||||
*/
|
||||
public ConnectionProtocol getProtocol() {
|
||||
return _scoket.getProtocol();
|
||||
}
|
||||
|
||||
/**
|
||||
* 缃戠粶寤舵椂
|
||||
* @return
|
||||
*/
|
||||
public int getAveragePingTime() {
|
||||
return _scoket.getAveragePingTime();
|
||||
}
|
||||
|
||||
/**
|
||||
* 鑾峰彇鏈嶅姟鍣⊿ession瀛楃
|
||||
* @return
|
||||
*/
|
||||
public String getSession() {
|
||||
return _scoket.getSession();
|
||||
}
|
||||
|
||||
/**
|
||||
* 璁剧疆鏈嶅姟鍣⊿ession瀛楃
|
||||
* @param session
|
||||
*/
|
||||
public void setSession(String session) {
|
||||
_scoket.setSession(session);
|
||||
}
|
||||
|
||||
/**
|
||||
* 璁剧疆鍘嬬缉闃€鍊?
|
||||
* @param protocolCompression
|
||||
*/
|
||||
public void setProtocolCompression(int protocolCompression) {
|
||||
_protocolCompression = protocolCompression;
|
||||
}
|
||||
|
||||
/**
|
||||
* 鑾峰彇鍘嬬缉闃€鍊?
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public int getProtocolCompression() {
|
||||
return _protocolCompression;
|
||||
}
|
||||
|
||||
|
||||
public static enum ConnectionProtocol {
|
||||
Tcp, Web,
|
||||
}
|
||||
|
||||
public static class NetClientEvent {
|
||||
public static final String Connect = "connect";
|
||||
|
||||
public static final String OnEvent = "onevent";
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,123 @@
|
|||
package com.group.service;
|
||||
|
||||
import com.taurus.core.util.ICallback;
|
||||
|
||||
import java.util.LinkedList;
|
||||
import java.util.Queue;
|
||||
import java.util.Stack;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 网络(读/写) 线程管理
|
||||
* @author daixiwei daixiwei15@126.com
|
||||
*
|
||||
*/
|
||||
public class ThreadManager {
|
||||
class MessgaeThread {
|
||||
public ICallback<Message> _dataDelegate;
|
||||
|
||||
public Message _message;
|
||||
}
|
||||
|
||||
private boolean _running = false;
|
||||
private Thread _outThread;
|
||||
private boolean _outHasQueuedItems = false;
|
||||
private Queue<MessgaeThread> _outThreadQueue = new LinkedList<MessgaeThread>();
|
||||
private Object _outQueueLocker = new Object();
|
||||
private Stack<MessgaeThread> pool = new Stack<MessgaeThread>();
|
||||
|
||||
private MessgaeThread MessgaeThreadGet() {
|
||||
if (pool.size() > 0) {
|
||||
MessgaeThread msg = pool.pop();
|
||||
return msg;
|
||||
} else
|
||||
return new MessgaeThread();
|
||||
}
|
||||
|
||||
private void MessgaeThreadReturn(MessgaeThread value) {
|
||||
pool.push(value);
|
||||
value._dataDelegate = null;
|
||||
value._message = null;
|
||||
}
|
||||
|
||||
private static void sleep(int ms) {
|
||||
try {
|
||||
Thread.sleep(ms);
|
||||
} catch (InterruptedException e) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
private void outThread() {
|
||||
while (_running) {
|
||||
sleep(5);
|
||||
if (_outHasQueuedItems) {
|
||||
Object obj = _outQueueLocker;
|
||||
synchronized (obj) {
|
||||
while (_outThreadQueue.size() > 0) {
|
||||
MessgaeThread item = _outThreadQueue.poll();
|
||||
processOutItem(item);
|
||||
}
|
||||
_outHasQueuedItems = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void processOutItem(MessgaeThread item) {
|
||||
ICallback<Message> _dataDelegate = item._dataDelegate;
|
||||
Message message = item._message;
|
||||
MessgaeThreadReturn(item);
|
||||
if (_dataDelegate != null) {
|
||||
_dataDelegate.action(message);
|
||||
}
|
||||
}
|
||||
|
||||
public void start() {
|
||||
if (_running) {
|
||||
return;
|
||||
}
|
||||
_running = true;
|
||||
if (_outThread == null) {
|
||||
_outThread = new Thread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
outThread();
|
||||
}
|
||||
});
|
||||
_outThread.start();
|
||||
_outThread.setName("WriteMessage");
|
||||
}
|
||||
}
|
||||
|
||||
public void stop() {
|
||||
Thread thread = new Thread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
stopThread();
|
||||
}
|
||||
});
|
||||
thread.start();
|
||||
}
|
||||
|
||||
private void stopThread() {
|
||||
_running = false;
|
||||
|
||||
if (_outThread != null) {
|
||||
_outThread.interrupt();
|
||||
}
|
||||
_outThread = null;
|
||||
}
|
||||
|
||||
public void enqueueSend(ICallback<Message> callback, Message message) {
|
||||
MessgaeThread hashtable = MessgaeThreadGet();
|
||||
hashtable._dataDelegate = callback;
|
||||
hashtable._message = message;
|
||||
Object obj = _outQueueLocker;
|
||||
synchronized (obj) {
|
||||
_outThreadQueue.offer(hashtable);
|
||||
_outHasQueuedItems = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,251 @@
|
|||
package com.group.service.io;
|
||||
|
||||
import com.taurus.core.entity.ITObject;
|
||||
import com.taurus.core.entity.TObject;
|
||||
import com.taurus.core.util.ByteArray;
|
||||
import com.taurus.core.util.Logger;
|
||||
import com.taurus.core.util.Utils;
|
||||
import com.group.service.SocketCode;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
/**
|
||||
* 鍗忚鍖呭瓧鑺傛祦瑙f瀽
|
||||
*
|
||||
* @author daixiwei daixiwei15@126.com
|
||||
*
|
||||
*/
|
||||
class IOHandler {
|
||||
private final Logger logger = Logger.getLogger(IOHandler.class);
|
||||
private static final String ACTION_ID = "a";
|
||||
private static final String PARAM_ID = "p";
|
||||
static final int INT_BYTE_SIZE = 4;
|
||||
|
||||
private static final ByteArray EMPTY_BUFFER = new ByteArray();
|
||||
private int _skipBytes = 0;
|
||||
private ByteArray _buffer;
|
||||
private int _expectedLength = -1;
|
||||
private boolean _compressed = false;
|
||||
|
||||
private SocketEngine _engine;
|
||||
private SystemController _controller;
|
||||
|
||||
/**
|
||||
* 璇诲彇鐘舵€?
|
||||
*/
|
||||
private PacketReadState _readState = PacketReadState.WAIT_NEW_PACKET;
|
||||
|
||||
IOHandler(SocketEngine client, SystemController controller) {
|
||||
_engine = client;
|
||||
_controller = controller;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param data
|
||||
* @return
|
||||
* @throws IOException
|
||||
*/
|
||||
private ByteArray handleDataSize(ByteArray data) throws Exception {
|
||||
int num = data.readInt();
|
||||
int pos = INT_BYTE_SIZE;
|
||||
if (num != -1) {
|
||||
_expectedLength = num;
|
||||
data = resizeByteArray(data, pos, data.length() - pos);
|
||||
_readState = PacketReadState.WAIT_DATA;
|
||||
return data;
|
||||
}
|
||||
_readState = PacketReadState.WAIT_DATA_SIZE_FRAGMENT;
|
||||
_buffer.writeBytes(data.bytes());
|
||||
data = EMPTY_BUFFER;
|
||||
return data;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param data
|
||||
* @return
|
||||
* @throws IOException
|
||||
*/
|
||||
private ByteArray handleDataSizeFragment(ByteArray data) throws Exception {
|
||||
int count = INT_BYTE_SIZE - _buffer.length();
|
||||
if (data.length() >= count) {
|
||||
_buffer.writeBytes(data.bytes(), 0, count);
|
||||
int num2 = INT_BYTE_SIZE;
|
||||
ByteArray array = new ByteArray();
|
||||
array.writeBytes(_buffer.bytes(), 0, num2);
|
||||
array.position(0);
|
||||
int num3 = array.readInt();
|
||||
_expectedLength = num3;
|
||||
_buffer = new ByteArray();
|
||||
_readState = PacketReadState.WAIT_DATA;
|
||||
if (data.length() > count) {
|
||||
data = resizeByteArray(data, count, data.length() - count);
|
||||
return data;
|
||||
}
|
||||
data = EMPTY_BUFFER;
|
||||
return data;
|
||||
}
|
||||
_buffer.writeBytes(data.bytes());
|
||||
data = EMPTY_BUFFER;
|
||||
return data;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param data
|
||||
* @return
|
||||
*/
|
||||
private ByteArray handleInvalidData(ByteArray data) {
|
||||
if (_skipBytes == 0) {
|
||||
_readState = PacketReadState.WAIT_NEW_PACKET;
|
||||
return data;
|
||||
}
|
||||
int pos = Math.min(data.length(), _skipBytes);
|
||||
data = resizeByteArray(data, pos, data.length() - pos);
|
||||
_skipBytes -= pos;
|
||||
return data;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param data
|
||||
* @return
|
||||
*/
|
||||
private ByteArray handleNewPacket(ByteArray data) throws Exception {
|
||||
_buffer = new ByteArray();
|
||||
_expectedLength = -1;
|
||||
_compressed = data.readByte() > 0;
|
||||
data = resizeByteArray(data, 1, data.length() - 1);
|
||||
_readState = PacketReadState.WAIT_DATA_SIZE;
|
||||
return data;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param data
|
||||
* @return
|
||||
*/
|
||||
private ByteArray handlePacketData(ByteArray data) throws Exception {
|
||||
int count = _expectedLength - _buffer.length();
|
||||
boolean flag = data.length() > count;
|
||||
ByteArray array = new ByteArray(data.bytes());
|
||||
try {
|
||||
if (data.length() >= count) {
|
||||
_buffer.writeBytes(data.bytes(), 0, count);
|
||||
if (_compressed) {
|
||||
_buffer.uncompress();
|
||||
}
|
||||
dispatchRequest(_buffer);
|
||||
_readState = PacketReadState.WAIT_NEW_PACKET;
|
||||
} else {
|
||||
_buffer.writeBytes(data.bytes());
|
||||
}
|
||||
if (flag) {
|
||||
data = resizeByteArray(data, count, data.length() - count);
|
||||
return data;
|
||||
}
|
||||
data = EMPTY_BUFFER;
|
||||
} catch (Exception exception) {
|
||||
logger.error("Error handling data ", exception);
|
||||
_skipBytes = count;
|
||||
_readState = PacketReadState.INVALID_DATA;
|
||||
return array;
|
||||
}
|
||||
return data;
|
||||
}
|
||||
|
||||
private void dispatchRequest(ByteArray _buffer) throws IOException {
|
||||
ITObject requestObject = TObject.newFromBinaryData(_buffer.bytes());
|
||||
Packet packet = new Packet();
|
||||
if (requestObject.isNull(ACTION_ID)) {
|
||||
throw new IOException("Request rejected: No Action ID in request!");
|
||||
}
|
||||
packet.actionID = requestObject.getByte(ACTION_ID);
|
||||
packet.parameters = requestObject.getTObject(PARAM_ID);
|
||||
_controller.handlePacket(packet);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param data
|
||||
* @throws IOException
|
||||
*/
|
||||
public void onDataRead(ByteArray data) throws IOException {
|
||||
if (data.length() == 0) {
|
||||
throw new IOException("Unexpected empty packet data: no readable bytes available!");
|
||||
}
|
||||
|
||||
data.position(0);
|
||||
try {
|
||||
while (data.length() > 0) {
|
||||
if (_readState == PacketReadState.WAIT_NEW_PACKET) {
|
||||
data = handleNewPacket(data);
|
||||
} else {
|
||||
if (_readState == PacketReadState.WAIT_DATA_SIZE) {
|
||||
data = handleDataSize(data);
|
||||
continue;
|
||||
}
|
||||
if (_readState == PacketReadState.WAIT_DATA_SIZE_FRAGMENT) {
|
||||
data = handleDataSizeFragment(data);
|
||||
continue;
|
||||
}
|
||||
if (_readState == PacketReadState.WAIT_DATA) {
|
||||
data = handlePacketData(data);
|
||||
continue;
|
||||
}
|
||||
if (_readState == PacketReadState.INVALID_DATA) {
|
||||
data = handleInvalidData(data);
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
this.logger.error(e);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param packet
|
||||
* @throws IOException
|
||||
*/
|
||||
public void onDataWrite(Packet packet) throws IOException {
|
||||
ByteArray binData = new ByteArray();
|
||||
|
||||
ITObject obj2 = new TObject();
|
||||
obj2.putByte(ACTION_ID, (byte) packet.actionID);
|
||||
obj2.putTObject(PARAM_ID, packet.parameters);
|
||||
byte[] array2 = obj2.toBinary();
|
||||
boolean compression = array2.length > _engine.getProtocolCompression();
|
||||
if (compression) {
|
||||
array2 = Utils.compress(array2);
|
||||
}
|
||||
binData.writeByte((byte) (compression ? 1 : 0));
|
||||
binData.writeInt(array2.length);
|
||||
binData.writeBytes(array2);
|
||||
|
||||
if (_engine._socket.isConnected()) {
|
||||
if (!_engine._socket.send(binData.bytes())) {
|
||||
_engine.enqueueStatusCallback(SocketCode.SendError);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param array
|
||||
* @param pos
|
||||
* @param len
|
||||
* @return
|
||||
*/
|
||||
private ByteArray resizeByteArray(ByteArray array, int pos, int len) {
|
||||
byte[] dst = new byte[len];
|
||||
System.arraycopy(array.bytes(), pos, dst, 0, len);
|
||||
return new ByteArray(dst);
|
||||
}
|
||||
|
||||
static enum PacketReadState {
|
||||
WAIT_NEW_PACKET, WAIT_DATA_SIZE, WAIT_DATA_SIZE_FRAGMENT, WAIT_DATA, INVALID_DATA
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,113 @@
|
|||
package com.group.service.io;
|
||||
|
||||
import com.taurus.core.util.Logger;
|
||||
import com.taurus.core.util.StringUtil;
|
||||
import com.group.service.SocketCode;
|
||||
|
||||
/**
|
||||
* Socket核心基类
|
||||
* @author daixiwei daixiwei15@126.com
|
||||
*
|
||||
*/
|
||||
public abstract class ISocket {
|
||||
protected static final Logger logger = Logger.getLogger(ISocket.class);
|
||||
SocketEngine _engine;
|
||||
/**
|
||||
* 当前socket状态
|
||||
*/
|
||||
public volatile SocketState state = SocketState.Disconnected;
|
||||
/**
|
||||
* 服务器地址
|
||||
*/
|
||||
protected String serverAddress;
|
||||
/**
|
||||
* 服务器端口
|
||||
*/
|
||||
protected int serverPort;
|
||||
|
||||
/**
|
||||
* 网络链接状态
|
||||
* @return
|
||||
*/
|
||||
public boolean isConnected() {
|
||||
return state == SocketState.Connected;
|
||||
}
|
||||
|
||||
public ISocket(SocketEngine peerBase) {
|
||||
if (peerBase == null) {
|
||||
throw new RuntimeException("Can't init without peer");
|
||||
}
|
||||
this._engine = peerBase;
|
||||
}
|
||||
|
||||
public boolean connect() {
|
||||
boolean result;
|
||||
if (state != SocketState.Disconnected) {
|
||||
logger.error("Calling connect when the socket is not disconnected");
|
||||
result = false;
|
||||
} else if (_engine == null) {
|
||||
result = false;
|
||||
} else if (!tryParseAddress(_engine.getServerAddress())) {
|
||||
logger.error("Failed parsing address: " + _engine.getServerAddress());
|
||||
result = false;
|
||||
} else {
|
||||
result = true;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* 断开连接
|
||||
* @return
|
||||
*/
|
||||
public abstract boolean disconnect();
|
||||
|
||||
/**
|
||||
* 发送流数据
|
||||
* @param data
|
||||
* @return
|
||||
*/
|
||||
public abstract boolean send(byte[] data);
|
||||
|
||||
protected void handleException(SocketCode statusCode) {
|
||||
state = SocketState.Disconnecting;
|
||||
_engine.enqueueStatusCallback(statusCode);
|
||||
_engine.enqueueActionForDispatch(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
disconnect();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 解析网络地址
|
||||
* @param addressAndPort
|
||||
* @param address
|
||||
* @param port
|
||||
* @return
|
||||
*/
|
||||
protected boolean tryParseAddress(String addressAndPort) {
|
||||
boolean result = true;
|
||||
if (StringUtil.isEmpty(addressAndPort)) {
|
||||
result = false;
|
||||
} else {
|
||||
int num = addressAndPort.lastIndexOf(':');
|
||||
if (num <= 0) {
|
||||
result = false;
|
||||
} else if (addressAndPort.indexOf(':') != num && (!addressAndPort.contains("[") || !addressAndPort.contains("]"))) {
|
||||
result = false;
|
||||
} else {
|
||||
serverAddress = addressAndPort.substring(0, num);
|
||||
String s = addressAndPort.substring(num + 1);
|
||||
try {
|
||||
serverPort = Integer.parseInt(s);
|
||||
} catch (Exception e) {
|
||||
result = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,104 @@
|
|||
package com.group.service.io;
|
||||
|
||||
import com.taurus.core.util.Logger;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.*;
|
||||
|
||||
|
||||
/**
|
||||
* 网络监听/心跳
|
||||
* @author daixiwei daixiwei15@126.com
|
||||
*
|
||||
*/
|
||||
public class LagMonitor extends TimerTask {
|
||||
private static final Logger logger = Logger.getLogger(LagMonitor.class);
|
||||
private int _averagePingTime;
|
||||
private Timer _pollTimer;
|
||||
private int _queueSize;
|
||||
private int _interval;
|
||||
private boolean _run;
|
||||
private SocketEngine _engine;
|
||||
private List<Long> _valueQueue;
|
||||
private Queue<Long> write_queue = new LinkedList<Long>();
|
||||
|
||||
public LagMonitor(SocketEngine engine, int interval, int queueSize) {
|
||||
if (interval < 1) {
|
||||
interval = 1;
|
||||
}
|
||||
_engine = engine;
|
||||
_valueQueue = new ArrayList<Long>();
|
||||
_queueSize = queueSize;
|
||||
_pollTimer = new Timer();
|
||||
_interval = interval * 1000;
|
||||
_averagePingTime = 1000;
|
||||
}
|
||||
|
||||
public void fnPingPong() {
|
||||
long w_time = write_queue.poll();
|
||||
long item = System.currentTimeMillis() - w_time;
|
||||
if (_valueQueue.size() >= _queueSize) {
|
||||
_valueQueue.remove(0);
|
||||
}
|
||||
_valueQueue.add(item);
|
||||
if (_valueQueue.size() == 0) {
|
||||
_averagePingTime = 0;
|
||||
}
|
||||
int num = 0;
|
||||
for (int i = 0; i < _valueQueue.size(); ++i) {
|
||||
num += _valueQueue.get(i);
|
||||
}
|
||||
_averagePingTime = (num / _valueQueue.size());
|
||||
}
|
||||
|
||||
/**
|
||||
* 启动监听
|
||||
*/
|
||||
public void start() {
|
||||
if (!isRunning()) {
|
||||
this._run = true;
|
||||
_pollTimer.scheduleAtFixedRate(this, 0, _interval);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 停止监听
|
||||
*/
|
||||
public void stop() {
|
||||
if (isRunning()) {
|
||||
this._run = false;
|
||||
_pollTimer.purge();
|
||||
}
|
||||
}
|
||||
|
||||
public void destroy() {
|
||||
stop();
|
||||
_pollTimer.cancel();
|
||||
_pollTimer = null;
|
||||
_engine = null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 平均Ping的时间
|
||||
* @return
|
||||
*/
|
||||
public int getAveragePingTime() {
|
||||
return _averagePingTime;
|
||||
|
||||
}
|
||||
|
||||
public boolean isRunning() {
|
||||
return _run;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
try {
|
||||
_engine._controller.sendPingPong();
|
||||
write_queue.offer(System.currentTimeMillis());
|
||||
} catch (IOException e) {
|
||||
logger.error(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
package com.group.service.io;
|
||||
|
||||
import com.taurus.core.entity.ITObject;
|
||||
|
||||
/**
|
||||
* 网络协议数据包
|
||||
* @author daixiwei daixiwei15@126.com
|
||||
*
|
||||
*/
|
||||
public class Packet {
|
||||
|
||||
/**
|
||||
* 协议包ID
|
||||
*/
|
||||
public int actionID;
|
||||
/**
|
||||
* 参数数据
|
||||
*/
|
||||
public ITObject parameters;
|
||||
}
|
||||
|
|
@ -0,0 +1,160 @@
|
|||
package com.group.service.io;
|
||||
|
||||
import com.taurus.core.util.ICallback;
|
||||
import com.taurus.core.util.Logger;
|
||||
import com.group.service.*;
|
||||
import com.group.service.TaurusClient.ConnectionProtocol;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.LinkedList;
|
||||
import java.util.Queue;
|
||||
|
||||
/**
|
||||
* SocketEngine
|
||||
*
|
||||
* @author daixiwei daixiwei15@126.com
|
||||
*
|
||||
*/
|
||||
public class SocketEngine implements ISocketLayer {
|
||||
private static final Logger logger = Logger.getLogger(SocketEngine.class);
|
||||
|
||||
ISocket _socket;
|
||||
private String _sessionToken;
|
||||
private String _serverAddress;
|
||||
|
||||
private ICallback<SocketCode> _onConnect;
|
||||
ICallback<Message> _onEvent;
|
||||
private Queue<Runnable> _actionQueue = new LinkedList<Runnable>();
|
||||
|
||||
SystemController _controller;
|
||||
LagMonitor _lagMonitor;
|
||||
IOHandler _packetHandler;
|
||||
TaurusClient _client;
|
||||
|
||||
public SocketEngine(TaurusClient client) {
|
||||
_socket = new SocketTcp(this);
|
||||
_controller = new SystemController(this);
|
||||
_packetHandler = new IOHandler(this, _controller);
|
||||
_lagMonitor = new LagMonitor(this, NetManager.TIMEOUT_TIME, 10);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void connect(String ip, String game) {
|
||||
_serverAddress = ip;
|
||||
_socket.connect();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void disconnect() {
|
||||
_socket.disconnect();
|
||||
if (_lagMonitor != null)
|
||||
_lagMonitor.destroy();
|
||||
_lagMonitor = null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void processEvent() {
|
||||
if (_socket.isConnected() && _controller.isTimeOut()) {
|
||||
if (_onConnect != null)
|
||||
_onConnect.action(SocketCode.TimeoutDisconnect);
|
||||
return;
|
||||
}
|
||||
|
||||
while (true) {
|
||||
Runnable myAction;
|
||||
synchronized (_actionQueue) {
|
||||
if (_actionQueue.size() <= 0) {
|
||||
break;
|
||||
}
|
||||
myAction = _actionQueue.poll();
|
||||
}
|
||||
myAction.run();
|
||||
}
|
||||
}
|
||||
|
||||
public void write(Message msg) {
|
||||
try {
|
||||
_controller.sendRequest(msg);
|
||||
} catch (IOException e) {
|
||||
logger.error(e);
|
||||
}
|
||||
}
|
||||
|
||||
void onStatusChanged(SocketCode statusCode) {
|
||||
if (statusCode != SocketCode.Connect) {
|
||||
_socket.disconnect();
|
||||
this.disconnect();
|
||||
}
|
||||
System.out.println("status : " + statusCode);
|
||||
logger.info("status : " + statusCode);
|
||||
if (statusCode == SocketCode.Connect) {
|
||||
this.onHandshake();
|
||||
} else {
|
||||
if (_onConnect != null)
|
||||
_onConnect.action(statusCode);
|
||||
}
|
||||
}
|
||||
|
||||
void onHandshake() {
|
||||
_controller.refreshTime();
|
||||
_lagMonitor.start();
|
||||
if (_onConnect != null)
|
||||
_onConnect.action(SocketCode.Connect);
|
||||
}
|
||||
|
||||
void enqueueActionForDispatch(Runnable action) {
|
||||
synchronized (_actionQueue) {
|
||||
_actionQueue.offer(action);
|
||||
}
|
||||
}
|
||||
|
||||
void enqueueStatusCallback(final SocketCode statusValue) {
|
||||
synchronized (_actionQueue) {
|
||||
_actionQueue.offer(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
onStatusChanged(statusValue);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
public String getServerAddress() {
|
||||
return _serverAddress;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ConnectionProtocol getProtocol() {
|
||||
return ConnectionProtocol.Tcp;
|
||||
}
|
||||
|
||||
public int getAveragePingTime() {
|
||||
return _lagMonitor != null ? _lagMonitor.getAveragePingTime() : 1000;
|
||||
}
|
||||
|
||||
public void setSession(String session) {
|
||||
_sessionToken = session == null ? "" : session;
|
||||
}
|
||||
|
||||
public String getSession() {
|
||||
return _sessionToken;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setOnConnect(ICallback<SocketCode> onConnect) {
|
||||
_onConnect = onConnect;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setOnEvent(ICallback<Message> onEvent) {
|
||||
_onEvent = onEvent;
|
||||
}
|
||||
|
||||
public int getProtocolCompression() {
|
||||
return 100;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
package com.group.service.io;
|
||||
|
||||
/**
|
||||
* 缃戠粶鐘舵€佹灇涓?
|
||||
* @author daixiwei daixiwei15@126.com
|
||||
*
|
||||
*/
|
||||
public enum SocketState{
|
||||
Disconnected,
|
||||
Connecting,
|
||||
Connected,
|
||||
Disconnecting
|
||||
}
|
||||
|
|
@ -0,0 +1,156 @@
|
|||
package com.group.service.io;
|
||||
|
||||
import com.taurus.core.util.ByteArray;
|
||||
import com.group.service.NetManager;
|
||||
import com.group.service.SocketCode;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
import java.net.InetSocketAddress;
|
||||
import java.net.Socket;
|
||||
import java.net.SocketAddress;
|
||||
|
||||
/**
|
||||
* Tcp协议 Socket核心类
|
||||
* @author daixiwei daixiwei15@126.com
|
||||
*
|
||||
*/
|
||||
class SocketTcp extends ISocket {
|
||||
private static final int READ_BUFFER_SIZE = 0x1000;
|
||||
private byte[] _byteBuffer = new byte[READ_BUFFER_SIZE];
|
||||
|
||||
private Socket _connection;
|
||||
private final Object _syncer = new Object();
|
||||
|
||||
public SocketTcp(SocketEngine npeer) {
|
||||
super(npeer);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean connect() {
|
||||
if (!super.connect()) {
|
||||
return false;
|
||||
} else {
|
||||
state = SocketState.Connecting;
|
||||
Thread t = new Thread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
connectThread();
|
||||
}
|
||||
});
|
||||
t.setName("mpnet connect thread");
|
||||
t.start();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
private void connectThread() {
|
||||
try {
|
||||
SocketAddress remoteAddr = new InetSocketAddress(serverAddress, super.serverPort);
|
||||
_connection = new Socket();
|
||||
_connection.setTcpNoDelay(true);
|
||||
_connection.connect(remoteAddr, NetManager.TIMEOUT_TIME * 1000);
|
||||
state = SocketState.Connected;
|
||||
_engine.enqueueStatusCallback(SocketCode.Connect);
|
||||
} catch (Exception ex) {
|
||||
try {
|
||||
if (_connection != null)
|
||||
_connection.close();
|
||||
} catch (Exception e) {
|
||||
logger.error("Connection close error", e);
|
||||
}
|
||||
logger.error("Connection error", ex);
|
||||
handleException(SocketCode.ExceptionOnConnect);
|
||||
return;
|
||||
}
|
||||
Thread _thrSocketReader = new Thread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
__read();
|
||||
}
|
||||
});
|
||||
_thrSocketReader.start();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean disconnect() {
|
||||
if (state == SocketState.Disconnected)
|
||||
return false;
|
||||
state = SocketState.Disconnecting;
|
||||
synchronized (_syncer) {
|
||||
if (_connection != null) {
|
||||
try {
|
||||
_connection.close();
|
||||
} catch (Exception ex) {
|
||||
logger.error("Disconnect error", ex);
|
||||
}
|
||||
_connection = null;
|
||||
}
|
||||
}
|
||||
state = SocketState.Disconnected;
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean send(byte[] data) {
|
||||
return __writeSocket(data);
|
||||
}
|
||||
|
||||
private boolean __writeSocket(byte[] buf) {
|
||||
if (_connection == null || state != SocketState.Connected) {
|
||||
logger.error("Trying to write to disconnected socket");
|
||||
return false;
|
||||
} else {
|
||||
try {
|
||||
OutputStream outStream = _connection.getOutputStream();
|
||||
outStream.write(buf);
|
||||
outStream.flush();
|
||||
} catch (Exception exception2) {
|
||||
logger.error("General error writing to socket", exception2);
|
||||
handleException(SocketCode.SendError);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
private void __read() {
|
||||
int size = 0;
|
||||
while (state == SocketState.Connected) {
|
||||
try {
|
||||
try {
|
||||
InputStream inputStream = _connection.getInputStream();
|
||||
size = inputStream.read(_byteBuffer);
|
||||
} catch (Exception ex) {
|
||||
throw new TSocketException(SocketCode.ExceptionOnReceive);
|
||||
}
|
||||
if (size == 0 || size == -1) {
|
||||
// System.out.println("socket----报错--------111111--------");
|
||||
throw new TSocketException(SocketCode.DisconnectByServer);
|
||||
}
|
||||
__handleBinaryData(_byteBuffer, size);
|
||||
|
||||
} catch (TSocketException ex3) {
|
||||
if (state != SocketState.Disconnecting && state.ordinal() > SocketState.Disconnected.ordinal()) {
|
||||
logger.error("Receiving failed.: ", ex3);
|
||||
super.handleException(ex3.socketCode);
|
||||
}
|
||||
} catch (Exception ex4) {
|
||||
if (state != SocketState.Disconnecting && state.ordinal() > SocketState.Disconnected.ordinal()) {
|
||||
logger.error("Receiving Exception: ", ex4);
|
||||
super.handleException(SocketCode.ExceptionOnReceive);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
this.disconnect();
|
||||
}
|
||||
|
||||
private void __handleBinaryData(byte[] buf, int size) throws IOException {
|
||||
byte[] dst = new byte[size];
|
||||
System.arraycopy(buf, 0, dst, 0, size);
|
||||
ByteArray array = new ByteArray(dst);
|
||||
_engine._packetHandler.onDataRead(array);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,177 @@
|
|||
package com.group.service.io;
|
||||
|
||||
import com.taurus.core.entity.ITObject;
|
||||
import com.taurus.core.entity.TObject;
|
||||
import com.group.service.Message;
|
||||
import com.group.service.MessageResponse;
|
||||
import com.group.service.NetManager;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 协议处理控制器
|
||||
*
|
||||
* @author daixiwei daixiwei15@126.com
|
||||
*
|
||||
*/
|
||||
public class SystemController {
|
||||
public static final String CONNECT_TOKE = "$t";
|
||||
public static final String CONNECT_PROT_COMPRESSION = "$pc";
|
||||
public static final String REQUEST_CMD = "$c";
|
||||
public static final String REQUEST_GID = "$gi";
|
||||
public static final String REQUEST_PARM = "$p";
|
||||
public static final String REQUEST_RESULT = "$r";
|
||||
|
||||
/**
|
||||
* pingpong
|
||||
*/
|
||||
public static final int ACTION_PINGPONG = 0;
|
||||
/**
|
||||
* 客户端请求
|
||||
*/
|
||||
public static final int ACTION_REQUST_CMD = 1;
|
||||
/**
|
||||
* 服务器事件消息
|
||||
*/
|
||||
public static final int ACTION_EVENT_CMD = 2;
|
||||
|
||||
private SocketEngine _engine;
|
||||
private long _lastTime;
|
||||
private List<Message> _handleList = new ArrayList<Message>();
|
||||
private int _tempID;
|
||||
|
||||
public SystemController(SocketEngine client) {
|
||||
_engine = client;
|
||||
_lastTime = System.currentTimeMillis();
|
||||
}
|
||||
|
||||
private int _getValidID() {
|
||||
return ++_tempID;
|
||||
}
|
||||
|
||||
|
||||
public void handlePacket(Packet packet) {
|
||||
_lastTime = System.currentTimeMillis();
|
||||
switch (packet.actionID) {
|
||||
case ACTION_PINGPONG:
|
||||
fnPingPong(packet);
|
||||
break;
|
||||
case ACTION_REQUST_CMD:
|
||||
fnOperationResponse(packet);
|
||||
break;
|
||||
case ACTION_EVENT_CMD:
|
||||
fnOperationEvent(packet);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sendRequest(Message msg) throws IOException {
|
||||
Packet packet = new Packet();
|
||||
packet.actionID = SystemController.ACTION_REQUST_CMD;
|
||||
ITObject obj = TObject.newInstance();
|
||||
obj.putString(SystemController.REQUEST_CMD, msg.command);
|
||||
int gid = 0;
|
||||
if (msg.callback != null) {
|
||||
gid = _getValidID();
|
||||
msg.lastTime = System.currentTimeMillis();
|
||||
msg.gid = gid;
|
||||
synchronized (_handleList) {
|
||||
_handleList.add(msg);
|
||||
}
|
||||
}
|
||||
obj.putInt(SystemController.REQUEST_GID, gid);
|
||||
obj.putTObject(SystemController.REQUEST_PARM, msg.param);
|
||||
packet.parameters = obj;
|
||||
_engine._packetHandler.onDataWrite(packet);
|
||||
}
|
||||
|
||||
void sendPingPong() throws IOException {
|
||||
Packet packet = new Packet();
|
||||
packet.actionID = SystemController.ACTION_PINGPONG;
|
||||
packet.parameters = TObject.newInstance();
|
||||
_engine._packetHandler.onDataWrite(packet);
|
||||
}
|
||||
|
||||
private final void fnOperationResponse(final Packet packet) {
|
||||
final int gid = packet.parameters.getInt(REQUEST_GID);
|
||||
final int result = packet.parameters.getInt(REQUEST_RESULT);
|
||||
ITObject tem = null;
|
||||
if (packet.parameters.containsKey(REQUEST_PARM)) {
|
||||
tem = packet.parameters.getTObject(REQUEST_PARM);
|
||||
}
|
||||
final ITObject param = tem;
|
||||
_engine.enqueueActionForDispatch(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
handleOperationResponse(result, gid, param);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void handleOperationResponse(int result, int gid, ITObject param) {
|
||||
Message msg = null;
|
||||
int index = 0;
|
||||
int len = _handleList.size();
|
||||
if (gid > 0) {
|
||||
for (int i = 0; i < len; ++i) {
|
||||
if (gid == _handleList.get(i).gid) {
|
||||
msg = _handleList.get(i);
|
||||
index = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (msg != null) {
|
||||
if (msg.callback != null) {
|
||||
MessageResponse response = new MessageResponse();
|
||||
msg.param = param;
|
||||
response.messageData = msg;
|
||||
response.returnCode = result;
|
||||
msg.callback.action(response);
|
||||
}
|
||||
synchronized (_handleList) {
|
||||
_handleList.remove(index);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private final void fnOperationEvent(Packet packet) {
|
||||
final String cmd = packet.parameters.getString(REQUEST_CMD);
|
||||
ITObject tem = null;
|
||||
if (packet.parameters.containsKey(REQUEST_PARM)) {
|
||||
tem = packet.parameters.getTObject(REQUEST_PARM);
|
||||
}
|
||||
final ITObject param = tem;
|
||||
_engine.enqueueActionForDispatch(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
handleEvent(cmd, param);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
void handleEvent(String cmd, ITObject param) {
|
||||
Message msg = new Message();
|
||||
msg.command = cmd;
|
||||
msg.param = param;
|
||||
if (_engine._onEvent != null)
|
||||
_engine._onEvent.action(msg);
|
||||
}
|
||||
|
||||
|
||||
private final void fnPingPong(Packet packet) {
|
||||
_engine._lagMonitor.fnPingPong();
|
||||
}
|
||||
|
||||
public boolean isTimeOut() {
|
||||
return (System.currentTimeMillis() - _lastTime) / 1000 > NetManager.TIMEOUT_TIME;
|
||||
}
|
||||
|
||||
public void refreshTime() {
|
||||
_lastTime = System.currentTimeMillis();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
package com.group.service.io;
|
||||
|
||||
import com.group.service.SocketCode;
|
||||
|
||||
/**
|
||||
* 缃戠粶閫氫俊寮傚父
|
||||
* @author daixiwei daixiwei15@126.com
|
||||
*
|
||||
*/
|
||||
public class TSocketException extends Exception{
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
public SocketCode socketCode;
|
||||
|
||||
public TSocketException(SocketCode code) {
|
||||
socketCode = code;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
<!DOCTYPE web-app PUBLIC
|
||||
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
|
||||
"http://java.sun.com/dtd/web-app_2_3.dtd" >
|
||||
|
||||
<web-app>
|
||||
<filter>
|
||||
<filter-name>taurus-web</filter-name>
|
||||
<filter-class>com.taurus.web.WebFilter</filter-class>
|
||||
<init-param>
|
||||
<param-name>main</param-name>
|
||||
<param-value>com.group.MainServer</param-value>
|
||||
</init-param>
|
||||
</filter>
|
||||
|
||||
<filter-mapping>
|
||||
<filter-name>taurus-web</filter-name>
|
||||
<url-pattern>/*</url-pattern>
|
||||
</filter-mapping>
|
||||
</web-app>
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
local tag_hp = tonumber(redis.call('hget', KEYS[1],'hp'))
|
||||
local bank_hp = tonumber(redis.call('hget', KEYS[2],KEYS[3]))
|
||||
bank_hp = not bank_hp and 0 or bank_hp
|
||||
local hp = tonumber(ARGV[1])
|
||||
local opt = tonumber(ARGV[2])
|
||||
if opt==0 then
|
||||
if bank_hp < hp then
|
||||
return 3
|
||||
end
|
||||
bank_hp = redis.call('hincrBy',KEYS[2],KEYS[3],-hp)
|
||||
tag_hp = redis.call('hincrBy',KEYS[1],'hp',hp)
|
||||
else
|
||||
if tag_hp < hp then
|
||||
return 4
|
||||
end
|
||||
bank_hp = redis.call('hincrBy',KEYS[2],KEYS[3],hp)
|
||||
tag_hp = redis.call('hincrBy',KEYS[1],'hp',-hp)
|
||||
end
|
||||
return {tag_hp,bank_hp}
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
|
||||
log4j.rootLogger = INFO,consoleAppender,fileAppender
|
||||
|
||||
# ConsoleAppender
|
||||
log4j.appender.consoleAppender=org.apache.log4j.ConsoleAppender
|
||||
log4j.appender.consoleAppender.layout=org.apache.log4j.PatternLayout
|
||||
log4j.appender.consoleAppender.layout.ConversionPattern=%d{HH:mm:ss,SSS} %-5p [%t] %c{2} %3x - %m%n
|
||||
|
||||
|
||||
# Regular FileAppender
|
||||
log4j.appender.fileAppender=org.apache.log4j.DailyRollingFileAppender
|
||||
log4j.appender.fileAppender.layout=org.apache.log4j.PatternLayout
|
||||
log4j.appender.fileAppender.File=${WORKDIR}/logs/web_main.log
|
||||
log4j.appender.fileAppender.layout.ConversionPattern=%d{dd MMM yyyy | HH:mm:ss,SSS} | %-5p | %t | %c{3} | %3x | %m%n
|
||||
log4j.appender.fileAppender.Encoding=UTF-8
|
||||
log4j.appender.fileAppender.DatePattern='.'yyyy-MM-dd
|
||||
log4j.appender.dailyFile.Append=true
|
||||
|
||||
# The file is rolled over very day
|
||||
log4j.appender.fileAppender.DatePattern ='.'yyyy-MM-dd
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
-- redis.call('select',0)
|
||||
local mgr_hp = tonumber(redis.call('hget', KEYS[1],'hp'))
|
||||
local tag_hp = tonumber(redis.call('hget', KEYS[2],'hp'))
|
||||
|
||||
local ulev = tonumber(ARGV[2])
|
||||
local hp = tonumber(ARGV[1])
|
||||
if ulev == 3 or ulev == 2 then
|
||||
if KEYS[1] ~= KEYS[2] and hp > 0 and mgr_hp < hp then
|
||||
return 3
|
||||
else
|
||||
if hp < 0 and tag_hp < math.abs(hp) then
|
||||
return 4
|
||||
end
|
||||
mgr_hp = redis.call('hincrBy',KEYS[1],'hp',-hp)
|
||||
tag_hp = redis.call('hincrBy',KEYS[2],'hp',hp)
|
||||
end
|
||||
else
|
||||
tag_hp = tag_hp + hp
|
||||
if tag_hp < 0 then
|
||||
return 4
|
||||
else
|
||||
redis.call('hincrBy',KEYS[2],'hp',hp)
|
||||
end
|
||||
end
|
||||
return {mgr_hp,tag_hp}
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
local reward_hp = tonumber(redis.call('get', KEYS[1]))
|
||||
local hp = tonumber(ARGV[1])
|
||||
local tag_hp = 0
|
||||
if hp > 0 and reward_hp < hp then
|
||||
return 3
|
||||
else
|
||||
reward_hp = redis.call('incrBy',KEYS[1],-hp)
|
||||
tag_hp = redis.call('hincrBy',KEYS[2],'hp',hp)
|
||||
end
|
||||
return {reward_hp,tag_hp}
|
||||
|
|
@ -0,0 +1,101 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<serivce-core>
|
||||
<log4jPath>log4j.properties</log4jPath>
|
||||
|
||||
<plugin>
|
||||
<id>database</id>
|
||||
<class>com.taurus.core.plugin.database.DataBasePlugin</class>
|
||||
|
||||
<poolConfig>
|
||||
<!-- 最大连接数, 默认10个 -->
|
||||
<maxPool>100</maxPool>
|
||||
<!-- 最小空闲连接数, 默认0个 -->
|
||||
<minIdle>10</minIdle>
|
||||
<!-- 配置获取连接等待超时的时间,单位是毫秒, 默认180000 -->
|
||||
<maxLifetime>180000</maxLifetime>
|
||||
<!--hsqldb - "select 1 from INFORMATION_SCHEMA.SYSTEM_USERS"
|
||||
Oracle - "select 1 from dual"
|
||||
DB2 - "select 1 from sysibm.sysdummy1"
|
||||
mysql - "select 1" -->
|
||||
<validationQuery>select 1</validationQuery>
|
||||
<!-- 连接超时时间,默认30000-->
|
||||
<connectionTimeout>10000</connectionTimeout>
|
||||
<!-- 待机超时时间,单位是毫秒, 默认60000 -->
|
||||
<idleTimeout>60000</idleTimeout>
|
||||
|
||||
<!-- jdbc 属性 -->
|
||||
<props>
|
||||
<useSSL>false</useSSL>
|
||||
<useUnicode>true</useUnicode>
|
||||
<characterEncoding>utf-8</characterEncoding>
|
||||
<!-- 服务器时区 -->
|
||||
<serverTimezone>UTC</serverTimezone>
|
||||
<!-- 预编译缓存 -->
|
||||
<cachePrepStmts>true</cachePrepStmts>
|
||||
<!-- 预编译缓存大小 -->
|
||||
<prepStmtCacheSize>250</prepStmtCacheSize>
|
||||
<!-- 控制长度多大的sql可以被缓存 -->
|
||||
<prepStmtCacheSqlLimit>2048</prepStmtCacheSqlLimit>
|
||||
</props>
|
||||
</poolConfig>
|
||||
|
||||
<databases>
|
||||
<db>
|
||||
<name>db1</name>
|
||||
<driverName>com.mysql.cj.jdbc.Driver</driverName>
|
||||
<jdbcUrl>jdbc:mysql://47.109.55.7:8060/wb_game</jdbcUrl>
|
||||
<userName>root</userName>
|
||||
<password>6KYnXJjGhxNceF8e</password>
|
||||
</db>
|
||||
</databases>
|
||||
</plugin>
|
||||
|
||||
<plugin>
|
||||
<id>redis</id>
|
||||
<class>com.taurus.core.plugin.redis.RedisPlugin</class>
|
||||
|
||||
<poolConfig>
|
||||
<!-- 最大连接数, 默认8个 -->
|
||||
<maxTotal>80</maxTotal>
|
||||
<!-- 最大空闲连接数, 默认8个 -->
|
||||
<maxIdle>20</maxIdle>
|
||||
<!-- 最小空闲连接数, 默认0个 -->
|
||||
<minIdle>5</minIdle>
|
||||
<!-- 获取连接时的最大等待毫秒数(如果设置为阻塞时BlockWhenExhausted),如果超时就抛异常, 小于零:阻塞不确定的时间, 默认-1 -->
|
||||
<maxWaitMillis>-1</maxWaitMillis>
|
||||
<!-- 在borrow一个jedis实例时,是否提前进行alidate操作, 默认false -->
|
||||
<testOnBorrow>true</testOnBorrow>
|
||||
<!-- 在return给pool时,是否提前进行validate操作, 默认false -->
|
||||
<testOnReturn>true</testOnReturn>
|
||||
<!-- 表示有一个idle object evitor线程对idle object进行扫描,如果validate失败,
|
||||
此object会被从pool中drop掉;这一项只有在timeBetweenEvictionRunsMillis大于0时才有意义, 默认true -->
|
||||
<testWhileIdle>true</testWhileIdle>
|
||||
<!-- 表示idle object evitor每次扫描的最多的对象数, 默认-1 -->
|
||||
<numTestsPerEvictionRun>100</numTestsPerEvictionRun>
|
||||
<!-- 表示一个对象至少停留在idle状态的最短时间,然后才能被idle object evitor扫描并驱逐;
|
||||
这一项只有在timeBetweenEvictionRunsMillis大于0时才有意义 , 默认60000-->
|
||||
<minEvictableIdleTimeMillis>60000</minEvictableIdleTimeMillis>
|
||||
<!-- 逐出扫描的时间间隔(毫秒) 如果为负数,则不运行逐出线程, 默认30000 -->
|
||||
<timeBetweenEvictionRunsMillis>30000</timeBetweenEvictionRunsMillis>
|
||||
<!-- 在minEvictableIdleTimeMillis基础上,加入了至少minIdle个对象已经在pool里面了。
|
||||
如果为-1,evicted不会根据idle time驱逐任何对象。如果minEvictableIdleTimeMillisd大于0,
|
||||
则此项设置无意义,且只有在timeBetweenEvictionRunsMillis大于0时才有意义,默认1800000 -->
|
||||
<softMinEvictableIdleTimeMillis>1800000</softMinEvictableIdleTimeMillis>
|
||||
<!-- 连接耗尽时是否阻塞, false报异常,ture阻塞直到超时, 默认true -->
|
||||
<blockWhenExhausted>true</blockWhenExhausted>
|
||||
</poolConfig>
|
||||
|
||||
<infos>
|
||||
<info name="group1_db0" host="r-2vc0x3clldkj94synhpd.redis.cn-chengdu.rds.aliyuncs.com" password="KuaiLjzhu@2026" port="6379" database="0" timeout="5000"/>
|
||||
<info name="group1_db1" host="r-2vc0x3clldkj94synhpd.redis.cn-chengdu.rds.aliyuncs.com" password="KuaiLjzhu@2026" port="6379" database="1" timeout="5000"/>
|
||||
<info name="group1_db2" host="r-2vc0x3clldkj94synhpd.redis.cn-chengdu.rds.aliyuncs.com" password="KuaiLjzhu@2026" port="6379" database="2" timeout="5000"/>
|
||||
<info name="group1_db5" host="r-2vc0x3clldkj94synhpd.redis.cn-chengdu.rds.aliyuncs.com" password="KuaiLjzhu@2026" port="6379" database="5" timeout="5000"/>
|
||||
<info name="group1_db8" host="r-2vc0x3clldkj94synhpd.redis.cn-chengdu.rds.aliyuncs.com" password="KuaiLjzhu@2026" port="6379" database="8" timeout="5000"/>
|
||||
<info name="group1_db9" host="r-2vc0x3clldkj94synhpd.redis.cn-chengdu.rds.aliyuncs.com" password="KuaiLjzhu@2026" port="6379" database="9" timeout="5000"/>
|
||||
<info name="group1_db10" host="r-2vc0x3clldkj94synhpd.redis.cn-chengdu.rds.aliyuncs.com" password="KuaiLjzhu@2026" port="6379" database="10" timeout="5000"/>
|
||||
<info name="group1_db11" host="r-2vc0x3clldkj94synhpd.redis.cn-chengdu.rds.aliyuncs.com" password="KuaiLjzhu@2026" port="6379" database="11" timeout="5000"/>
|
||||
<info name="tmp_group1_db9" host="r-2vc0x3clldkj94synhpd.redis.cn-chengdu.rds.aliyuncs.com" password="654sads" port="6479" database="9" timeout="5000"/>
|
||||
|
||||
</infos>
|
||||
</plugin>
|
||||
</serivce-core>
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
local mgr_hp = tonumber(redis.call('hget', KEYS[1],'hp'))
|
||||
local tag_hp = tonumber(redis.call('hget', KEYS[2],'hp'))
|
||||
mgr_hp = not mgr_hp and 0 or mgr_hp
|
||||
tag_hp = not tag_hp and 0 or tag_hp
|
||||
local hp = tonumber(ARGV[1])
|
||||
if hp > 0 and mgr_hp <hp then
|
||||
return 3
|
||||
else
|
||||
mgr_hp = redis.call('hincrBy',KEYS[1],'hp',-hp)
|
||||
tag_hp = redis.call('hincrBy',KEYS[2],'hp',hp)
|
||||
end
|
||||
return {mgr_hp,tag_hp}
|
||||
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,21 @@
|
|||
02 二月 2026 | 20:18:48,463 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
02 二月 2026 | 20:18:48,509 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
02 二月 2026 | 20:18:59,004 | INFO | qtp391618063-67 | group.controller.GroupController | | jefe_test: 423613
|
||||
02 二月 2026 | 20:19:00,476 | INFO | qtp391618063-67 | taurus.web.WebFilter | | action: get_groups[{user}:423613] time:2030ms
|
||||
02 二月 2026 | 20:19:03,346 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: enter_group[{user}:423613] time:1565ms
|
||||
02 二月 2026 | 20:20:27,855 | INFO | qtp391618063-62 | taurus.web.WebFilter | | action: enter_group[{user}:423613] time:1887ms
|
||||
02 二月 2026 | 20:20:52,593 | INFO | qtp391618063-64 | group.controller.GroupController | | jefe_test: 423613
|
||||
02 二月 2026 | 20:20:53,600 | INFO | qtp391618063-64 | taurus.web.WebFilter | | action: get_groups[{user}:423613] time:1450ms
|
||||
02 二月 2026 | 20:20:56,259 | INFO | qtp391618063-63 | taurus.web.WebFilter | | action: enter_group[{user}:423613] time:1680ms
|
||||
02 二月 2026 | 20:21:10,659 | INFO | qtp391618063-69 | group.controller.GroupController | | jefe_test: 423613
|
||||
02 二月 2026 | 20:21:12,068 | INFO | qtp391618063-69 | taurus.web.WebFilter | | action: get_groups[{user}:423613] time:1869ms
|
||||
02 二月 2026 | 20:21:15,335 | INFO | qtp391618063-66 | taurus.web.WebFilter | | action: enter_group[{user}:423613] time:1619ms
|
||||
02 二月 2026 | 20:21:40,663 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
02 二月 2026 | 20:21:40,702 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
02 二月 2026 | 20:21:51,048 | INFO | qtp391618063-66 | taurus.web.WebFilter | | action: enter_group[{user}:423613] time:2093ms
|
||||
02 二月 2026 | 20:22:44,947 | INFO | qtp391618063-65 | group.controller.GroupController | | jefe_test: 423613
|
||||
02 二月 2026 | 20:22:46,082 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: get_groups[{user}:423613] time:1654ms
|
||||
02 二月 2026 | 20:22:48,345 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: enter_group[{user}:423613] time:1588ms
|
||||
02 二月 2026 | 20:23:31,313 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: get_partner_data[{user}:423613] time:2348ms
|
||||
02 二月 2026 | 20:23:39,990 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: get_my_members[{user}:423613] time:41885ms
|
||||
02 二月 2026 | 20:23:55,533 | INFO | qtp391618063-63 | taurus.web.WebFilter | | action: get_my_members[{user}:423613] time:41942ms
|
||||
|
|
@ -0,0 +1,722 @@
|
|||
04 二月 2026 | 14:02:16,795 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 14:02:16,871 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 14:02:36,494 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdatePlayRoomJob | | del robot room:327197 player:[520191,733468] fake_json:1
|
||||
04 二月 2026 | 14:02:53,410 | INFO | qtp391618063-67 | group.controller.GroupController | | jefe_test: 115777
|
||||
04 二月 2026 | 14:02:53,782 | INFO | qtp391618063-67 | taurus.web.WebFilter | | action: get_groups[{user}:115777] time:592ms
|
||||
04 二月 2026 | 14:02:55,261 | INFO | qtp391618063-64 | taurus.web.WebFilter | | action: enter_group[{user}:115777] time:564ms
|
||||
04 二月 2026 | 14:02:58,063 | INFO | qtp391618063-64 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 14:03:00,179 | INFO | qtp391618063-64 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:2491ms
|
||||
04 二月 2026 | 14:05:22,235 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdatePlayRoomJob | | del robot room:689567 player:[870909,285195] fake_json:1
|
||||
04 二月 2026 | 14:06:08,935 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdatePlayRoomJob | | del robot room:340133 player:[990477,148839] fake_json:1
|
||||
04 二月 2026 | 14:08:46,314 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdatePlayRoomJob | | del robot room:135569 player:[108473,992179] fake_json:1
|
||||
04 二月 2026 | 14:09:21,015 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdatePlayRoomJob | | del robot room:780903 player:[658983,223369] fake_json:1
|
||||
04 二月 2026 | 14:11:41,353 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdatePlayRoomJob | | del robot room:783725 player:[395743,608562] fake_json:1
|
||||
04 二月 2026 | 14:12:50,865 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdatePlayRoomJob | | del robot room:672847 player:[505572,446021] fake_json:1
|
||||
04 二月 2026 | 14:13:40,884 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdatePlayRoomJob | | del robot room:347815 player:[277652,455295] fake_json:1
|
||||
04 二月 2026 | 14:14:40,715 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdatePlayRoomJob | | del robot room:459447 player:[232304,893772] fake_json:1
|
||||
04 二月 2026 | 14:16:05,995 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 14:16:06,042 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 14:16:11,683 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdatePlayRoomJob | | del robot room:449672 player:[316412,950997] fake_json:1
|
||||
04 二月 2026 | 14:17:24,569 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 14:17:24,615 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 14:17:30,877 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdatePlayRoomJob | | del robot room:503519 player:[516400,657879] fake_json:1
|
||||
04 二月 2026 | 14:18:01,314 | INFO | qtp391618063-67 | taurus.web.WebFilter | | action: join_room[{user}:115777] time:1926ms
|
||||
04 二月 2026 | 14:18:13,100 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 14:18:13,151 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 14:18:24,797 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: join_room[{user}:115777] time:1644ms
|
||||
04 二月 2026 | 14:18:36,459 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: join_room[{user}:115777] time:1603ms
|
||||
04 二月 2026 | 14:18:42,069 | INFO | qtp391618063-66 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 14:18:42,147 | ERROR | mpnet connect thread | service.io.ISocket | | Connection error
|
||||
java.net.SocketException: Socket operation on nonsocket: configureBlocking
|
||||
at java.net.DualStackPlainSocketImpl.configureBlocking(Native Method)
|
||||
at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:84)
|
||||
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:476)
|
||||
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:218)
|
||||
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:200)
|
||||
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:162)
|
||||
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:394)
|
||||
at java.net.Socket.connect(Socket.java:606)
|
||||
at com.group.service.io.SocketTcp.connectThread(SocketTcp.java:53)
|
||||
at com.group.service.io.SocketTcp.access$000(SocketTcp.java:19)
|
||||
at com.group.service.io.SocketTcp$1.run(SocketTcp.java:39)
|
||||
at java.lang.Thread.run(Thread.java:750)
|
||||
04 二月 2026 | 14:18:43,487 | INFO | qtp391618063-66 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:2110ms
|
||||
04 二月 2026 | 14:19:16,244 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdatePlayRoomJob | | del robot room:323634 player:[768647,268775] fake_json:1
|
||||
04 二月 2026 | 14:19:40,971 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdatePlayRoomJob | | del robot room:911667 player:[161367,296214] fake_json:1
|
||||
04 二月 2026 | 14:21:15,767 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdatePlayRoomJob | | del robot room:266678 player:[609966,945218] fake_json:1
|
||||
04 二月 2026 | 14:21:19,485 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 14:21:19,532 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 14:21:27,883 | INFO | qtp391618063-64 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 14:21:29,501 | INFO | qtp391618063-64 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:2010ms
|
||||
04 二月 2026 | 14:22:17,968 | ERROR | Thread-31 | service.io.ISocket | | Receiving failed.:
|
||||
com.group.service.io.TSocketException
|
||||
at com.group.service.io.SocketTcp.__read(SocketTcp.java:126)
|
||||
at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19)
|
||||
at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70)
|
||||
at java.lang.Thread.run(Thread.java:750)
|
||||
04 二月 2026 | 14:22:58,394 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 14:22:58,440 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 14:23:52,922 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 14:23:52,970 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 14:23:55,178 | INFO | qtp391618063-63 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 14:23:59,097 | INFO | qtp391618063-63 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:4447ms
|
||||
04 二月 2026 | 14:24:06,046 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdatePlayRoomJob | | del robot room:859644 player:[362003,977049] fake_json:1
|
||||
04 二月 2026 | 14:24:26,424 | INFO | qtp391618063-63 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 14:24:29,831 | INFO | qtp391618063-63 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:3701ms
|
||||
04 二月 2026 | 14:24:35,853 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdatePlayRoomJob | | del robot room:744437 player:[870909,157747] fake_json:1
|
||||
04 二月 2026 | 14:26:28,897 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 14:26:28,954 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 14:26:50,031 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 14:26:50,077 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 14:26:53,790 | INFO | qtp391618063-62 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 14:26:57,610 | INFO | qtp391618063-62 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:4168ms
|
||||
04 二月 2026 | 14:27:15,907 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdatePlayRoomJob | | del robot room:309463 player:[914143,198184] fake_json:1
|
||||
04 二月 2026 | 14:27:25,911 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdatePlayRoomJob | | del robot room:611363 player:[976274,658983] fake_json:1
|
||||
04 二月 2026 | 14:27:56,632 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 14:27:56,680 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 14:28:12,363 | INFO | qtp391618063-65 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 14:28:16,139 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:4124ms
|
||||
04 二月 2026 | 14:28:46,192 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdatePlayRoomJob | | del robot room:490194 player:[168199,705790] fake_json:1
|
||||
04 二月 2026 | 14:29:53,423 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 14:29:53,473 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 14:29:58,153 | INFO | qtp391618063-60 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 14:30:00,291 | ERROR | Thread-30 | group.service.HttpClient | |
|
||||
java.net.MalformedURLException: no protocol: 192.168.0.32:8701225
|
||||
at java.net.URL.<init>(URL.java:610)
|
||||
at java.net.URL.<init>(URL.java:507)
|
||||
at java.net.URL.<init>(URL.java:456)
|
||||
at com.group.service.HttpClient.__requestAsync(HttpClient.java:79)
|
||||
at com.group.service.HttpClient.__sendMsg(HttpClient.java:69)
|
||||
at com.group.service.HttpClient.access$000(HttpClient.java:24)
|
||||
at com.group.service.HttpClient$2.run(HttpClient.java:188)
|
||||
at java.lang.Thread.run(Thread.java:750)
|
||||
04 二月 2026 | 14:30:01,934 | INFO | qtp391618063-60 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:4393ms
|
||||
04 二月 2026 | 14:30:21,055 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdatePlayRoomJob | | del robot room:594197 player:[301188,957316] fake_json:1
|
||||
04 二月 2026 | 14:30:36,895 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 14:30:36,942 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 14:30:43,221 | INFO | qtp391618063-62 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 14:30:50,264 | INFO | qtp391618063-62 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:7463ms
|
||||
04 二月 2026 | 14:31:30,985 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdatePlayRoomJob | | del robot room:789114 player:[232304,689714] fake_json:1
|
||||
04 二月 2026 | 14:31:37,579 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 14:31:37,625 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 14:33:25,595 | INFO | qtp391618063-65 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 14:33:31,811 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:6548ms
|
||||
04 二月 2026 | 14:37:45,470 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 14:37:45,516 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 14:37:50,024 | INFO | qtp391618063-65 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 14:37:56,823 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:7230ms
|
||||
04 二月 2026 | 14:38:11,950 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 14:38:11,991 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 14:38:16,372 | INFO | qtp391618063-62 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 14:38:17,961 | INFO | qtp391618063-62 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:2145ms
|
||||
04 二月 2026 | 14:38:37,794 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 14:38:37,843 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 14:38:40,969 | INFO | qtp391618063-65 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 14:38:42,312 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:1797ms
|
||||
04 二月 2026 | 14:40:04,825 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 14:40:04,873 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 14:40:10,944 | INFO | qtp391618063-66 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 14:40:12,679 | INFO | qtp391618063-66 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:2078ms
|
||||
04 二月 2026 | 14:40:49,971 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 14:40:50,018 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 14:40:54,743 | INFO | qtp391618063-66 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 14:40:55,015 | INFO | NetEvent-Thread | service.io.SocketEngine | | status : Connect
|
||||
04 二月 2026 | 14:40:56,402 | INFO | qtp391618063-66 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:2063ms
|
||||
04 二月 2026 | 14:41:25,579 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 14:41:25,621 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 14:41:34,091 | INFO | qtp391618063-60 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 14:41:34,366 | INFO | NetEvent-Thread | service.io.SocketEngine | | status : Connect
|
||||
04 二月 2026 | 14:41:36,048 | INFO | qtp391618063-60 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:2456ms
|
||||
04 二月 2026 | 14:41:53,655 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 14:41:53,696 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 14:42:00,246 | INFO | qtp391618063-65 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 14:42:00,477 | INFO | NetEvent-Thread | service.io.SocketEngine | | status : Connect
|
||||
04 二月 2026 | 14:42:01,767 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:1907ms
|
||||
04 二月 2026 | 14:42:33,541 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 14:42:33,586 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 14:42:36,631 | INFO | qtp391618063-65 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 14:42:36,900 | INFO | NetEvent-Thread | service.io.SocketEngine | | status : Connect
|
||||
04 二月 2026 | 14:42:38,256 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:1989ms
|
||||
04 二月 2026 | 14:43:11,250 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 14:43:11,293 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 14:43:15,311 | INFO | qtp391618063-67 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 14:43:15,516 | INFO | NetEvent-Thread | service.io.SocketEngine | | status : Connect
|
||||
04 二月 2026 | 14:43:17,788 | INFO | qtp391618063-67 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:2934ms
|
||||
04 二月 2026 | 14:44:34,514 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 14:44:34,558 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 14:44:43,945 | INFO | qtp391618063-65 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 14:44:44,197 | INFO | NetEvent-Thread | service.io.SocketEngine | | status : Connect
|
||||
04 二月 2026 | 14:44:46,460 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:2840ms
|
||||
04 二月 2026 | 14:47:44,665 | ERROR | Thread-32 | service.io.ISocket | | Receiving failed.:
|
||||
com.group.service.io.TSocketException
|
||||
at com.group.service.io.SocketTcp.__read(SocketTcp.java:126)
|
||||
at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19)
|
||||
at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70)
|
||||
at java.lang.Thread.run(Thread.java:750)
|
||||
04 二月 2026 | 14:47:44,749 | INFO | NetEvent-Thread | service.io.SocketEngine | | status : ExceptionOnReceive
|
||||
04 二月 2026 | 14:47:57,185 | INFO | qtp391618063-63 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 14:47:57,368 | INFO | NetEvent-Thread | service.io.SocketEngine | | status : Connect
|
||||
04 二月 2026 | 14:47:59,739 | INFO | qtp391618063-63 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:2920ms
|
||||
04 二月 2026 | 14:48:21,196 | INFO | qtp391618063-62 | taurus.web.WebFilter | | action: join_room[{user}:115777] time:326ms
|
||||
04 二月 2026 | 14:48:22,835 | INFO | qtp391618063-67 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 14:48:22,953 | INFO | NetEvent-Thread | service.io.SocketEngine | | status : Connect
|
||||
04 二月 2026 | 14:48:25,227 | INFO | qtp391618063-67 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:2807ms
|
||||
04 二月 2026 | 14:48:43,055 | ERROR | Thread-40 | service.io.ISocket | | Receiving failed.:
|
||||
com.group.service.io.TSocketException
|
||||
at com.group.service.io.SocketTcp.__read(SocketTcp.java:126)
|
||||
at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19)
|
||||
at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70)
|
||||
at java.lang.Thread.run(Thread.java:750)
|
||||
04 二月 2026 | 14:48:43,055 | ERROR | Thread-36 | service.io.ISocket | | Receiving failed.:
|
||||
com.group.service.io.TSocketException
|
||||
at com.group.service.io.SocketTcp.__read(SocketTcp.java:126)
|
||||
at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19)
|
||||
at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70)
|
||||
at java.lang.Thread.run(Thread.java:750)
|
||||
04 二月 2026 | 14:48:43,079 | INFO | NetEvent-Thread | service.io.SocketEngine | | status : ExceptionOnReceive
|
||||
04 二月 2026 | 14:48:43,079 | INFO | NetEvent-Thread | service.io.SocketEngine | | status : ExceptionOnReceive
|
||||
04 二月 2026 | 14:49:51,376 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 14:49:51,422 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 14:49:55,976 | INFO | qtp391618063-60 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 14:49:56,169 | INFO | games | service.io.SocketEngine | | status : Connect
|
||||
04 二月 2026 | 14:49:58,527 | INFO | qtp391618063-60 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:2856ms
|
||||
04 二月 2026 | 14:51:30,625 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 14:51:30,669 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 14:51:36,495 | INFO | qtp391618063-62 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 14:51:36,730 | INFO | games | service.io.SocketEngine | | status : Connect
|
||||
04 二月 2026 | 14:51:39,127 | INFO | qtp391618063-62 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:2969ms
|
||||
04 二月 2026 | 14:51:51,896 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 14:51:51,939 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 14:51:53,986 | INFO | qtp391618063-63 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 14:51:54,273 | INFO | games | service.io.SocketEngine | | status : Connect
|
||||
04 二月 2026 | 14:51:56,715 | INFO | qtp391618063-63 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:3083ms
|
||||
04 二月 2026 | 14:52:26,191 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 14:52:26,235 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 14:52:32,446 | INFO | qtp391618063-63 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 14:52:32,663 | INFO | games | service.io.SocketEngine | | status : Connect
|
||||
04 二月 2026 | 14:52:35,266 | INFO | qtp391618063-63 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:3173ms
|
||||
04 二月 2026 | 14:52:50,754 | INFO | qtp391618063-61 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 14:52:51,050 | INFO | games | service.io.SocketEngine | | status : Connect
|
||||
04 二月 2026 | 14:52:53,185 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:2741ms
|
||||
04 二月 2026 | 14:52:57,065 | INFO | qtp391618063-71 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 14:52:57,271 | INFO | games | service.io.SocketEngine | | status : Connect
|
||||
04 二月 2026 | 14:52:59,715 | INFO | qtp391618063-71 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:3094ms
|
||||
04 二月 2026 | 14:56:48,302 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 14:56:48,351 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 14:56:49,317 | INFO | qtp391618063-60 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 14:56:50,885 | INFO | qtp391618063-60 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:2008ms
|
||||
04 二月 2026 | 14:57:18,494 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 14:57:18,535 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 14:57:22,556 | INFO | qtp391618063-67 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 14:57:23,981 | ERROR | qtp391618063-67 | taurus.web.WebFilter | |
|
||||
java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer
|
||||
at com.taurus.core.entity.TObject.getInt(TObject.java:130)
|
||||
at com.group.service.GroupRoomService.matchRoom(GroupRoomService.java:1074)
|
||||
at com.group.controller.GroupRoomController.matchRoom(GroupRoomController.java:32)
|
||||
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
|
||||
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
|
||||
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
|
||||
at java.lang.reflect.Method.invoke(Method.java:498)
|
||||
at com.taurus.web.TWebServer.handle(TWebServer.java:166)
|
||||
at com.taurus.web.WebFilter.doFilter(WebFilter.java:58)
|
||||
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1487)
|
||||
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:499)
|
||||
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)
|
||||
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:557)
|
||||
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)
|
||||
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1086)
|
||||
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:427)
|
||||
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)
|
||||
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1020)
|
||||
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
|
||||
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
|
||||
at org.eclipse.jetty.server.Server.handle(Server.java:370)
|
||||
at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:494)
|
||||
at org.eclipse.jetty.server.AbstractHttpConnection.content(AbstractHttpConnection.java:984)
|
||||
at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.content(AbstractHttpConnection.java:1045)
|
||||
at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:861)
|
||||
at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:236)
|
||||
at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)
|
||||
at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:696)
|
||||
at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:53)
|
||||
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)
|
||||
at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)
|
||||
at java.lang.Thread.run(Thread.java:750)
|
||||
04 二月 2026 | 14:57:23,984 | INFO | qtp391618063-67 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:1725ms
|
||||
04 二月 2026 | 14:57:46,909 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 14:57:46,952 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 14:57:48,458 | INFO | qtp391618063-61 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 14:57:49,489 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:1452ms
|
||||
04 二月 2026 | 14:58:56,219 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 14:58:56,261 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 15:01:46,558 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 15:01:46,604 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 15:25:50,587 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 15:25:50,649 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 15:25:59,065 | INFO | qtp391618063-62 | taurus.web.WebFilter | | action: join_room[{user}:115777] time:6011ms
|
||||
04 二月 2026 | 15:26:20,493 | INFO | qtp391618063-64 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 15:26:23,973 | INFO | qtp391618063-64 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:4180ms
|
||||
04 二月 2026 | 15:26:23,981 | INFO | games | service.io.SocketEngine | | status : Connect
|
||||
04 二月 2026 | 15:26:43,640 | INFO | qtp391618063-65 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 15:26:46,841 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:3754ms
|
||||
04 二月 2026 | 15:26:46,877 | INFO | games | service.io.SocketEngine | | status : Connect
|
||||
04 二月 2026 | 15:27:05,463 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 15:27:05,503 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 15:27:12,010 | INFO | qtp391618063-65 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 15:27:16,423 | INFO | games2 | service.io.SocketEngine | | status : Connect
|
||||
04 二月 2026 | 15:27:16,432 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:5402ms
|
||||
04 二月 2026 | 15:27:27,197 | INFO | qtp391618063-64 | group.controller.GroupController | | jefe_test: 115777
|
||||
04 二月 2026 | 15:27:28,246 | INFO | qtp391618063-64 | taurus.web.WebFilter | | action: get_groups[{user}:115777] time:1314ms
|
||||
04 二月 2026 | 15:27:28,805 | INFO | qtp391618063-67 | taurus.web.WebFilter | | action: enter_group[{user}:115777] time:1123ms
|
||||
04 二月 2026 | 15:27:33,399 | INFO | qtp391618063-60 | taurus.web.WebFilter | | action: join_room[{user}:115777] time:3623ms
|
||||
04 二月 2026 | 15:28:24,197 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 15:28:24,238 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 15:28:29,424 | INFO | qtp391618063-59 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 15:28:33,271 | INFO | games2 | service.io.SocketEngine | | status : Connect
|
||||
04 二月 2026 | 15:28:33,414 | INFO | qtp391618063-59 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:4824ms
|
||||
04 二月 2026 | 15:28:49,649 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 15:28:49,690 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 15:29:09,405 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 15:29:09,450 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 15:29:12,556 | INFO | qtp391618063-66 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 15:29:15,810 | INFO | tstse | service.io.SocketEngine | | status : Connect
|
||||
04 二月 2026 | 15:29:17,845 | INFO | qtp391618063-66 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:6034ms
|
||||
04 二月 2026 | 15:30:29,984 | INFO | qtp391618063-61 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 15:30:34,002 | INFO | tstse | service.io.SocketEngine | | status : Connect
|
||||
04 二月 2026 | 15:30:35,991 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:8477ms
|
||||
04 二月 2026 | 15:32:23,530 | ERROR | Thread-36 | service.io.ISocket | | Receiving failed.:
|
||||
com.group.service.io.TSocketException
|
||||
at com.group.service.io.SocketTcp.__read(SocketTcp.java:126)
|
||||
at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19)
|
||||
at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70)
|
||||
at java.lang.Thread.run(Thread.java:750)
|
||||
04 二月 2026 | 15:32:23,530 | ERROR | Thread-32 | service.io.ISocket | | Receiving failed.:
|
||||
com.group.service.io.TSocketException
|
||||
at com.group.service.io.SocketTcp.__read(SocketTcp.java:126)
|
||||
at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19)
|
||||
at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70)
|
||||
at java.lang.Thread.run(Thread.java:750)
|
||||
04 二月 2026 | 15:32:23,549 | INFO | tstse | service.io.SocketEngine | | status : ExceptionOnReceive
|
||||
04 二月 2026 | 15:32:23,549 | INFO | tstse | service.io.SocketEngine | | status : ExceptionOnReceive
|
||||
04 二月 2026 | 15:33:26,673 | INFO | qtp391618063-61 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 15:33:31,203 | INFO | tstse | service.io.SocketEngine | | status : Connect
|
||||
04 二月 2026 | 15:33:33,175 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:7215ms
|
||||
04 二月 2026 | 15:34:23,289 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 15:34:23,331 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 15:34:34,777 | INFO | qtp391618063-61 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 15:34:39,613 | INFO | tstse | service.io.SocketEngine | | status : Connect
|
||||
04 二月 2026 | 15:34:41,647 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:7796ms
|
||||
04 二月 2026 | 15:37:11,786 | ERROR | Thread-29 | service.io.ISocket | | Receiving failed.:
|
||||
com.group.service.io.TSocketException
|
||||
at com.group.service.io.SocketTcp.__read(SocketTcp.java:126)
|
||||
at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19)
|
||||
at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70)
|
||||
at java.lang.Thread.run(Thread.java:750)
|
||||
04 二月 2026 | 15:37:11,858 | INFO | tstse | service.io.SocketEngine | | status : ExceptionOnReceive
|
||||
04 二月 2026 | 15:37:32,358 | INFO | qtp391618063-60 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 15:37:37,041 | INFO | tstse | service.io.SocketEngine | | status : Connect
|
||||
04 二月 2026 | 15:37:39,006 | INFO | qtp391618063-60 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:7604ms
|
||||
04 二月 2026 | 15:38:13,290 | INFO | qtp391618063-73 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 15:38:17,915 | INFO | tstse | service.io.SocketEngine | | status : Connect
|
||||
04 二月 2026 | 15:38:20,174 | INFO | qtp391618063-73 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:7592ms
|
||||
04 二月 2026 | 15:38:21,374 | ERROR | Thread-39 | service.io.ISocket | | Receiving failed.:
|
||||
com.group.service.io.TSocketException
|
||||
at com.group.service.io.SocketTcp.__read(SocketTcp.java:126)
|
||||
at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19)
|
||||
at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70)
|
||||
at java.lang.Thread.run(Thread.java:750)
|
||||
04 二月 2026 | 15:38:21,374 | ERROR | Thread-35 | service.io.ISocket | | Receiving failed.:
|
||||
com.group.service.io.TSocketException
|
||||
at com.group.service.io.SocketTcp.__read(SocketTcp.java:126)
|
||||
at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19)
|
||||
at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70)
|
||||
at java.lang.Thread.run(Thread.java:750)
|
||||
04 二月 2026 | 15:38:21,393 | INFO | tstse | service.io.SocketEngine | | status : ExceptionOnReceive
|
||||
04 二月 2026 | 15:38:21,393 | INFO | tstse | service.io.SocketEngine | | status : ExceptionOnReceive
|
||||
04 二月 2026 | 15:38:40,019 | INFO | qtp391618063-73 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 15:38:43,954 | INFO | tstse | service.io.SocketEngine | | status : Connect
|
||||
04 二月 2026 | 15:38:45,982 | INFO | qtp391618063-73 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:6861ms
|
||||
04 二月 2026 | 15:42:35,519 | ERROR | Thread-43 | service.io.ISocket | | Receiving failed.:
|
||||
com.group.service.io.TSocketException
|
||||
at com.group.service.io.SocketTcp.__read(SocketTcp.java:126)
|
||||
at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19)
|
||||
at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70)
|
||||
at java.lang.Thread.run(Thread.java:750)
|
||||
04 二月 2026 | 15:42:35,539 | INFO | tstse | service.io.SocketEngine | | status : ExceptionOnReceive
|
||||
04 二月 2026 | 15:42:53,549 | INFO | qtp391618063-93 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 15:42:57,450 | INFO | tstse | service.io.SocketEngine | | status : Connect
|
||||
04 二月 2026 | 15:42:59,447 | INFO | qtp391618063-93 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:7086ms
|
||||
04 二月 2026 | 15:43:32,392 | ERROR | Thread-51 | service.io.ISocket | | Receiving failed.:
|
||||
com.group.service.io.TSocketException
|
||||
at com.group.service.io.SocketTcp.__read(SocketTcp.java:126)
|
||||
at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19)
|
||||
at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70)
|
||||
at java.lang.Thread.run(Thread.java:750)
|
||||
04 二月 2026 | 15:43:32,417 | INFO | tstse | service.io.SocketEngine | | status : ExceptionOnReceive
|
||||
04 二月 2026 | 15:43:33,381 | INFO | qtp391618063-93 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 15:43:38,078 | INFO | tstse | service.io.SocketEngine | | status : Connect
|
||||
04 二月 2026 | 15:43:39,263 | INFO | qtp391618063-93 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:6690ms
|
||||
04 二月 2026 | 15:44:37,280 | ERROR | Thread-56 | service.io.ISocket | | Receiving failed.:
|
||||
com.group.service.io.TSocketException
|
||||
at com.group.service.io.SocketTcp.__read(SocketTcp.java:126)
|
||||
at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19)
|
||||
at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70)
|
||||
at java.lang.Thread.run(Thread.java:750)
|
||||
04 二月 2026 | 15:44:37,284 | INFO | tstse | service.io.SocketEngine | | status : ExceptionOnReceive
|
||||
04 二月 2026 | 15:44:53,697 | INFO | qtp391618063-93 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 15:44:57,396 | INFO | tstse | service.io.SocketEngine | | status : Connect
|
||||
04 二月 2026 | 15:44:59,499 | INFO | qtp391618063-93 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:6511ms
|
||||
04 二月 2026 | 15:45:34,664 | ERROR | Thread-61 | service.io.ISocket | | Receiving failed.:
|
||||
com.group.service.io.TSocketException
|
||||
at com.group.service.io.SocketTcp.__read(SocketTcp.java:126)
|
||||
at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19)
|
||||
at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70)
|
||||
at java.lang.Thread.run(Thread.java:750)
|
||||
04 二月 2026 | 15:45:34,676 | INFO | tstse | service.io.SocketEngine | | status : ExceptionOnReceive
|
||||
04 二月 2026 | 15:45:45,855 | INFO | qtp391618063-93 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 15:45:49,621 | INFO | tstse | service.io.SocketEngine | | status : Connect
|
||||
04 二月 2026 | 15:45:51,697 | INFO | qtp391618063-93 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:6654ms
|
||||
04 二月 2026 | 15:49:16,689 | ERROR | Thread-66 | service.io.ISocket | | Receiving failed.:
|
||||
com.group.service.io.TSocketException
|
||||
at com.group.service.io.SocketTcp.__read(SocketTcp.java:126)
|
||||
at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19)
|
||||
at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70)
|
||||
at java.lang.Thread.run(Thread.java:750)
|
||||
04 二月 2026 | 15:49:16,701 | INFO | tstse | service.io.SocketEngine | | status : ExceptionOnReceive
|
||||
04 二月 2026 | 15:49:20,659 | INFO | qtp391618063-124 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 15:49:24,439 | INFO | tstse | service.io.SocketEngine | | status : Connect
|
||||
04 二月 2026 | 15:49:26,423 | INFO | qtp391618063-124 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:6362ms
|
||||
04 二月 2026 | 15:51:45,966 | INFO | qtp391618063-134 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 15:51:50,802 | INFO | tstse | service.io.SocketEngine | | status : Connect
|
||||
04 二月 2026 | 15:51:52,722 | INFO | qtp391618063-134 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:7509ms
|
||||
04 二月 2026 | 15:52:16,160 | INFO | qtp391618063-134 | group.controller.GroupController | | jefe_test: 112233
|
||||
04 二月 2026 | 15:52:17,103 | INFO | qtp391618063-134 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:1555ms
|
||||
04 二月 2026 | 15:52:22,556 | INFO | qtp391618063-134 | taurus.web.WebFilter | | action: enter_group[{user}:112233] time:561ms
|
||||
04 二月 2026 | 15:52:52,871 | ERROR | Thread-80 | service.io.ISocket | | Receiving failed.:
|
||||
com.group.service.io.TSocketException
|
||||
at com.group.service.io.SocketTcp.__read(SocketTcp.java:126)
|
||||
at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19)
|
||||
at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70)
|
||||
at java.lang.Thread.run(Thread.java:750)
|
||||
04 二月 2026 | 15:52:52,871 | ERROR | Thread-73 | service.io.ISocket | | Receiving failed.:
|
||||
com.group.service.io.TSocketException
|
||||
at com.group.service.io.SocketTcp.__read(SocketTcp.java:126)
|
||||
at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19)
|
||||
at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70)
|
||||
at java.lang.Thread.run(Thread.java:750)
|
||||
04 二月 2026 | 15:52:52,883 | INFO | tstse | service.io.SocketEngine | | status : ExceptionOnReceive
|
||||
04 二月 2026 | 15:52:52,883 | INFO | tstse | service.io.SocketEngine | | status : ExceptionOnReceive
|
||||
04 二月 2026 | 15:53:01,624 | INFO | qtp391618063-132 | group.controller.GroupController | | jefe_test: 115777
|
||||
04 二月 2026 | 15:53:01,955 | INFO | qtp391618063-132 | taurus.web.WebFilter | | action: get_groups[{user}:115777] time:582ms
|
||||
04 二月 2026 | 15:53:02,420 | INFO | qtp391618063-142 | taurus.web.WebFilter | | action: enter_group[{user}:115777] time:487ms
|
||||
04 二月 2026 | 15:53:03,682 | INFO | qtp391618063-142 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 15:53:05,501 | INFO | tstse | service.io.SocketEngine | | status : Connect
|
||||
04 二月 2026 | 15:53:07,479 | INFO | qtp391618063-142 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:4178ms
|
||||
04 二月 2026 | 15:53:23,466 | INFO | qtp391618063-132 | group.controller.GroupController | | jefe_test: 112233
|
||||
04 二月 2026 | 15:53:24,037 | INFO | qtp391618063-132 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:793ms
|
||||
04 二月 2026 | 15:53:24,532 | INFO | qtp391618063-142 | taurus.web.WebFilter | | action: enter_group[{user}:112233] time:493ms
|
||||
04 二月 2026 | 15:53:27,905 | INFO | qtp391618063-142 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 15:53:29,579 | INFO | tstse | service.io.SocketEngine | | status : Connect
|
||||
04 二月 2026 | 15:53:31,614 | INFO | qtp391618063-142 | taurus.web.WebFilter | | action: match_room[{user}:112233] time:3979ms
|
||||
04 二月 2026 | 15:54:08,273 | ERROR | Thread-90 | service.io.ISocket | | Receiving failed.:
|
||||
com.group.service.io.TSocketException
|
||||
at com.group.service.io.SocketTcp.__read(SocketTcp.java:126)
|
||||
at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19)
|
||||
at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70)
|
||||
at java.lang.Thread.run(Thread.java:750)
|
||||
04 二月 2026 | 15:54:08,273 | ERROR | Thread-85 | service.io.ISocket | | Receiving failed.:
|
||||
com.group.service.io.TSocketException
|
||||
at com.group.service.io.SocketTcp.__read(SocketTcp.java:126)
|
||||
at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19)
|
||||
at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70)
|
||||
at java.lang.Thread.run(Thread.java:750)
|
||||
04 二月 2026 | 15:54:08,283 | INFO | tstse | service.io.SocketEngine | | status : ExceptionOnReceive
|
||||
04 二月 2026 | 15:54:08,283 | INFO | tstse | service.io.SocketEngine | | status : ExceptionOnReceive
|
||||
04 二月 2026 | 16:01:37,449 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 16:01:37,491 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 16:01:46,031 | INFO | qtp391618063-65 | group.controller.GroupController | | jefe_test: 112233
|
||||
04 二月 2026 | 16:01:46,537 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:647ms
|
||||
04 二月 2026 | 16:01:47,607 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: enter_group[{user}:112233] time:463ms
|
||||
04 二月 2026 | 16:01:50,455 | INFO | qtp391618063-62 | taurus.web.WebFilter | | action: join_room[{user}:112233] time:379ms
|
||||
04 二月 2026 | 16:01:53,487 | INFO | qtp391618063-64 | taurus.web.WebFilter | | action: join_room[{user}:112233] time:1054ms
|
||||
04 二月 2026 | 16:02:01,417 | INFO | qtp391618063-61 | group.controller.GroupController | | jefe_test: 112233
|
||||
04 二月 2026 | 16:02:01,734 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:649ms
|
||||
04 二月 2026 | 16:02:02,733 | INFO | qtp391618063-65 | group.controller.GroupController | | jefe_test: 112233
|
||||
04 二月 2026 | 16:02:03,427 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:862ms
|
||||
04 二月 2026 | 16:02:04,375 | INFO | qtp391618063-66 | taurus.web.WebFilter | | action: enter_group[{user}:112233] time:641ms
|
||||
04 二月 2026 | 16:02:16,575 | INFO | qtp391618063-65 | group.controller.GroupController | | jefe_test: 112233
|
||||
04 二月 2026 | 16:02:16,897 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:520ms
|
||||
04 二月 2026 | 16:02:17,492 | INFO | qtp391618063-62 | taurus.web.WebFilter | | action: enter_group[{user}:112233] time:545ms
|
||||
04 二月 2026 | 16:02:20,677 | INFO | qtp391618063-63 | taurus.web.WebFilter | | action: del__room[{user}:112233] time:338ms
|
||||
04 二月 2026 | 16:02:23,547 | INFO | qtp391618063-67 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 16:02:25,185 | INFO | tstse | service.io.SocketEngine | | status : Connect
|
||||
04 二月 2026 | 16:02:26,271 | INFO | qtp391618063-65 | group.controller.GroupController | | jefe_test: 112233
|
||||
04 二月 2026 | 16:02:26,630 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:641ms
|
||||
04 二月 2026 | 16:02:27,232 | INFO | qtp391618063-66 | taurus.web.WebFilter | | action: enter_group[{user}:112233] time:609ms
|
||||
04 二月 2026 | 16:02:27,306 | INFO | qtp391618063-67 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:4192ms
|
||||
04 二月 2026 | 16:03:24,217 | INFO | qtp391618063-61 | group.controller.GroupController | | jefe_test: 112233
|
||||
04 二月 2026 | 16:03:24,601 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:653ms
|
||||
04 二月 2026 | 16:03:24,932 | INFO | qtp391618063-61 | group.controller.GroupController | | jefe_test: 112233
|
||||
04 二月 2026 | 16:03:25,286 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:479ms
|
||||
04 二月 2026 | 16:03:26,515 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: enter_group[{user}:112233] time:551ms
|
||||
04 二月 2026 | 16:03:31,507 | INFO | qtp391618063-64 | taurus.web.WebFilter | | action: del__room[{user}:112233] time:367ms
|
||||
04 二月 2026 | 16:03:37,117 | INFO | qtp391618063-61 | group.controller.GroupController | | jefe_test: 112233
|
||||
04 二月 2026 | 16:03:37,537 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:580ms
|
||||
04 二月 2026 | 16:03:37,998 | INFO | qtp391618063-61 | group.controller.GroupController | | jefe_test: 112233
|
||||
04 二月 2026 | 16:03:38,451 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:587ms
|
||||
04 二月 2026 | 16:03:39,721 | INFO | qtp391618063-63 | taurus.web.WebFilter | | action: enter_group[{user}:112233] time:495ms
|
||||
04 二月 2026 | 16:03:45,974 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdatePlayRoomJob | | del robot room:377360 player:[456982,141106] fake_json:1
|
||||
04 二月 2026 | 16:04:05,338 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 16:04:05,391 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 16:04:08,687 | INFO | qtp391618063-63 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 16:04:10,863 | INFO | tstse | service.io.SocketEngine | | status : Connect
|
||||
04 二月 2026 | 16:04:12,988 | INFO | qtp391618063-63 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:4795ms
|
||||
04 二月 2026 | 16:04:16,345 | INFO | qtp391618063-67 | taurus.web.WebFilter | | action: enter_group[{user}:112233] time:648ms
|
||||
04 二月 2026 | 16:04:22,074 | ERROR | Thread-32 | service.io.ISocket | | Receiving failed.:
|
||||
com.group.service.io.TSocketException
|
||||
at com.group.service.io.SocketTcp.__read(SocketTcp.java:126)
|
||||
at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19)
|
||||
at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70)
|
||||
at java.lang.Thread.run(Thread.java:750)
|
||||
04 二月 2026 | 16:04:22,132 | INFO | tstse | service.io.SocketEngine | | status : ExceptionOnReceive
|
||||
04 二月 2026 | 16:04:28,873 | INFO | qtp391618063-65 | group.controller.GroupController | | jefe_test: 112233
|
||||
04 二月 2026 | 16:04:29,261 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:623ms
|
||||
04 二月 2026 | 16:04:31,394 | INFO | qtp391618063-67 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 16:04:33,106 | INFO | tstse | service.io.SocketEngine | | status : Connect
|
||||
04 二月 2026 | 16:04:35,188 | INFO | qtp391618063-67 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:4228ms
|
||||
04 二月 2026 | 16:04:42,316 | INFO | qtp391618063-63 | group.controller.GroupController | | jefe_test: 112233
|
||||
04 二月 2026 | 16:04:43,136 | INFO | qtp391618063-63 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:1221ms
|
||||
04 二月 2026 | 16:04:43,737 | INFO | qtp391618063-64 | taurus.web.WebFilter | | action: enter_group[{user}:112233] time:1113ms
|
||||
04 二月 2026 | 16:04:57,253 | INFO | qtp391618063-61 | group.controller.GroupController | | jefe_test: 112233
|
||||
04 二月 2026 | 16:04:57,552 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:538ms
|
||||
04 二月 2026 | 16:04:58,471 | INFO | qtp391618063-63 | taurus.web.WebFilter | | action: enter_group[{user}:112233] time:494ms
|
||||
04 二月 2026 | 16:05:00,314 | INFO | qtp391618063-60 | group.controller.GroupController | | jefe_test: 112233
|
||||
04 二月 2026 | 16:05:00,733 | INFO | qtp391618063-65 | group.controller.GroupController | | jefe_test: 112233
|
||||
04 二月 2026 | 16:05:00,769 | INFO | qtp391618063-60 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:805ms
|
||||
04 二月 2026 | 16:05:01,106 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:500ms
|
||||
04 二月 2026 | 16:05:21,168 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdatePlayRoomJob | | del robot room:500433 player:[503162,658983] fake_json:1
|
||||
04 二月 2026 | 16:05:51,193 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdatePlayRoomJob | | del robot room:376250 player:[296214,457322] fake_json:1
|
||||
04 二月 2026 | 16:06:27,138 | ERROR | Thread-36 | service.io.ISocket | | Receiving failed.:
|
||||
com.group.service.io.TSocketException
|
||||
at com.group.service.io.SocketTcp.__read(SocketTcp.java:126)
|
||||
at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19)
|
||||
at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70)
|
||||
at java.lang.Thread.run(Thread.java:750)
|
||||
04 二月 2026 | 16:06:27,151 | INFO | tstse | service.io.SocketEngine | | status : ExceptionOnReceive
|
||||
04 二月 2026 | 16:07:22,616 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 16:07:22,663 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 16:07:29,364 | INFO | qtp391618063-62 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 16:07:31,479 | INFO | tstse | service.io.SocketEngine | | status : Connect
|
||||
04 二月 2026 | 16:07:33,507 | INFO | qtp391618063-62 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:4640ms
|
||||
04 二月 2026 | 16:08:02,000 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdatePlayRoomJob | | del robot room:616587 player:[834603,923379] fake_json:1
|
||||
04 二月 2026 | 16:08:26,452 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdatePlayRoomJob | | del robot room:224143 player:[223369,152827] fake_json:1
|
||||
04 二月 2026 | 16:09:36,205 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdatePlayRoomJob | | del robot room:882695 player:[745978,447305] fake_json:1
|
||||
04 二月 2026 | 16:09:45,998 | INFO | qtp391618063-62 | group.controller.GroupController | | jefe_test: 112233
|
||||
04 二月 2026 | 16:09:46,542 | INFO | qtp391618063-62 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:726ms
|
||||
04 二月 2026 | 16:10:14,431 | INFO | qtp391618063-60 | group.controller.GroupController | | jefe_test: 112233
|
||||
04 二月 2026 | 16:10:14,893 | INFO | qtp391618063-60 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:813ms
|
||||
04 二月 2026 | 16:10:57,827 | ERROR | Thread-32 | service.io.ISocket | | Receiving failed.:
|
||||
com.group.service.io.TSocketException
|
||||
at com.group.service.io.SocketTcp.__read(SocketTcp.java:126)
|
||||
at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19)
|
||||
at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70)
|
||||
at java.lang.Thread.run(Thread.java:750)
|
||||
04 二月 2026 | 16:10:57,876 | INFO | tstse | service.io.SocketEngine | | status : ExceptionOnReceive
|
||||
04 二月 2026 | 16:11:21,577 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdatePlayRoomJob | | del robot room:147802 player:[857709,689714] fake_json:1
|
||||
04 二月 2026 | 16:11:41,014 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdatePlayRoomJob | | del robot room:165651 player:[268301,608562] fake_json:1
|
||||
04 二月 2026 | 16:13:15,217 | INFO | qtp391618063-87 | group.controller.GroupController | | jefe_test: 102555
|
||||
04 二月 2026 | 16:13:15,910 | INFO | qtp391618063-87 | taurus.web.WebFilter | | action: get_groups[{user}:102555] time:850ms
|
||||
04 二月 2026 | 16:13:18,098 | INFO | qtp391618063-86 | taurus.web.WebFilter | | action: enter_group[{user}:102555] time:472ms
|
||||
04 二月 2026 | 16:13:20,968 | INFO | qtp391618063-87 | group.controller.GroupController | | jefe_test: 102555
|
||||
04 二月 2026 | 16:13:21,528 | INFO | qtp391618063-87 | taurus.web.WebFilter | | action: get_groups[{user}:102555] time:693ms
|
||||
04 二月 2026 | 16:13:35,618 | INFO | qtp391618063-87 | group.controller.GroupController | | jefe_test: 112233
|
||||
04 二月 2026 | 16:13:36,431 | INFO | qtp391618063-87 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:976ms
|
||||
04 二月 2026 | 16:13:37,882 | INFO | qtp391618063-66 | taurus.web.WebFilter | | action: enter_group[{user}:112233] time:571ms
|
||||
04 二月 2026 | 16:13:40,953 | INFO | qtp391618063-86 | taurus.web.WebFilter | | action: del__room[{user}:112233] time:410ms
|
||||
04 二月 2026 | 16:13:49,204 | INFO | qtp391618063-85 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 16:13:50,755 | INFO | tstse | service.io.SocketEngine | | status : Connect
|
||||
04 二月 2026 | 16:13:50,985 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdatePlayRoomJob | | del robot room:280253 player:[635285,923379] fake_json:1
|
||||
04 二月 2026 | 16:13:52,767 | INFO | qtp391618063-85 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:3965ms
|
||||
04 二月 2026 | 16:14:03,848 | INFO | qtp391618063-66 | taurus.web.WebFilter | | action: enter_group[{user}:102555] time:750ms
|
||||
04 二月 2026 | 16:14:05,254 | INFO | qtp391618063-86 | group.controller.GroupController | | jefe_test: 102555
|
||||
04 二月 2026 | 16:14:05,728 | INFO | qtp391618063-86 | taurus.web.WebFilter | | action: get_groups[{user}:102555] time:653ms
|
||||
04 二月 2026 | 16:14:10,836 | INFO | qtp391618063-66 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 16:14:12,682 | INFO | tstse | service.io.SocketEngine | | status : Connect
|
||||
04 二月 2026 | 16:14:14,745 | INFO | qtp391618063-66 | taurus.web.WebFilter | | action: match_room[{user}:112233] time:4168ms
|
||||
04 二月 2026 | 16:15:16,010 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdatePlayRoomJob | | del robot room:860116 player:[751231,427087] fake_json:1
|
||||
04 二月 2026 | 16:15:40,120 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 16:15:40,165 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 16:16:01,506 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdatePlayRoomJob | | del robot room:383709 player:[977049,137207] fake_json:1
|
||||
04 二月 2026 | 16:16:04,352 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: join_room[{user}:112233] time:1942ms
|
||||
04 二月 2026 | 16:16:17,091 | INFO | qtp391618063-67 | taurus.web.WebFilter | | action: join_room[{user}:112233] time:1448ms
|
||||
04 二月 2026 | 16:16:21,085 | INFO | qtp391618063-62 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 16:16:22,832 | INFO | tstse | service.io.SocketEngine | | status : Connect
|
||||
04 二月 2026 | 16:16:24,790 | INFO | qtp391618063-62 | taurus.web.WebFilter | | action: match_room[{user}:112233] time:3957ms
|
||||
04 二月 2026 | 16:18:41,045 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdatePlayRoomJob | | del robot room:894419 player:[624684,232304] fake_json:1
|
||||
04 二月 2026 | 16:18:44,517 | INFO | qtp391618063-61 | group.controller.GroupController | | jefe_test: 525057
|
||||
04 二月 2026 | 16:18:44,978 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: get_groups[{user}:525057] time:669ms
|
||||
04 二月 2026 | 16:18:46,195 | INFO | qtp391618063-62 | taurus.web.WebFilter | | action: enter_group[{user}:525057] time:514ms
|
||||
04 二月 2026 | 16:18:47,452 | INFO | qtp391618063-61 | group.controller.GroupController | | jefe_test: 525057
|
||||
04 二月 2026 | 16:18:47,829 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: get_groups[{user}:525057] time:538ms
|
||||
04 二月 2026 | 16:19:02,221 | INFO | qtp391618063-63 | group.controller.GroupController | | jefe_test: 177475
|
||||
04 二月 2026 | 16:19:02,566 | INFO | qtp391618063-63 | taurus.web.WebFilter | | action: get_groups[{user}:177475] time:532ms
|
||||
04 二月 2026 | 16:19:03,858 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: enter_group[{user}:177475] time:518ms
|
||||
04 二月 2026 | 16:19:05,761 | INFO | qtp391618063-67 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 16:19:08,164 | INFO | tstse | service.io.SocketEngine | | status : Connect
|
||||
04 二月 2026 | 16:19:10,217 | INFO | qtp391618063-67 | taurus.web.WebFilter | | action: match_room[{user}:177475] time:4696ms
|
||||
04 二月 2026 | 16:19:40,542 | INFO | qtp391618063-61 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 16:19:41,933 | INFO | tstse | service.io.SocketEngine | | status : Connect
|
||||
04 二月 2026 | 16:19:44,154 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: match_room[{user}:177475] time:3868ms
|
||||
04 二月 2026 | 16:19:46,392 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdatePlayRoomJob | | del robot room:113345 player:[380267,870909] fake_json:1
|
||||
04 二月 2026 | 16:21:15,828 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdatePlayRoomJob | | del robot room:755135 player:[992179,657879] fake_json:1
|
||||
04 二月 2026 | 16:21:25,632 | ERROR | Thread-32 | service.io.ISocket | | Receiving failed.:
|
||||
com.group.service.io.TSocketException
|
||||
at com.group.service.io.SocketTcp.__read(SocketTcp.java:130)
|
||||
at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19)
|
||||
at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70)
|
||||
at java.lang.Thread.run(Thread.java:750)
|
||||
04 二月 2026 | 16:21:25,714 | INFO | tstse | service.io.SocketEngine | | status : DisconnectByServer
|
||||
04 二月 2026 | 16:22:11,302 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdatePlayRoomJob | | del robot room:669919 player:[733468,560202] fake_json:1
|
||||
04 二月 2026 | 16:23:35,957 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdatePlayRoomJob | | del robot room:109294 player:[977049,971057] fake_json:1
|
||||
04 二月 2026 | 16:24:15,714 | ERROR | Thread-36 | service.io.ISocket | | Receiving failed.:
|
||||
com.group.service.io.TSocketException
|
||||
at com.group.service.io.SocketTcp.__read(SocketTcp.java:130)
|
||||
at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19)
|
||||
at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70)
|
||||
at java.lang.Thread.run(Thread.java:750)
|
||||
04 二月 2026 | 16:24:15,786 | INFO | tstse | service.io.SocketEngine | | status : DisconnectByServer
|
||||
04 二月 2026 | 16:24:36,017 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdatePlayRoomJob | | del robot room:728457 player:[426015,950997] fake_json:1
|
||||
04 二月 2026 | 16:24:45,763 | ERROR | Thread-40 | service.io.ISocket | | Receiving failed.:
|
||||
com.group.service.io.TSocketException
|
||||
at com.group.service.io.SocketTcp.__read(SocketTcp.java:130)
|
||||
at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19)
|
||||
at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70)
|
||||
at java.lang.Thread.run(Thread.java:750)
|
||||
04 二月 2026 | 16:24:45,774 | INFO | tstse | service.io.SocketEngine | | status : DisconnectByServer
|
||||
04 二月 2026 | 16:26:15,848 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdatePlayRoomJob | | del robot room:751474 player:[176545,909321] fake_json:1
|
||||
04 二月 2026 | 16:26:45,840 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdatePlayRoomJob | | del robot room:580977 player:[772988,380267] fake_json:1
|
||||
04 二月 2026 | 16:28:11,130 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdatePlayRoomJob | | del robot room:742665 player:[624684,287696] fake_json:1
|
||||
04 二月 2026 | 16:28:20,853 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdatePlayRoomJob | | del robot room:965585 player:[807782,153276] fake_json:1
|
||||
04 二月 2026 | 16:30:26,512 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdatePlayRoomJob | | del robot room:417703 player:[446881,745978] fake_json:1
|
||||
04 二月 2026 | 16:35:18,858 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdatePlayRoomJob | | del robot room:885281 player:[751231,516400] fake_json:1
|
||||
04 二月 2026 | 16:35:18,928 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdatePlayRoomJob | | del robot room:885281 player:[751231,516400] fake_json:1
|
||||
04 二月 2026 | 16:35:25,913 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdatePlayRoomJob | | del robot room:787124 player:[268301,426015] fake_json:1
|
||||
04 二月 2026 | 16:37:16,447 | INFO | qtp391618063-130 | group.controller.GroupController | | jefe_test: 115777
|
||||
04 二月 2026 | 16:37:16,829 | INFO | qtp391618063-130 | taurus.web.WebFilter | | action: get_groups[{user}:115777] time:761ms
|
||||
04 二月 2026 | 16:37:17,400 | INFO | qtp391618063-131 | taurus.web.WebFilter | | action: enter_group[{user}:115777] time:460ms
|
||||
04 二月 2026 | 16:37:18,220 | INFO | qtp391618063-120 | taurus.web.WebFilter | | action: join_room[{user}:115777] time:1273ms
|
||||
04 二月 2026 | 16:38:16,070 | ERROR | DefaultQuartzScheduler_Worker-4 | group.job.UpdatePlayRoomJob | | del robot room:578016 player:[997151,768647] fake_json:1
|
||||
04 二月 2026 | 16:38:31,060 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdatePlayRoomJob | | del robot room:133397 player:[117543,893772] fake_json:1
|
||||
04 二月 2026 | 16:40:11,144 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdatePlayRoomJob | | del robot room:372933 player:[325465,193548] fake_json:1
|
||||
04 二月 2026 | 16:41:15,999 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdatePlayRoomJob | | del robot room:142252 player:[298423,990477] fake_json:1
|
||||
04 二月 2026 | 16:42:06,416 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdatePlayRoomJob | | del robot room:451170 player:[559763,265830] fake_json:1
|
||||
04 二月 2026 | 16:43:46,318 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdatePlayRoomJob | | del robot room:400324 player:[693996,362003] fake_json:1
|
||||
04 二月 2026 | 16:44:11,453 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdatePlayRoomJob | | del robot room:992582 player:[826627,296214] fake_json:1
|
||||
04 二月 2026 | 16:46:05,988 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdatePlayRoomJob | | del robot room:940744 player:[774088,378632] fake_json:1
|
||||
04 二月 2026 | 16:47:46,149 | ERROR | DefaultQuartzScheduler_Worker-8 | group.job.UpdatePlayRoomJob | | del robot room:740851 player:[265830,198184] fake_json:1
|
||||
04 二月 2026 | 17:47:21,143 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdatePlayRoomJob | | del robot room:330849 player:[461205,520191] fake_json:1
|
||||
04 二月 2026 | 17:47:21,726 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdatePlayRoomJob | | del robot room:785717 player:[609966,193548] fake_json:1
|
||||
04 二月 2026 | 17:47:30,880 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdatePlayRoomJob | | del robot room:785717 player:[609966,193548] fake_json:1
|
||||
04 二月 2026 | 17:47:31,682 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdatePlayRoomJob | | del robot room:330849 player:[461205,520191] fake_json:1
|
||||
04 二月 2026 | 17:48:51,277 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdatePlayRoomJob | | del robot room:840244 player:[161367,877472] fake_json:1
|
||||
04 二月 2026 | 17:49:15,965 | ERROR | DefaultQuartzScheduler_Worker-9 | group.job.UpdatePlayRoomJob | | del robot room:330433 player:[455295,771035] fake_json:1
|
||||
04 二月 2026 | 17:51:40,823 | ERROR | DefaultQuartzScheduler_Worker-6 | group.job.UpdatePlayRoomJob | | del robot room:786319 player:[805963,582578] fake_json:1
|
||||
04 二月 2026 | 17:52:40,881 | ERROR | DefaultQuartzScheduler_Worker-10 | group.job.UpdatePlayRoomJob | | del robot room:795690 player:[132277,733468] fake_json:1
|
||||
04 二月 2026 | 17:54:30,946 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdatePlayRoomJob | | del robot room:487446 player:[394446,772988] fake_json:1
|
||||
04 二月 2026 | 17:55:11,208 | ERROR | DefaultQuartzScheduler_Worker-1 | group.job.UpdatePlayRoomJob | | del robot room:569922 player:[755783,893772] fake_json:1
|
||||
04 二月 2026 | 17:57:10,931 | ERROR | DefaultQuartzScheduler_Worker-7 | group.job.UpdatePlayRoomJob | | del robot room:849837 player:[291453,987020] fake_json:1
|
||||
04 二月 2026 | 17:58:00,925 | ERROR | DefaultQuartzScheduler_Worker-5 | group.job.UpdatePlayRoomJob | | del robot room:846448 player:[461205,909321] fake_json:1
|
||||
04 二月 2026 | 17:58:18,146 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 17:58:18,189 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 17:59:35,879 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 17:59:35,923 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 18:18:06,038 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 18:18:06,077 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 18:18:33,917 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 18:18:33,957 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 18:19:52,101 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 18:19:52,140 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 18:19:57,203 | ERROR | DefaultQuartzScheduler_Worker-2 | group.job.UpdatePlayRoomJob | | del robot room:944036 player:[198184,991538] fake_json:1
|
||||
04 二月 2026 | 18:20:11,158 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 18:20:11,199 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 18:20:16,326 | ERROR | DefaultQuartzScheduler_Worker-3 | group.job.UpdatePlayRoomJob | | del robot room:754798 player:[285195,152827] fake_json:1
|
||||
04 二月 2026 | 18:21:29,490 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 18:21:29,536 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 18:21:37,000 | INFO | qtp391618063-65 | group.controller.GroupController | | jefe_test: 115777
|
||||
04 二月 2026 | 18:21:37,519 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: get_groups[{user}:115777] time:833ms
|
||||
04 二月 2026 | 18:21:38,727 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: enter_group[{user}:115777] time:425ms
|
||||
04 二月 2026 | 18:21:41,511 | INFO | qtp391618063-63 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 18:21:43,526 | INFO | qtp391618063-63 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:2377ms
|
||||
04 二月 2026 | 18:21:43,642 | INFO | tstse | service.io.SocketEngine | | status : Connect
|
||||
04 二月 2026 | 18:22:30,000 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 18:22:30,039 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 18:22:43,143 | INFO | qtp391618063-64 | group.controller.GroupController | | jefe_test: 115777
|
||||
04 二月 2026 | 18:22:43,526 | INFO | qtp391618063-64 | taurus.web.WebFilter | | action: get_groups[{user}:115777] time:540ms
|
||||
04 二月 2026 | 18:22:44,751 | INFO | qtp391618063-66 | taurus.web.WebFilter | | action: enter_group[{user}:115777] time:529ms
|
||||
04 二月 2026 | 18:22:51,739 | INFO | qtp391618063-62 | taurus.web.WebFilter | | action: join_room[{user}:115777] time:2976ms
|
||||
04 二月 2026 | 18:22:57,859 | INFO | qtp391618063-58 | taurus.web.WebFilter | | action: join_room[{user}:115777] time:392ms
|
||||
04 二月 2026 | 18:22:59,623 | INFO | qtp391618063-64 | taurus.web.WebFilter | | action: join_room[{user}:115777] time:508ms
|
||||
04 二月 2026 | 18:23:01,381 | INFO | qtp391618063-61 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 18:23:03,479 | INFO | qtp391618063-61 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:2611ms
|
||||
04 二月 2026 | 18:24:41,930 | INFO | qtp391618063-70 | taurus.web.WebFilter | | action: join_room[{user}:115777] time:510ms
|
||||
04 二月 2026 | 18:24:45,877 | INFO | qtp391618063-64 | taurus.web.WebFilter | | action: join_room[{user}:115777] time:2077ms
|
||||
04 二月 2026 | 18:25:28,109 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 18:25:28,154 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 18:25:32,107 | INFO | qtp391618063-62 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 18:25:33,953 | INFO | qtp391618063-62 | taurus.web.WebFilter | | action: match_room[{user}:115777] time:2354ms
|
||||
04 二月 2026 | 18:25:34,116 | INFO | tstse | service.io.SocketEngine | | status : Connect
|
||||
04 二月 2026 | 20:14:55,906 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 20:14:55,985 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 20:16:12,778 | INFO | qtp391618063-60 | group.controller.GroupController | | jefe_test: 112233
|
||||
04 二月 2026 | 20:16:13,139 | INFO | qtp391618063-60 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:494ms
|
||||
04 二月 2026 | 20:16:14,678 | INFO | qtp391618063-64 | taurus.web.WebFilter | | action: enter_group[{user}:112233] time:529ms
|
||||
04 二月 2026 | 20:16:28,771 | INFO | qtp391618063-66 | taurus.web.WebFilter | | action: join_room[{user}:112233] time:378ms
|
||||
04 二月 2026 | 20:16:32,422 | INFO | qtp391618063-67 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 20:16:33,969 | INFO | qtp391618063-67 | taurus.web.WebFilter | | action: match_room[{user}:112233] time:1830ms
|
||||
04 二月 2026 | 20:17:16,376 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 20:17:16,464 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 20:17:26,220 | INFO | qtp391618063-60 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 20:17:27,241 | INFO | qtp391618063-60 | taurus.web.WebFilter | | action: match_room[{user}:112233] time:1328ms
|
||||
04 二月 2026 | 20:19:18,588 | INFO | qtp391618063-65 | taurus.web.WebFilter | | action: join_room[{user}:112233] time:256ms
|
||||
04 二月 2026 | 20:19:21,209 | INFO | qtp391618063-66 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 20:19:22,123 | INFO | qtp391618063-66 | taurus.web.WebFilter | | action: match_room[{user}:112233] time:1320ms
|
||||
04 二月 2026 | 20:19:22,346 | INFO | tstse | service.io.SocketEngine | | status : Connect
|
||||
04 二月 2026 | 20:24:25,725 | ERROR | Thread-32 | service.io.ISocket | | Receiving failed.:
|
||||
com.group.service.io.TSocketException
|
||||
at com.group.service.io.SocketTcp.__read(SocketTcp.java:130)
|
||||
at com.group.service.io.SocketTcp.access$100(SocketTcp.java:19)
|
||||
at com.group.service.io.SocketTcp$2.run(SocketTcp.java:70)
|
||||
at java.lang.Thread.run(Thread.java:750)
|
||||
04 二月 2026 | 20:24:25,765 | INFO | tstse | service.io.SocketEngine | | status : DisconnectByServer
|
||||
04 二月 2026 | 20:29:07,054 | INFO | qtp391618063-66 | group.controller.GroupController | | jefe_test: 112233
|
||||
04 二月 2026 | 20:29:07,410 | INFO | qtp391618063-66 | taurus.web.WebFilter | | action: get_groups[{user}:112233] time:496ms
|
||||
04 二月 2026 | 20:29:16,413 | INFO | qtp391618063-89 | taurus.web.WebFilter | | action: enter_group[{user}:112233] time:362ms
|
||||
04 二月 2026 | 20:29:21,849 | INFO | qtp391618063-78 | group.controller.GroupRoomController | | matchRoom() ==> pid = 10
|
||||
04 二月 2026 | 20:29:23,099 | INFO | qtp391618063-78 | taurus.web.WebFilter | | action: match_room[{user}:112233] time:1436ms
|
||||
04 二月 2026 | 20:29:23,187 | INFO | tstse | service.io.SocketEngine | | status : Connect
|
||||
04 二月 2026 | 21:03:09,855 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 21:03:09,904 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 21:04:28,839 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 21:04:28,892 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 21:04:53,666 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 21:04:53,715 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 21:05:24,711 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 21:05:24,764 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 21:07:16,387 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 21:07:16,436 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 21:07:30,534 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 21:07:30,579 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 21:08:24,578 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 21:08:24,623 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 21:09:04,382 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 21:09:04,430 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 21:10:18,221 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 21:10:18,268 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 21:11:32,527 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 21:11:32,569 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 21:29:19,947 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 21:29:19,993 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 21:41:20,877 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 21:41:20,926 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
04 二月 2026 | 21:46:53,882 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
|
||||
04 二月 2026 | 21:46:53,927 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
<?xml version="1.0"?>
|
||||
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure.dtd">
|
||||
<Configure class="org.eclipse.jetty.webapp.WebAppContext">
|
||||
<Call name="setAttribute">
|
||||
<Arg>org.eclipse.jetty.server.webapp.WebInfIncludeJarPattern</Arg>
|
||||
<Arg>.*/.*jsp-api-[^/]\.jar$|./.*jsp-[^/]\.jar$|./.*taglibs[^/]*\.jar$
|
||||
</Arg>
|
||||
</Call>
|
||||
</Configure>
|
||||
|
|
@ -0,0 +1,146 @@
|
|||
package web_group;
|
||||
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import redis.clients.jedis.Jedis;
|
||||
|
||||
/**
|
||||
* clear redis data
|
||||
* @author yjl 2020-06-05
|
||||
* @version 1.0.0
|
||||
* */
|
||||
public class DataClearUtils {
|
||||
|
||||
private void clear_data() {
|
||||
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||
Map<String,String> map = new HashMap<>();
|
||||
map.put("force_ver", "1");
|
||||
map.put("ver", "1");
|
||||
Jedis jedis = new Jedis("127.0.0.1", 6380);
|
||||
jedis.auth("123456");
|
||||
//选择库
|
||||
jedis.select(5);
|
||||
Set<String> keys = jedis.keys("*");
|
||||
int i = 0;
|
||||
for(String str : keys) {
|
||||
long stime = Long.valueOf(str.substring(15,str.length()));
|
||||
if(stime < 1591286400) {
|
||||
jedis.del(str);
|
||||
i++;
|
||||
System.out.println(i);
|
||||
}
|
||||
|
||||
}
|
||||
System.out.println(i);
|
||||
|
||||
jedis.close();
|
||||
}
|
||||
|
||||
private void clear_data_thread() {
|
||||
// Thread th = new Thread(new clear_data_t(1592323200, 1592668800,1));
|
||||
// th.start();
|
||||
//
|
||||
// Thread th1 = new Thread(new clear_data_t(1591977600, 1592323200,2));
|
||||
// th1.start();
|
||||
//
|
||||
// Thread th2 = new Thread(new clear_data_t(1591718400, 1591977600,3));
|
||||
// th2.start();
|
||||
//
|
||||
Thread th3 = new Thread(new clear_data_test(1590940800, 1593964800,4));
|
||||
th3.start();
|
||||
|
||||
// Thread th4 = new Thread(new clear_data_t(1588262400, 1590336000,5));
|
||||
// th4.start();
|
||||
////
|
||||
// Thread th5 = new Thread(new clear_data_t(1588262400, 1589904000,6));
|
||||
// th5.start();
|
||||
}
|
||||
class clear_data_test implements Runnable{
|
||||
long start = 0;
|
||||
long end = 0;
|
||||
int num = 0;
|
||||
|
||||
public clear_data_test(long start,long end,int num) {
|
||||
this.start = start;
|
||||
this.end = end;
|
||||
this.num = num;
|
||||
}
|
||||
@Override
|
||||
public void run() {
|
||||
// TODO Auto-generated method stub
|
||||
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||
Map<String,String> map = new HashMap<>();
|
||||
map.put("force_ver", "1");
|
||||
map.put("ver", "1");
|
||||
Jedis jedis = new Jedis("127.0.0.1", 6379);
|
||||
jedis.auth("123456");
|
||||
//选择库
|
||||
jedis.select(0);
|
||||
Set<String> keys = jedis.keys("*");
|
||||
int i = 0;
|
||||
for(String str : keys) {
|
||||
long stime = Long.valueOf(str.substring(15,str.length()));
|
||||
if(stime < end && stime > start) {
|
||||
jedis.del(str);
|
||||
i++;
|
||||
System.out.println("#"+num +"Thread"+i);
|
||||
}
|
||||
|
||||
}
|
||||
System.out.println(i);
|
||||
|
||||
jedis.close();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//
|
||||
|
||||
public static void main(String[] args) {
|
||||
DataClearUtils initDataUtils = new DataClearUtils();
|
||||
initDataUtils.clear_data_thread();
|
||||
}
|
||||
|
||||
class clear_data_t implements Runnable{
|
||||
long start = 0;
|
||||
long end = 0;
|
||||
int num = 0;
|
||||
|
||||
public clear_data_t(long start,long end,int num) {
|
||||
this.start = start;
|
||||
this.end = end;
|
||||
this.num = num;
|
||||
}
|
||||
@Override
|
||||
public void run() {
|
||||
// TODO Auto-generated method stub
|
||||
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||
Map<String,String> map = new HashMap<>();
|
||||
map.put("force_ver", "1");
|
||||
map.put("ver", "1");
|
||||
Jedis jedis = new Jedis("127.0.0.1", 6380);
|
||||
jedis.auth("123456");
|
||||
//选择库
|
||||
jedis.select(5);
|
||||
Set<String> keys = jedis.keys("*");
|
||||
int i = 0;
|
||||
for(String str : keys) {
|
||||
long stime = Long.valueOf(str.substring(15,str.length()));
|
||||
if(stime < end && stime > start) {
|
||||
jedis.del(str);
|
||||
i++;
|
||||
System.out.println("#"+num +"Thread"+i);
|
||||
}
|
||||
|
||||
}
|
||||
System.out.println(i);
|
||||
|
||||
jedis.close();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
package web_group;
|
||||
|
||||
import com.taurus.web.JettyServer;
|
||||
|
||||
public class Main {
|
||||
public static void main(String[] args) {
|
||||
new JettyServer("src/main/webapp",24012,"/").start();
|
||||
}
|
||||
}
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue