server.go 1.8 KB
Newer Older
1 2 3 4 5 6 7 8
package grpc

import (
	"context"
	"fmt"
	"net"
	"strconv"

9 10 11 12 13
	"github.com/zilliztech/milvus-distributed/internal/conf"
	"github.com/zilliztech/milvus-distributed/internal/master/controller"
	masterpb "github.com/zilliztech/milvus-distributed/internal/proto/master"
	messagepb "github.com/zilliztech/milvus-distributed/internal/proto/message"
	"github.com/zilliztech/milvus-distributed/internal/master/kv"
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
	"google.golang.org/grpc"
)

func Server(ch chan *messagepb.Mapping, errch chan error, kvbase kv.Base) {
	defaultGRPCPort := ":"
	defaultGRPCPort += strconv.FormatInt(int64(conf.Config.Master.Port), 10)
	lis, err := net.Listen("tcp", defaultGRPCPort)
	if err != nil {
		//		log.Fatal("failed to listen: %v", err)
		errch <- err
		return
	}
	s := grpc.NewServer()
	masterpb.RegisterMasterServer(s, GRPCMasterServer{CreateRequest: ch, kvbase: kvbase})
	if err := s.Serve(lis); err != nil {
		//		log.Fatalf("failed to serve: %v", err)
		errch <- err
		return
	}
}

type GRPCMasterServer struct {
	CreateRequest chan *messagepb.Mapping
	kvbase        kv.Base
}

func (ms GRPCMasterServer) CreateCollection(ctx context.Context, in *messagepb.Mapping) (*messagepb.Status, error) {
	//	ms.CreateRequest <- in2
	fmt.Println("Handle a new create collection request")
	err := controller.WriteCollection2Datastore(in, ms.kvbase)
	if err != nil {
		return &messagepb.Status{
			ErrorCode: 100,
			Reason:    "",
		}, err
	}
	return &messagepb.Status{
		ErrorCode: 0,
		Reason:    "",
	}, nil
}

func (ms GRPCMasterServer) CreateIndex(ctx context.Context, in *messagepb.IndexParam) (*messagepb.Status, error) {
	fmt.Println("Handle a new create index request")
	err := controller.UpdateCollectionIndex(in, ms.kvbase)
	if err != nil {
		return &messagepb.Status{
			ErrorCode: 100,
			Reason:    "",
		}, err
	}
	return &messagepb.Status{
		ErrorCode: 0,
		Reason:    "",
	}, nil
}