代码初始化

This commit is contained in:
2026-05-07 15:54:43 +08:00
parent a078ca46e5
commit 3522f1011f
274 changed files with 15704 additions and 0 deletions
+84
View File
@@ -0,0 +1,84 @@
# ProtoBufModule
本模块承载 **RPC 与业务消息的二进制契约**:所有 TCP 链路上传输的业务体都通过此处定义的 `protobuf` 生成 Java 类(包名 `com.huangzj.cmd.gen`)。
## 职责
- 维护 `src/main/protobuf` 下的 `.proto` 源文件。
- Maven `protobuf-maven-plugin``generate-sources` 阶段生成 Java 源码到 `target/generated-sources/protobuf/java`
- **其它模块**BaseModule、ServerModule、CrossModule)仅依赖本模块打出的 jar,不重复拷贝 `.proto`
## 目录结构(源文件)
```text
src/main/protobuf/
└── serverProto/
├── cmd_rpc.proto # CmdRpcEnvelope、各 CTS/STC、Method 枚举
└── pb_service.proto # PbServiceService_1 ~ Service_4
```
> 历史上独立的 `CrossProto` 已移除;跨服与区服共用 **`demo.cmd`** 包下的消息,通过 **service/method + CommandSource** 在 Java 侧区分语义。
## 网络层核心消息:`CmdRpcEnvelope`
```protobuf
message CmdRpcEnvelope {
uint32 service_id = 1;
uint32 method_id = 2;
bytes payload = 3; // 具体 CTS 的序列化字节
int32 cross_ret = 4; // 预留/透传
uint32 link_seq = 5; // 区服↔跨服长连接多路复用序号(客户端 TCP 可为 0)
}
```
### `link_seq` 的作用(与网络实现配合)
```mermaid
sequenceDiagram
participant Z as 区服 CrossTcpClient
participant X as 跨服 TCP
Note over Z,X: 单条 TCP 上可能同时存在多帧在途
Z->>X: 请求 A (link_seq=101)
Z->>X: 请求 B (link_seq=102)
X-->>Z: 响应 B (link_seq=102)
X-->>Z: 响应 A (link_seq=101)
```
- 区服在 **`CrossTcpClient`** 内为每次 `roundTrip` / 注册 / 心跳分配 **非 0**`link_seq`
- 跨服命令通过 **`AbstractTypedPbCommand`** 回包时 **原样带回** 请求信封中的 `link_seq`,以便客户端把响应与 `CompletableFuture` 对应。
## 服务与方法枚举
| PbService | 用途 |
|-----------|------|
| Service_1 | 路径 1 示例(Echo |
| Service_2 | 跨服业务 Method2`CrossForward*` |
| Service_3 | 路径 3 区服对客户端暴露的中转接口 |
| Service_4 | **链路控制**Register、Heartbeat(仅区服→跨服长连接上使用) |
`Service4_Method``Register``Heartbeat`,载荷分别为 `CrossLinkRegisterCts/Stc``CrossLinkHeartbeatCts/Stc`
## 业务消息(与路径对应)
- **路径 1**`CmdEchoCts` / `CmdEchoStc`
- **路径 2(客户端侧)**`CrossProxyCts` / `CrossProxyStc`(区服内会转为 `CrossForward*` 再发往跨服)。
- **路径 3**:客户端 payload 使用 **`CrossForwardCts`** 形态(与跨服 Service_2/Method2 一致),信封为 Service_3/Method3。
- **跨服 Service_2/Method2**`CrossForwardCts` / `CrossForwardStc`
## 生成代码
```bash
cd ProtoBufModule
mvn -q generate-sources
# 或使用 genpb.batWindows,会探测 Maven
```
生成物加入 `ProtoBufModule` jar,依赖方编译时自动可见。
## 扩展约定
新增 RPC 时建议:
1.`pb_service.proto` 增加 `PbService` 枚举值(若新服务号)。
2.`cmd_rpc.proto` 增加 `ServiceX_Method` 与 CTS/STC `message`
3. 执行 `generate-sources` 后,在 **BaseModule** 侧通过 `@Cmd` + `AbstractTypedPbCommand``GameCommand` 实现逻辑,并由 **`ProtoRegistryAutoConfigurer`** 自动注册 `ProtoInfo`(强类型命令)。