# GameServer-core **Repository Path**: codefire/GameServer-core ## Basic Information - **Project Name**: GameServer-core - **Description**: No description available - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2016-08-05 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 服务器核心 需要继承CoreServer并重写对应的方法以使用相关功能 ## 提供功能 ### 集合 1 免拆箱、装箱整型HashMap 2 并发HashSet 3 免拆箱、装箱整型HashSet ### 数据库访问 数据库访问模块提供了一个简单的基于Java反射的ORM实现,并提供同步、异步数据访问接口,其中异步数据访问接口利用Callback参数实现回调。 使用数据访问模块流程如下: 1 定义数据实体类,并使用@Table、@PrimaryKey、@SecondKey、@TableField等注解标注表名、主键、索引、数据字段。其中只支持索引注解,如需使用更多基于索引的查询请自行实现。 2 定义Dao对象,继承BaseDao。 3 定义Service对象(可视情况忽略该步骤) 所有异步数据访问都需要提供Callback参数,若不需要回调可传入Callback.NOOP这个空回调,禁止传null值作为回调 ### 事件总线 一个基于Guava EventBus实现的事件总线,提供事件处理器注册、抛出事件等功能。 ### 执行器 基本线程模型。包含如下功能: 1 TCP请求处理器接口、TCP请求拦截器接口 2 一个基于Google Protobuf的TCP请求参数拦截器(已默认注册) 3 一个串行化任务执行的序列 4 TCP请求分发器,负责将TCP请求分发给指定的处理器并提交到指定线程进行处理 其中TCP请求拦截器模仿了Servlet过滤器。 ### 网络 #### HTTP HTTP模块提供了一个基于Netty的简易HTTP服务器实现。使用步骤如下: 1 继承CoreServer并重写HTTP相关的方法 2 以CoreServer为参数实例化HttpServer对象 指定路径下面使用了HttpRequestHandler注解标注的HTTP处理器会被自动扫描并注册。 #### TCP TCP模块提供了几个基于Netty的TCP服务器实现。使用步骤如下: 1 继承CoreServer并重写TCP相关方法 2 以CoreServer为参数实例化TcpServer对象 指定路径下面使用了TcpRequestHandler注解标注的TCP处理器会被自动扫描并注册,拦截器也一样。 TCP模块还提供了一个基于Netty的TCP客户端实现。 ### Util 常用工具类 ### 回调接口 回调接口分为同步回调接口和异步回调接口,这里的同步和异步相对逻辑执行线程而言,同步回调接口执行在逻辑执行线程,而异步回调接口执行在自定义线程。考虑如下场景:用户在自身线程中向线程B提交了了一个任务,其中传入了回调参数,且要求任务执行完毕后回调仍回到用户自身线程执行(逻辑需要),此时就需要使用异步回调接口。 ### 周期活动类型枚举 周期活动类型枚举提供了游戏中常用的活动类型计算公式,比如每日循环活动、每月循环活动。枚举提供如下功能: 1 计算距离下一次活动开启延时 2 判断活动当前是否开启 若需要更复杂的循环类型比如每天2点、每周一0点之类的计算则需要借助Quartz之类的支持Cron表达式的框架。 ### DataParser DataParser是个txt解析器,用于解析策划配置的游戏TXT格式数值文件为Java Bean。 ### Template 数值模版接口是个通用数值接口,实现该接口的数值模版具有运行期重加载的能力 ### Timer 一个基于ScheduledExecutorService的定时器实现,支持每日循环、每周循环、一次性、自定义循环等定时任务