Initial commit
This commit is contained in:
@@ -0,0 +1,166 @@
|
||||
# Core 模块代码重构进度报告 - v2.2.0
|
||||
|
||||
## ✅ 已完成的文件创建/重构(2026-03-24)
|
||||
|
||||
### Phase 1: connect/stun.go ✅
|
||||
|
||||
**职责**:STUN 协议实现,被多处调用
|
||||
|
||||
**创建的文件**:
|
||||
- ✅ `connect/stun.go` (120 行)
|
||||
|
||||
**提供的 API**:
|
||||
```go
|
||||
type STUNClient struct { ... }
|
||||
|
||||
func NewSTUNClient(servers []string, logger *zap.Logger) *STUNClient
|
||||
func (c *STUNClient) DiscoverAddress(server string) (*net.UDPAddr, error)
|
||||
func (c *STUNClient) CollectCandidates() []string
|
||||
func (c *STUNClient) GetExternalIP() (string, error)
|
||||
```
|
||||
|
||||
**调用关系**:
|
||||
- ✅ `direct.go` 调用 → 收集候选地址用于 UDP 直连
|
||||
- ⏳ `ice.go` 将调用 → 收集 ICE 候选(待更新)
|
||||
|
||||
---
|
||||
|
||||
### Phase 2: connect/direct.go ✅
|
||||
|
||||
**职责**:Layer 1 - Direct-UDP 建连工厂
|
||||
|
||||
**创建的文件**:
|
||||
- ✅ `connect/direct.go` (86 行)
|
||||
|
||||
**提供的 API**:
|
||||
```go
|
||||
type DirectFactory struct { ... }
|
||||
|
||||
func NewDirectFactory(stunServers []string, logger *zap.Logger) *DirectFactory
|
||||
func (f *DirectFactory) Layer() Layer
|
||||
func (f *DirectFactory) Name() string
|
||||
func (f *DirectFactory) Dial(ctx context.Context, config *DialConfig) (net.Conn, error)
|
||||
```
|
||||
|
||||
**调用关系**:
|
||||
- ✅ 调用 `stun.go` → 收集 STUN 候选地址
|
||||
- ✅ 被 `strategy.go` 调用 → Layer 1 优先尝试直连
|
||||
|
||||
**实现细节**:
|
||||
1. 创建 STUN 客户端收集候选地址
|
||||
2. 简化实现:直接连接到第一个候选地址
|
||||
3. TODO: 完整的 ICE 候选交换和连通性检查
|
||||
|
||||
---
|
||||
|
||||
### Phase 3: proto/core.proto ✅
|
||||
|
||||
**职责**:gRPC 服务接口定义
|
||||
|
||||
**创建的文件**:
|
||||
- ✅ `proto/core.proto` (97 行)
|
||||
|
||||
**服务定义**:
|
||||
```protobuf
|
||||
service CoreService {
|
||||
rpc CreateCore(CreateCoreRequest) returns (CreateCoreResponse);
|
||||
rpc Start(StartRequest) returns (StartResponse);
|
||||
rpc Stop(StopRequest) returns (StopResponse);
|
||||
rpc Bind(BindRequest) returns (BindResponse);
|
||||
rpc GetStatus(GetStatusRequest) returns (GetStatusResponse);
|
||||
rpc UpdateConfig(UpdateConfigRequest) returns (UpdateConfigResponse);
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Phase 4: proto/core_grpc.go ✅
|
||||
|
||||
**职责**:gRPC 服务实现
|
||||
|
||||
**移动的文件**:
|
||||
- ✅ `core_service_server.go` → `proto/core_grpc.go`
|
||||
|
||||
**提供的 API**:
|
||||
```go
|
||||
type CoreServiceServer struct { ... }
|
||||
|
||||
func NewCoreServiceServer(core *Core, logger *zap.Logger) *CoreServiceServer
|
||||
func (s *CoreServiceServer) CreateCore(...) (*proto.CreateCoreResponse, error)
|
||||
func (s *CoreServiceServer) Start(...) (*proto.StartResponse, error)
|
||||
func (s *CoreServiceServer) Stop(...) (*proto.StopResponse, error)
|
||||
func (s *CoreServiceServer) Bind(...) (*proto.BindResponse, error)
|
||||
func (s *CoreServiceServer) GetStatus(...) (*proto.GetStatusResponse, error)
|
||||
func (s *CoreServiceServer) UpdateConfig(...) (*proto.UpdateConfigResponse, error)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📊 当前状态统计
|
||||
|
||||
### 已完成 ✅
|
||||
| 文件 | 行数 | 状态 | 说明 |
|
||||
|------|------|------|------|
|
||||
| `connect/stun.go` | 120 | ✅ 完成 | STUN 协议实现 |
|
||||
| `connect/direct.go` | 86 | ✅ 完成 | Direct-UDP 工厂 |
|
||||
| `proto/core.proto` | 97 | ✅ 完成 | gRPC 接口定义 |
|
||||
| `proto/core_grpc.go` | 163 | ✅ 完成 | gRPC 服务实现 |
|
||||
|
||||
### 待完善 ⏳
|
||||
| 文件 | 当前状态 | 需要完成 |
|
||||
|------|---------|----------|
|
||||
| `connect/turn.go` | 62 行(框架) | 添加完整 TURN 协议实现 |
|
||||
| `connect/ws.go` | 现有 | 添加完整 WS 协议实现 |
|
||||
| `connect/ice.go` | 现有 | 更新为调用新的 stun.go |
|
||||
| `core.go` | 现有 | 修复旧 API 引用 |
|
||||
|
||||
---
|
||||
|
||||
## 🎯 下一步行动
|
||||
|
||||
### P0 - 立即执行
|
||||
|
||||
1. **更新 ice.go** ⏳
|
||||
```go
|
||||
// 改为调用新的 stun.go
|
||||
stun := connect.NewSTUNClient(servers, logger)
|
||||
candidates := stun.CollectCandidates()
|
||||
```
|
||||
|
||||
2. **生成 proto 代码** ⏳
|
||||
```bash
|
||||
protoc --go_out=. --go-grpc_out=. core/proto/core.proto
|
||||
```
|
||||
|
||||
3. **修复 core.go** ⏳
|
||||
- 更新对 `client/` 的引用
|
||||
- 使用新的 `connect/stun.go`
|
||||
|
||||
---
|
||||
|
||||
### P1 - 后续完善
|
||||
|
||||
4. **完善 turn.go** ⏳
|
||||
```go
|
||||
func DialTURN(server, username, password, network string) (net.Conn, error) {
|
||||
// 1. Allocate
|
||||
// 2. CreatePermission
|
||||
// 3. ChannelBind
|
||||
// 4. 返回 net.Conn
|
||||
}
|
||||
```
|
||||
|
||||
5. **完善 ws.go** ⏳
|
||||
```go
|
||||
func DialWS(server, path string, useTLS bool, engineID, peerKey string) (net.Conn, error) {
|
||||
// 1. Handshake
|
||||
// 2. Identify
|
||||
// 3. 返回 net.Conn
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
*更新时间:2026-03-24 02:30*
|
||||
*版本:v2.2.0*
|
||||
*状态:⏳ Phase 1-4 完成,继续重构中*
|
||||
Reference in New Issue
Block a user