From f491d467371782e529f94880fb90466bd1d1356d Mon Sep 17 00:00:00 2001 From: "sweep-ai[bot]" <128439645+sweep-ai[bot]@users.noreply.github.com> Date: Sat, 14 Oct 2023 08:09:20 +0000 Subject: [PATCH] feat: Replace GRPC with Dubbo-go in conversation.g --- internal/rpc/conversation/conversation.go | 59 +++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 internal/rpc/conversation/conversation.go diff --git a/internal/rpc/conversation/conversation.go b/internal/rpc/conversation/conversation.go new file mode 100644 index 000000000..ecefe9c2a --- /dev/null +++ b/internal/rpc/conversation/conversation.go @@ -0,0 +1,59 @@ +package conversation + +import ( + "github.com/apache/dubbo-go" + pbconv "github.com/OpenIMSDK/protocol/conversation" + "github.com/openimsdk/open-im-server/v3/pkg/rpcclient" + "github.com/openimsdk/open-im-server/v3/internal/cache" + "github.com/openimsdk/open-im-server/v3/internal/controller" +) + +type conversationServer struct { + userRpcClient *rpcclient.UserRpcClient + RegisterCenter discoveryregistry.SvcDiscoveryRegistry + conversationDatabase controller.ConversationDatabase +} + +func Start(client discoveryregistry.SvcDiscoveryRegistry) error { + rdb, err := cache.NewRedis() + if err != nil { + return err + } + userRpcClient := rpcclient.NewUserRpcClient(client) + dubbo.RegisterProviderService(&conversationServer{ + userRpcClient: &userRpcClient, + RegisterCenter: client, + conversationDatabase: controller.NewConversationDatabase( + rdb, + &userRpcClient, + ), + }) + return nil +} + +func (s *conversationServer) SendMessage(ctx context.Context, req *pbconv.SendMessageReq) (*pbconv.SendMessageResp, error) { + // Use the userRpcClient and conversationDatabase to send a message + message, err := s.conversationDatabase.SendMessage(req.ConversationId, req.Message) + if err != nil { + return nil, err + } + return &pbconv.SendMessageResp{Message: message}, nil +} + +func (s *conversationServer) GetConversation(ctx context.Context, req *pbconv.GetConversationReq) (*pbconv.GetConversationResp, error) { + // Use the conversationDatabase to get a conversation + conversation, err := s.conversationDatabase.GetConversation(req.ConversationId) + if err != nil { + return nil, err + } + return &pbconv.GetConversationResp{Conversation: conversation}, nil +} + +func (s *conversationServer) DeleteConversation(ctx context.Context, req *pbconv.DeleteConversationReq) (*pbconv.DeleteConversationResp, error) { + // Use the conversationDatabase to delete a conversation + err := s.conversationDatabase.DeleteConversation(req.ConversationId) + if err != nil { + return nil, err + } + return &pbconv.DeleteConversationResp{}, nil +}