Files
hmq/broker/rpc.go
joy.zhou 913bff4ed5 update
2019-07-31 12:10:26 +08:00

69 lines
1.6 KiB
Go

package broker
import (
"context"
"net"
"time"
"github.com/eclipse/paho.mqtt.golang/packets"
pb "github.com/fhmq/hmq/grpc"
"go.uber.org/zap"
"google.golang.org/grpc"
"google.golang.org/grpc/keepalive"
"google.golang.org/grpc/reflection"
)
var (
rpcClient = make(map[string]pb.HMQServiceClient)
)
func initRPCService() {
lis, err := net.Listen("tcp", ":10011")
if err != nil {
log.Error("failed to listen: ", zap.Error(err))
return
}
s := grpc.NewServer(grpc.KeepaliveParams(keepalive.ServerParameters{
Time: 30 * time.Minute,
}))
pb.RegisterHMQServiceServer(s, &HMQ{})
reflection.Register(s)
if err := s.Serve(lis); err != nil {
log.Error("failed to serve: ", zap.Error(err))
}
}
func initRPCClient(url string) {
conn, err := grpc.Dial(url,
grpc.WithInsecure(),
grpc.WithKeepaliveParams(keepalive.ClientParameters{ // avoid 'code = Unavailable desc = transport is closing' error
Time: 30 * time.Minute,
}))
if err != nil {
log.Error("create connect rpc service failed", zap.String("url", url), zap.Error(err))
}
cli := pb.NewHMQServiceClient(conn)
rpcClient[url] = cli
}
type HMQ struct {
}
func (h *HMQ) QuerySubscribe(ctx context.Context, in *pb.QuerySubscribeRequest) (*pb.Response, error) {
return nil, nil
}
func (h *HMQ) QueryConnect(ctx context.Context, in *pb.QueryConnectRequest) (*pb.Response, error) {
return nil, nil
}
func (h *HMQ) DeliverMessage(ctx context.Context, in *pb.DeliverMessageRequest) (*pb.Response, error) {
return nil, nil
}
func (b *Broker) DeliverMessage(packet *packets.PublishPacket) {
//TODO Query and Deliver Message
}