📄 personalgroupmanager.cs
字号:
using (IEnumerator<PersonalGroup> enumerator = base.Owner.PersonalGroups.GetEnumerator())
{
while (enumerator.MoveNext())
{
PersonalGroup group2 = enumerator.get_Current();
list.Add(group2);
}
}
}
}
List<PersonalGroup>.Enumerator enumerator2 = list.GetEnumerator();
try
{
while (enumerator2.MoveNext())
{
PersonalGroup group3 = enumerator2.get_Current();
writer.WriteStartElement("group");
writer.WriteAttributeString("uri", group3.Uri.Raw);
if (!string.IsNullOrEmpty(group3.AttributeVersion))
{
writer.WriteAttributeString("attributes-version", group3.AttributeVersion);
}
writer.WriteEndElement();
}
}
finally
{
enumerator2.Dispose();
}
writer.WriteEndElement();
});
req.Message.Body = tw.ToString();
tw.Dispose();
req.FinalResponseReceived += new EventHandler<SipResponseReceivedEventArgs>(this, (IntPtr) this.finalResponseReceived_AsyncGetGroupsInfo);
ErrorHelper.HandleSendRequestErrorAndTimeout(req);
base.Owner.SendSipMessage(req);
}
public bool AsyncGetGroupList(AsyncBizOperation op)
{
base.Owner.PersonalGroups.GroupLoadStatus = PersonalGroupLoadStatus.Loading;
SipRequest req = base.Owner.CreateSipRequest("S");
req.Message.AddHeader(new SipcEventHeader("PGGetGroupList"));
req.Context = op;
StringWriter tw = new StringWriter();
XmlHelper.CreateXmlWriterForSipRequest(tw, null, delegate (XmlWriter writer, object context) {
writer.WriteStartElement("group-list");
if (!string.IsNullOrEmpty(base.Owner.PersonalGroups.Version))
{
writer.WriteAttributeString("version", base.Owner.PersonalGroups.Version);
}
writer.WriteAttributeString("attributes", "name;identity");
writer.WriteEndElement();
});
req.Message.Body = tw.ToString();
tw.Dispose();
req.FinalResponseReceived += new EventHandler<SipResponseReceivedEventArgs>(this, (IntPtr) this.finalResponseReceived_AsyncGetGroupList);
req.SendMessageFailed += new EventHandler<FailedEventArgs>(this, (IntPtr) this.<AsyncGetGroupList>b__b);
req.WaitResponseTimeout += delegate {
base.Owner.PersonalGroups.GroupLoadStatus = PersonalGroupLoadStatus.Failed;
this.DoAfterGetGroupList();
};
ErrorHelper.HandleSendRequestErrorAndTimeout(req);
base.Owner.SendSipMessage(req);
return true;
}
public void AsyncGetGroupMemberList(PersonalGroup group, AsyncBizOperation op)
{
<>c__DisplayClass24 class2;
SipRequest req = base.Owner.CreateSipRequest("S");
req.Message.AddHeader(new SipcEventHeader("PGGetGroupMembers"));
op.ContextForBiz = group;
req.Context = op;
StringWriter tw = new StringWriter();
XmlHelper.CreateXmlWriterForSipRequest(tw, group, delegate (XmlWriter writer, object context) {
PersonalGroup group1 = context as PersonalGroup;
writer.WriteStartElement("groups");
writer.WriteAttributeString("attributes", "member-uri;member-nickname;member-iicnickname;member-identity");
writer.WriteStartElement("group");
writer.WriteAttributeString("uri", group1.Uri.Raw);
if (!string.IsNullOrEmpty(group1.Members.MainVersion))
{
writer.WriteAttributeString("members-major-version", group1.Members.MainVersion);
}
if (!string.IsNullOrEmpty(group1.Members.SecondVersion))
{
writer.WriteAttributeString("members-minor-version", group1.Members.SecondVersion);
}
writer.WriteEndElement();
writer.WriteEndElement();
});
req.Message.Body = tw.ToString();
tw.Dispose();
req.FinalResponseReceived += new EventHandler<SipResponseReceivedEventArgs>(this, (IntPtr) this.finalResponseReceived_AsyncGetGroupMemberList);
ErrorHelper.HandleSendRequestErrorAndTimeout(req);
req.SendMessageFailed += new EventHandler<FailedEventArgs>(class2, (IntPtr) this.<AsyncGetGroupMemberList>b__21);
req.WaitResponseTimeout += delegate {
group.MemberLoadStatus = PersonalGroupLoadStatus.Failed;
group.OnMemberLoadStatusChanged(new GroupLoadStatusChangedEventArgs(PersonalGroupLoadStatus.Failed, false));
this.DoAfterGetGroupMemberList(group);
};
base.Owner.SendSipMessage(req);
}
public void AsyncGetGroupResponsibility(AsyncBizOperation op)
{
if (!string.IsNullOrEmpty(base.Owner.Configuration.SystemSetting.SysClientSetting.NN_ResponsibilityDeclUrl))
{
ThreadPool.QueueUserWorkItem(new WaitCallback(this.GetGroupResponsibilityInThread), op);
}
}
public void AsyncGetPersonalInfo(PersonalGroup group, AsyncBizOperation op)
{
SipRequest req = base.Owner.CreateSipRequest("S");
req.Message.AddHeader(new SipcEventHeader("PGGetPersonalInfo"));
op.ContextForBiz = group;
req.Context = op;
StringWriter tw = new StringWriter();
XmlHelper.CreateXmlWriterForSipRequest(tw, group, delegate (XmlWriter writer, object context) {
writer.WriteStartElement("personal-properties");
writer.WriteAttributeString("attributes", "all");
writer.WriteStartElement("personal-property");
writer.WriteAttributeString("group-uri", (context as PersonalGroup).Uri.Raw);
writer.WriteEndElement();
writer.WriteEndElement();
});
req.Message.Body = tw.ToString();
tw.Dispose();
req.FinalResponseReceived += new EventHandler<SipResponseReceivedEventArgs>(this, (IntPtr) this.finalResponseReceived_AsyncGetPersonalProperty);
ErrorHelper.HandleSendRequestErrorAndTimeout(req);
base.Owner.SendSipMessage(req);
}
public void AsyncHandleGroupInvite(string groupUri, bool result, AsyncBizOperation op)
{
SipRequest req = base.Owner.CreateSipRequest("S");
req.Message.AddHeader(new SipcEventHeader("PGHandleInviteJoinGroup"));
op.ContextForBiz = groupUri;
req.Context = op;
StringWriter tw = new StringWriter();
XmlHelper.CreateXmlWriterForSipRequest(tw, groupUri, delegate (XmlWriter writer, object context) {
writer.WriteStartElement("handle");
writer.WriteAttributeString("group-uri", groupUri);
writer.WriteAttributeString("invitee-nickname", this.Owner.Nickname);
writer.WriteAttributeString("action", result ? "1" : "2");
writer.WriteEndElement();
});
req.Message.Body = tw.ToString();
tw.Dispose();
req.FinalResponseReceived += new EventHandler<SipResponseReceivedEventArgs>(this, (IntPtr) this.finalResponseReceived_AsyncHandleGroupInvite);
req.WaitResponseTimeout += new EventHandler(this.req_WaitResponseTimeout);
ErrorHelper.HandleSendRequestErrorAndTimeout(req);
base.Owner.SendSipMessage(req);
}
public void AsyncHandleGroupJoin(PersonalGroupMember member, string approveAdvice, string note, AsyncBizOperation op)
{
SipRequest req = base.Owner.CreateSipRequest("S");
req.Message.AddHeader(new SipcEventHeader("PGHandleApplication"));
op.ContextForBiz = member;
req.Context = op;
StringWriter tw = new StringWriter();
XmlHelper.CreateXmlWriterForSipRequest(tw, null, delegate (XmlWriter writer, object context) {
writer.WriteStartElement("authorizes");
writer.WriteStartElement("authorize");
writer.WriteAttributeString("group-uri", member.OwnerGroup.Uri.Raw);
writer.WriteAttributeString("apply-user-uri", member.Uri.Raw);
writer.WriteAttributeString("approve-advice", approveAdvice);
writer.WriteAttributeString("note", note);
writer.WriteEndElement();
});
req.Message.Body = tw.ToString();
tw.Dispose();
req.FinalResponseReceived += new EventHandler<SipResponseReceivedEventArgs>(this, (IntPtr) this.finalResponseReceived_AsyncHandleGroupJoin);
ErrorHelper.HandleSendRequestErrorAndTimeout(req);
base.Owner.SendSipMessage(req);
}
public void AsyncInviteFriends(List<Imps.Client.Core.Contact> inviteList, PersonalGroup group, AsyncBizOperation op)
{
if ((((inviteList != null) && (inviteList.get_Count() > 0)) && (group != null)) && (op != null))
{
SipRequest req = base.Owner.CreateSipRequest("S");
req.Message.AddHeader(new SipcEventHeader("PGInviteJoinGroup"));
op.ContextForBiz = group;
req.Context = op;
StringWriter tw = new StringWriter();
XmlHelper.CreateXmlWriterForSipRequest(tw, inviteList, delegate (XmlWriter writer, object context) {
List<Imps.Client.Core.Contact> list = context as List<Imps.Client.Core.Contact>;
writer.WriteStartElement("group");
writer.WriteAttributeString("uri", group.Uri.Raw);
writer.WriteAttributeString("inviter-nickname", this.Owner.Nickname);
List<Imps.Client.Core.Contact>.Enumerator enumerator = list.GetEnumerator();
try
{
while (enumerator.MoveNext())
{
Imps.Client.Core.Contact contact = enumerator.get_Current();
writer.WriteStartElement("user");
writer.WriteAttributeString("uri", contact.Uri.Raw);
writer.WriteAttributeString("nickname", contact.DisplayName);
writer.WriteEndElement();
}
}
finally
{
enumerator.Dispose();
}
writer.WriteEndElement();
});
req.Message.Body = tw.ToString();
tw.Dispose();
req.FinalResponseReceived += new EventHandler<SipResponseReceivedEventArgs>(this, (IntPtr) this.finalResponseReceived_AsyncInviteFriends);
req.WaitResponseTimeout += new EventHandler(this.req_WaitResponseTimeout);
ErrorHelper.HandleSendRequestErrorAndTimeout(req);
base.Owner.SendSipMessage(req);
IMessage msg = new InstantMessage();
msg.Type = Imps.Client.Core.MessageType.InviteJoinGroup;
msg.Sender = new Player(base.Owner.Uri.Raw, base.Owner.Nickname, PlayerType.User);
msg.Extend = group.Uri.Id;
msg.Time = Imps.Client.Core.User.ServerTime;
msg.ID = Guid.NewGuid().ToString();
StringBuilder builder = new StringBuilder();
builder.Append("邀请");
List<Imps.Client.Core.Contact>.Enumerator enumerator = inviteList.GetEnumerator();
try
{
while (enumerator.MoveNext())
{
Imps.Client.Core.Contact contact = enumerator.get_Current();
msg.Receivers.Add(new Player(contact.Uri.Raw, contact.DisplayName, PlayerType.Contact));
builder.Append(contact.DisplayName);
builder.Append(",");
}
}
finally
{
enumerator.Dispose();
}
char ch = builder[builder.Length - 1];
if (ch.Equals(','))
{
builder.Remove(builder.Length - 1, 1);
}
builder.Append("加入群!");
msg.Body = builder.ToString();
base.Owner.HistoryManager.SaveMessage(msg);
}
}
public bool AsyncSearchGroup(int groupId, AsyncBizOperation op)
{
SipRequest req = base.Owner.CreateSipRequest("S");
req.Message.AddHeader(new SipcEventHeader("PGSearchGroup"));
op.ContextForBiz = groupId;
req.Context = op;
StringWriter tw = new StringWriter();
XmlHelper.CreateXmlWriterForSipRequest(tw, groupId, delegate (XmlWriter writer, object context) {
int num = (int) context;
writer.WriteStartElement("group");
writer.WriteAttributeString("sid", num.ToString());
writer.WriteEndElement();
writer.WriteStartElement("result-fields");
writer.WriteAttributeString("attributes", "all");
writer.WriteEndElement();
});
req.Message.Body = tw.ToString();
tw.Dispose();
req.FinalResponseReceived += new EventHandler<SipResponseReceivedEventArgs>(this, (IntPtr) this.finalResponseReceived_AsyncSearchPersonalGroup);
ErrorHelper.HandleSendRequestErrorAndTimeout(req);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -