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); } }
/// <inheritdoc /> public Task <IChatApiResponse <IJoinGroupResponse?> > JoinGroupAsync(IJoinGroupRequest joinGroup, IResponseSettings?responseSettings = null) => _connect.PostAsync <JoinGroupResponse, IJoinGroupResponse>(Resources.JoinGroup, joinGroup.Serialize(), responseSettings);
/// <inheritdoc /> public IChatApiResponse <IJoinGroupResponse?> JoinGroup(IJoinGroupRequest joinGroup, IResponseSettings?responseSettings = null) => _connect.Post <JoinGroupResponse>(Resources.JoinGroup, joinGroup.Serialize(), responseSettings);