Skip to content

Commit

Permalink
Use generics for Serialize (#80)
Browse files Browse the repository at this point in the history
  • Loading branch information
ohkinozomu authored Nov 21, 2023
1 parent 42c91a0 commit e5fb616
Show file tree
Hide file tree
Showing 5 changed files with 12 additions and 297 deletions.
8 changes: 4 additions & 4 deletions internal/agent/agent.go
Original file line number Diff line number Diff line change
Expand Up @@ -423,7 +423,7 @@ func Start(c AgentConfig) {
Headers: &protoHeaders,
}

b, err = data.SerializeHTTPResponseData(&responseData, s.commonConfig.Networking.Format)
b, err = data.Serialize(&responseData, s.commonConfig.Networking.Format)
if err != nil {
return nil, err
}
Expand All @@ -433,7 +433,7 @@ func Start(c AgentConfig) {
Compress: s.commonConfig.Networking.Compress,
}

responsePayload, err := data.SerializeResponsePacket(&responsePacket, s.commonConfig.Networking.Format)
responsePayload, err := data.Serialize(&responsePacket, s.commonConfig.Networking.Format)
if err != nil {
return nil, err
}
Expand Down Expand Up @@ -491,7 +491,7 @@ func Start(c AgentConfig) {
}
}
}
b, err := data.SerializeHTTPResponseData(&responseData, s.commonConfig.Networking.Format)
b, err := data.Serialize(&responseData, s.commonConfig.Networking.Format)
if err != nil {
s.logger.Error("Error serializing response data", zap.Error(err))
return
Expand All @@ -504,7 +504,7 @@ func Start(c AgentConfig) {

responseTopic := topics.ResponseTopic(s.id, processChPayload.requestPacket.RequestId)

responsePayload, err := data.SerializeResponsePacket(&responsePacket, s.commonConfig.Networking.Format)
responsePayload, err := data.Serialize(&responsePacket, s.commonConfig.Networking.Format)
if err != nil {
s.logger.Error("Error serializing response packet", zap.Error(err))
return
Expand Down
2 changes: 1 addition & 1 deletion internal/common/split/split.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ func Split(id string, bytes []byte, chunkSize int, format string, processFn func
Sequence: int32(sequence + 1),
Data: chunk,
}
b, err := data.SerializeHTTPBodyChunk(&httpBodyChunk, format)
b, err := data.Serialize(&httpBodyChunk, format)
if err != nil {
return err
}
Expand Down
8 changes: 4 additions & 4 deletions internal/hub/server.go
Original file line number Diff line number Diff line change
Expand Up @@ -346,7 +346,7 @@ func (s *server) handleRequest(w http.ResponseWriter, r *http.Request) {
Body: &body,
}

b, err = data.SerializeHTTPRequestData(&requestData, s.commonConfig.Networking.Format)
b, err = data.Serialize(&requestData, s.commonConfig.Networking.Format)
if err != nil {
return nil, err
}
Expand All @@ -356,7 +356,7 @@ func (s *server) handleRequest(w http.ResponseWriter, r *http.Request) {
HttpRequestData: b,
Compress: s.commonConfig.Networking.Compress,
}
requestPayload, err := data.SerializeRequestPacket(&requestPacket, s.commonConfig.Networking.Format)
requestPayload, err := data.Serialize(&requestPacket, s.commonConfig.Networking.Format)
if err != nil {
return nil, err
}
Expand Down Expand Up @@ -400,7 +400,7 @@ func (s *server) handleRequest(w http.ResponseWriter, r *http.Request) {
Body: &body,
}

b, err := data.SerializeHTTPRequestData(&requestData, s.commonConfig.Networking.Format)
b, err := data.Serialize(&requestData, s.commonConfig.Networking.Format)
if err != nil {
s.logger.Error("Error serializing request data", zap.Error(err))
return
Expand All @@ -412,7 +412,7 @@ func (s *server) handleRequest(w http.ResponseWriter, r *http.Request) {
Compress: s.commonConfig.Networking.Compress,
}

requestPayload, err := data.SerializeRequestPacket(&requestPacket, s.commonConfig.Networking.Format)
requestPayload, err := data.Serialize(&requestPacket, s.commonConfig.Networking.Format)
if err != nil {
s.logger.Error("Error serializing request packet", zap.Error(err))
return
Expand Down
82 changes: 3 additions & 79 deletions pkg/data/serde.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,14 +21,14 @@ func HTTPHeaderToProtoHeaders(httpHeader http.Header) HTTPHeaders {
}
}

func SerializeRequestPacket(packet *HTTPRequestPacket, format string) ([]byte, error) {
func Serialize[T proto.Message](value T, format string) ([]byte, error) {
var err error
var payload []byte
switch format {
case "json":
payload, err = json.Marshal(packet)
payload, err = json.Marshal(value)
case "protobuf":
payload, err = proto.Marshal(packet)
payload, err = proto.Marshal(value)
default:
return nil, fmt.Errorf("unknown format: %s", format)
}
Expand All @@ -53,24 +53,6 @@ func DeserializeRequestPacket(payload []byte, format string) (*HTTPRequestPacket
return &requestPacket, err
}

func SerializeResponsePacket(responsePacket *HTTPResponsePacket, format string) ([]byte, error) {
var err error
var responsePayload []byte
switch format {
case "json":
responsePayload, err = json.Marshal(responsePacket)
case "protobuf":
responsePayload, err = proto.Marshal(responsePacket)
default:
return nil, fmt.Errorf("unknown format: %s", format)
}
if err != nil {
return nil, err
}

return responsePayload, err
}

func DeserializeResponsePacket(payload []byte, format string) (*HTTPResponsePacket, error) {
var err error
responsePacket := HTTPResponsePacket{}
Expand All @@ -85,26 +67,6 @@ func DeserializeResponsePacket(payload []byte, format string) (*HTTPResponsePack
return &responsePacket, err
}

func SerializeHTTPRequestData(httpRequestData *HTTPRequestData, format string) ([]byte, error) {
var b []byte
var err error
switch format {
case "json":
b, err = json.Marshal(httpRequestData)
if err != nil {
return nil, err
}
case "protobuf":
b, err = proto.Marshal(httpRequestData)
if err != nil {
return nil, err
}
default:
return nil, fmt.Errorf("unknown format: %s", format)
}
return b, nil
}

func DeserializeHTTPRequestData(b []byte, format string, bucket objstore.Bucket) (*HTTPRequestData, error) {
var httpRequestData HTTPRequestData
switch format {
Expand Down Expand Up @@ -141,26 +103,6 @@ func DeserializeHTTPRequestData(b []byte, format string, bucket objstore.Bucket)
return &httpRequestData, nil
}

func SerializeHTTPResponseData(httpResponseData *HTTPResponseData, format string) ([]byte, error) {
var b []byte
var err error
switch format {
case "json":
b, err = json.Marshal(httpResponseData)
if err != nil {
return nil, err
}
case "protobuf":
b, err = proto.Marshal(httpResponseData)
if err != nil {
return nil, err
}
default:
return nil, fmt.Errorf("unknown format: %s", format)
}
return b, nil
}

func DeserializeHTTPResponseData(b []byte, format string, bucket objstore.Bucket) (*HTTPResponseData, error) {
var httpResponseData HTTPResponseData
switch format {
Expand Down Expand Up @@ -197,24 +139,6 @@ func DeserializeHTTPResponseData(b []byte, format string, bucket objstore.Bucket
return &httpResponseData, nil
}

func SerializeHTTPBodyChunk(httpBodyChunk *HTTPBodyChunk, format string) ([]byte, error) {
var err error
var b []byte
switch format {
case "json":
b, err = json.Marshal(httpBodyChunk)
case "protobuf":
b, err = proto.Marshal(httpBodyChunk)
default:
return nil, fmt.Errorf("unknown format: %s", format)
}
if err != nil {
return nil, err
}

return b, err
}

func DeserializeHTTPBodyChunk(payload []byte, format string) (*HTTPBodyChunk, error) {
var err error
httpBodyChunk := HTTPBodyChunk{}
Expand Down
Loading

0 comments on commit e5fb616

Please sign in to comment.