mirror of
https://github.com/DeBrosOfficial/network.git
synced 2025-10-06 08:19:07 +00:00
49 lines
1.1 KiB
Go
49 lines
1.1 KiB
Go
package storage
|
|
|
|
import (
|
|
"io"
|
|
|
|
"github.com/libp2p/go-libp2p/core/network"
|
|
"go.uber.org/zap"
|
|
)
|
|
|
|
// HandleStorageStream handles incoming storage protocol streams
|
|
func (s *Service) HandleStorageStream(stream network.Stream) {
|
|
defer stream.Close()
|
|
|
|
// Read request
|
|
data, err := io.ReadAll(stream)
|
|
if err != nil {
|
|
s.logger.Error("Failed to read storage request", zap.Error(err))
|
|
return
|
|
}
|
|
|
|
var request StorageRequest
|
|
if err := request.Unmarshal(data); err != nil {
|
|
s.logger.Error("Failed to unmarshal storage request", zap.Error(err))
|
|
return
|
|
}
|
|
|
|
// Process request
|
|
response := s.processRequest(&request)
|
|
|
|
// Send response
|
|
responseData, err := response.Marshal()
|
|
if err != nil {
|
|
s.logger.Error("Failed to marshal storage response", zap.Error(err))
|
|
return
|
|
}
|
|
|
|
if _, err := stream.Write(responseData); err != nil {
|
|
s.logger.Error("Failed to write storage response", zap.Error(err))
|
|
return
|
|
}
|
|
|
|
s.logger.Debug("Handled storage request",
|
|
zap.String("type", string(request.Type)),
|
|
zap.String("key", request.Key),
|
|
zap.String("namespace", request.Namespace),
|
|
zap.Bool("success", response.Success),
|
|
)
|
|
}
|