internal void JoinGroup(GroupDevice group, GroupMemberRole role)
        {
            //配置请求包
            ServerRequestPackage reqtPkg       = new ServerRequestPackage(true);
            IJoinGroupRequest    reqtInterface = reqtPkg.Active_JoinGroupRequest();

            if (group.Ready && !string.IsNullOrEmpty(group.Token))
            {
                reqtInterface.JoinGroup(group.Token, role);
            }
            else
            {
                throw new ArgumentNullException("Group token is null");
            }
            BinTransferLayer   binprocessor = _mclLayerProcessor.BinTransferProcessor;
            ServerReplyPackage replyPkg     = null;

            try
            {
                replyPkg = binprocessor.SynSendMessage(reqtPkg, 100000);
            }
            catch (System.Exception ex)
            {
                throw new JoinGroupExcetion(ex.ToString());
            }
            IJoinGroupReply replyInterface = replyPkg.Active_JoinGroupReply();
            bool            ret;
            string          detail;

            replyInterface.JoinGroupRet(out ret, out detail);
            if (true == ret)
            {
                //该部分逻辑内聚到Group内部

                ////加入成功
                //group.Joined = true;
                //try
                //{
                //    //从接口的使用习惯上考虑,立即返回成员列表
                //    group.Referesh();
                //}
                //catch (RefereshGroupInfo ex)
                //{
                //    //虽然刷新讯息抛出错误,但仍可以判定客户端已加入
                //    throw ex;
                //}
            }
            else
            {
                throw new JoinGroupExcetion(detail);
            }
        }
Beispiel #2
0
 /// <inheritdoc />
 public Task <IChatApiResponse <IJoinGroupResponse?> > JoinGroupAsync(IJoinGroupRequest joinGroup, IResponseSettings?responseSettings = null) =>
 _connect.PostAsync <JoinGroupResponse, IJoinGroupResponse>(Resources.JoinGroup, joinGroup.Serialize(), responseSettings);
Beispiel #3
0
 /// <inheritdoc />
 public IChatApiResponse <IJoinGroupResponse?> JoinGroup(IJoinGroupRequest joinGroup, IResponseSettings?responseSettings = null) =>
 _connect.Post <JoinGroupResponse>(Resources.JoinGroup, joinGroup.Serialize(), responseSettings);