seaweedfs/weed/wdclient/volume_udp_client.go
2021-03-13 10:59:29 -08:00

38 lines
821 B
Go

package wdclient
import (
"github.com/chrislusf/seaweedfs/weed/glog"
"github.com/chrislusf/seaweedfs/weed/pb"
"pack.ag/tftp"
"io"
)
// VolumeTcpClient put/get/delete file chunks directly on volume servers without replication
type VolumeUdpClient struct {
}
func NewVolumeUdpClient() *VolumeUdpClient {
return &VolumeUdpClient{
}
}
func (c *VolumeUdpClient) PutFileChunk(volumeServerAddress string, fileId string, fileSize uint32, fileReader io.Reader) (err error) {
udpAddress, parseErr := pb.ParseServerAddress(volumeServerAddress, 20001)
if parseErr != nil {
return parseErr
}
udpClient, _ := tftp.NewClient()
fileUrl := "tftp://"+udpAddress+"/"+fileId
err = udpClient.Put(fileUrl, fileReader, int64(fileSize))
if err != nil {
glog.Errorf("udp put %s: %v", fileUrl, err)
return
}
return
}