package accesstoken import ( "context" "gitlink.org.cn/cloudream/common/consts/errorcode" stgglb "gitlink.org.cn/cloudream/jcs-pub/common/globals" "gitlink.org.cn/cloudream/jcs-pub/common/pkgs/accesstoken" corrpc "gitlink.org.cn/cloudream/jcs-pub/common/pkgs/rpc/coordinator" cortypes "gitlink.org.cn/cloudream/jcs-pub/coordinator/types" ) type ExitEvent = accesstoken.ExitEvent type CacheKey = accesstoken.CacheKey type Cache struct { localHubID cortypes.HubID *accesstoken.Cache } func New(localHubID cortypes.HubID) *Cache { c := &Cache{ localHubID: localHubID, } c.Cache = accesstoken.New(c.load) return c } func (c *Cache) load(key accesstoken.CacheKey) (cortypes.UserAccessToken, error) { corCli := stgglb.CoordinatorRPCPool.Get() defer corCli.Release() tokenResp, cerr := corCli.HubLoadAccessToken(context.Background(), &corrpc.HubLoadAccessToken{ UserID: key.UserID, TokenID: key.TokenID, HubID: c.localHubID, }) if cerr != nil { if cerr.Code == errorcode.DataNotFound { return cortypes.UserAccessToken{}, accesstoken.ErrTokenNotFound } return cortypes.UserAccessToken{}, cerr.ToError() } return tokenResp.Token, nil }