aboutsummaryrefslogtreecommitdiff
path: root/weed/command/filer.go
diff options
context:
space:
mode:
authorChris Lu <chris.lu@gmail.com>2018-05-08 01:59:43 -0700
committerChris Lu <chris.lu@gmail.com>2018-05-08 01:59:43 -0700
commit43a69d20bf724cea371da88a02bfe0b2fa02a773 (patch)
treee0229e8ac9f35cbda0de5f5043d512522b2d23c9 /weed/command/filer.go
parent4936d6c342e16edd9ee37d2b2ec2c890287670d4 (diff)
downloadseaweedfs-43a69d20bf724cea371da88a02bfe0b2fa02a773.tar.xz
seaweedfs-43a69d20bf724cea371da88a02bfe0b2fa02a773.zip
change filer API to gRPC
Diffstat (limited to 'weed/command/filer.go')
-rw-r--r--weed/command/filer.go23
1 files changed, 21 insertions, 2 deletions
diff --git a/weed/command/filer.go b/weed/command/filer.go
index b188dabae..316fb115b 100644
--- a/weed/command/filer.go
+++ b/weed/command/filer.go
@@ -9,6 +9,10 @@ import (
"github.com/chrislusf/seaweedfs/weed/glog"
"github.com/chrislusf/seaweedfs/weed/server"
"github.com/chrislusf/seaweedfs/weed/util"
+ "github.com/soheilhy/cmux"
+ "google.golang.org/grpc/reflection"
+ "github.com/chrislusf/seaweedfs/weed/filer"
+ "google.golang.org/grpc"
)
var (
@@ -99,7 +103,7 @@ func (fo *FilerOptions) start() {
publicVolumeMux = http.NewServeMux()
}
- _, nfs_err := weed_server.NewFilerServer(defaultMux, publicVolumeMux,
+ fs, nfs_err := weed_server.NewFilerServer(defaultMux, publicVolumeMux,
*fo.ip, *fo.port, *fo.master, *fo.dir, *fo.collection,
*fo.defaultReplicaPlacement, *fo.redirectOnRead, *fo.disableDirListing,
*fo.confFile,
@@ -134,7 +138,22 @@ func (fo *FilerOptions) start() {
if e != nil {
glog.Fatalf("Filer listener error: %v", e)
}
- if e := http.Serve(filerListener, defaultMux); e != nil {
+
+ m := cmux.New(filerListener)
+ grpcL := m.Match(cmux.HTTP2HeaderField("content-type", "application/grpc"))
+ httpL := m.Match(cmux.Any())
+
+ // Create your protocol servers.
+ grpcS := grpc.NewServer()
+ filer.RegisterSeaweedFilerServer(grpcS, fs)
+ reflection.Register(grpcS)
+
+ httpS := &http.Server{Handler: defaultMux}
+
+ go grpcS.Serve(grpcL)
+ go httpS.Serve(httpL)
+
+ if err := m.Serve(); err != nil {
glog.Fatalf("Filer Fail to serve: %v", e)
}