package server import ( "fmt" internalrequest "github.com/noahlann/nnet/internal/request" protocolpkg "github.com/noahlann/nnet/pkg/protocol" requestpkg "github.com/noahlann/nnet/pkg/request" ) // parseProtocolHeader 解析协议帧头(用于路由匹配) // 简化实现:直接使用Protocol.Decode,因为消息已由unpacker拆包为完整消息 func parseProtocolHeader(req requestpkg.Request, rawData []byte, protocol protocolpkg.Protocol) error { // 转换为内部实现类型 reqImpl := internalrequest.AsRequestSetter(req) if reqImpl == nil { return fmt.Errorf("invalid request type: request does not support setter methods") } if protocol == nil { return nil } // 标准协议解码(提取帧头和数据) // 注意:rawData已经是完整消息,由unpacker拆包后提供 protocolHeader, bodyBytes, err := protocol.Decode(rawData) if err != nil { return fmt.Errorf("failed to decode protocol: %w", err) } // 转换协议帧头为请求帧头 // 默认直接赋值引用,避免拷贝开销 // 如果需要拷贝,可以使用Clone方法 var requestHeader requestpkg.FrameHeader if protocolHeader != nil { // 直接赋值引用(默认行为,避免拷贝) requestHeader = protocolHeader } // 设置到Request(用于路由匹配) reqImpl.SetHeader(requestHeader) reqImpl.SetDataBytes(bodyBytes) return nil }