|
- package rpc
-
- import (
- "gitlink.org.cn/cloudream/common/pkgs/logger"
- "gitlink.org.cn/cloudream/jcs-pub/client/internal/publock/types"
- clirpc "gitlink.org.cn/cloudream/jcs-pub/common/pkgs/rpc/client"
- )
-
- func (s *Service) PubLockChannel(ch clirpc.PubLockMessageChan) {
- log := logger.WithField("Mod", "RPC")
-
- for {
- msg, cerr := ch.Receive()
- if cerr != nil {
- log.Warnf("receive publock message: %v", cerr.ToError())
- break
- }
-
- switch msg := msg.(type) {
- case *types.AcquireMsg:
- go func() {
- lkd, err := s.pubLock.Acquire(msg.Request, msg.Option)
- if err != nil {
- cerr := ch.Send(&types.AcquireResultMsg{
- ContextID: msg.ContextID,
- Success: false,
- Error: err.Error(),
- })
- if cerr != nil {
- log.Warnf("send acquire result message: %v", cerr.ToError())
- }
- return
- }
-
- cerr := ch.Send(&types.AcquireResultMsg{
- ContextID: msg.ContextID,
- Success: true,
- RequestID: lkd.ReqID,
- })
- if cerr != nil {
- log.Warnf("send acquire result message: %v", cerr.ToError())
- }
- }()
- case *types.ReleaseMsg:
- s.pubLock.Release(msg.RequestID)
- cerr := ch.Send(&types.ReleaseResultMsg{
- ContextID: msg.ContextID,
- })
- if cerr != nil {
- log.Warnf("send release result message: %v", cerr.ToError())
- }
- }
- }
- }
|