aboutsummaryrefslogtreecommitdiff
path: root/weed/command/volume.go
diff options
context:
space:
mode:
authorChris Lu <chris.lu@gmail.com>2021-03-05 02:29:38 -0800
committerChris Lu <chris.lu@gmail.com>2021-03-05 02:29:38 -0800
commit400de380f48c44c7700fdf7e8f247bf856662c10 (patch)
tree2675abb8d23a4b185b9c6279f66971f5605f1d84 /weed/command/volume.go
parent2e89c8c9aee141e0ca471644639c970ebaf1dcaa (diff)
downloadseaweedfs-400de380f48c44c7700fdf7e8f247bf856662c10.tar.xz
seaweedfs-400de380f48c44c7700fdf7e8f247bf856662c10.zip
volume server: support tcp direct put/get/delete
Diffstat (limited to 'weed/command/volume.go')
-rw-r--r--weed/command/volume.go22
1 files changed, 22 insertions, 0 deletions
diff --git a/weed/command/volume.go b/weed/command/volume.go
index 659c93d96..cf162a732 100644
--- a/weed/command/volume.go
+++ b/weed/command/volume.go
@@ -251,6 +251,9 @@ func (v VolumeServerOptions) startVolumeServer(volumeFolders, maxVolumeCounts, v
}
}
+ // starting tcp server
+ go v.startTcpService(volumeServer)
+
// starting the cluster http server
clusterHttpServer := v.startClusterHttpService(volumeMux)
@@ -368,3 +371,22 @@ func (v VolumeServerOptions) startClusterHttpService(handler http.Handler) httpd
}()
return clusterHttpServer
}
+
+func (v VolumeServerOptions) startTcpService(volumeServer *weed_server.VolumeServer) {
+ listeningAddress := *v.bindIp + ":" + strconv.Itoa(*v.port+20000)
+ glog.V(0).Infoln("Start Seaweed volume server", util.Version(), "tcp at", listeningAddress)
+ listener, e := util.NewListener(listeningAddress, 0)
+ if e != nil {
+ glog.Fatalf("Volume server listener error on %s:%v", listeningAddress, e)
+ }
+ defer listener.Close()
+
+ for {
+ c, err := listener.Accept()
+ if err != nil {
+ fmt.Println(err)
+ return
+ }
+ go volumeServer.HandleTcpConnection(c)
+ }
+}