📄 personalgroupmanager.cs
字号:
base.Owner.SendSipMessage(req);
return true;
}
public bool AsyncSearchGroup(string category, string keyword, int page, AsyncBizOperation op)
{
SipRequest req = base.Owner.CreateSipRequest("S");
req.Message.AddHeader(new SipcEventHeader("PGSearchGroup"));
req.Context = op;
StringWriter tw = new StringWriter();
XmlHelper.CreateXmlWriterForSipRequest(tw, null, delegate (XmlWriter writer, object context) {
writer.WriteStartElement("condition");
if (category != string.Empty)
{
writer.WriteAttributeString("category", category);
}
if (page > 0)
{
writer.WriteAttributeString("page-no", page.ToString());
}
if (keyword != string.Empty)
{
writer.WriteAttributeString("keywords", keyword);
}
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);
base.Owner.SendSipMessage(req);
return true;
}
private void AsyncSendKeepAlive(object sender, EventArgs e)
{
lock (base.Owner.PersonalGroups.SyncRoot)
{
using (IEnumerator<PersonalGroup> enumerator = base.Owner.PersonalGroups.GetEnumerator())
{
while (enumerator.MoveNext())
{
PersonalGroup group = enumerator.get_Current();
if ((group.GroupConversation != null) && (group.GroupConversation.Dialogs.Count != 0))
{
group.GroupConversation.Dialogs[0].AsyncKeepAlive();
}
}
}
}
}
public void AsyncSetAllGroupPresence(AsyncBizOperation op)
{
this.AsyncSetPresence(null, op);
}
public void AsyncSetMemberPermission(PersonalGroupMember member, AsyncBizOperation op)
{
SipRequest req = base.Owner.CreateSipRequest("S");
req.Message.AddHeader(new SipcEventHeader("PGSetMemberPermission"));
op.ContextForBiz = member;
req.Context = op;
StringWriter tw = new StringWriter();
XmlHelper.CreateXmlWriterForSipRequest(tw, member, delegate (XmlWriter writer, object context) {
PersonalGroupMember member = context as PersonalGroupMember;
writer.WriteStartElement("group");
writer.WriteAttributeString("uri", member.OwnerGroup.Uri.Raw);
writer.WriteStartElement("member");
writer.WriteAttributeString("uri", member.Uri.Raw);
writer.WriteAttributeString("permission", ((int) member.GroupMemeberInfo.GroupUserIdentity.Value).ToString());
writer.WriteEndElement();
});
req.Message.Body = tw.ToString();
tw.Dispose();
req.FinalResponseReceived += new EventHandler<SipResponseReceivedEventArgs>(this, (IntPtr) this.finalResponseReceived_AsyncSetMemberPermission);
ErrorHelper.HandleSendRequestErrorAndTimeout(req);
base.Owner.SendSipMessage(req);
}
public void AsyncSetPresence(PersonalGroup group, AsyncBizOperation op)
{
this.AsyncSetPresence(group, op, null);
}
private void AsyncSetPresence(PersonalGroup group, AsyncBizOperation op, string presence)
{
op.ContextForBiz = group;
SipRequest req = base.Owner.CreateSipRequest("S");
req.Message.AddHeader(new SipcEventHeader("PGSetPresence"));
req.Context = op;
StringWriter tw = new StringWriter();
XmlHelper.CreateXmlWriterForSipRequest(tw, group, delegate (XmlWriter writer, object context) {
PersonalGroup group1 = group;
writer.WriteStartElement("groups");
if (presence == null)
{
presence = "400";
if (this.Owner.Presence.MainPresence == MainPresence.Invisible)
{
presence = "0";
}
}
if (group1 != null)
{
writer.WriteStartElement("group");
writer.WriteAttributeString("uri", group1.Uri.Raw);
writer.WriteStartElement("presence");
writer.WriteStartElement("basic");
writer.WriteAttributeString("value", presence);
writer.WriteAttributeString("client-type", "PC");
writer.WriteEndElement();
writer.WriteEndElement();
writer.WriteEndElement();
}
else
{
lock (this.Owner.PersonalGroups.SyncRoot)
{
using (IEnumerator<PersonalGroup> enumerator = this.Owner.PersonalGroups.GetEnumerator())
{
while (enumerator.MoveNext())
{
PersonalGroup group2 = enumerator.get_Current();
writer.WriteStartElement("group");
writer.WriteAttributeString("uri", group2.Uri.Raw);
writer.WriteStartElement("presence");
writer.WriteStartElement("basic");
writer.WriteAttributeString("value", presence);
writer.WriteAttributeString("client-type", "PC");
writer.WriteEndElement();
writer.WriteEndElement();
writer.WriteEndElement();
}
}
}
}
writer.WriteEndElement();
});
req.Message.Body = tw.ToString();
tw.Dispose();
req.FinalResponseReceived += new EventHandler<SipResponseReceivedEventArgs>(this, (IntPtr) this.finalResponseReceived_AsyncSetPresence);
ErrorHelper.HandleSendRequestErrorAndTimeout(req);
base.Owner.SendSipMessage(req);
}
internal void AsyncStartAllGroupConversation()
{
lock (base.Owner.PersonalGroups.SyncRoot)
{
using (IEnumerator<PersonalGroup> enumerator = base.Owner.PersonalGroups.GetEnumerator())
{
while (enumerator.MoveNext())
{
PersonalGroup group = enumerator.get_Current();
this.AsyncStartGroupConversation(group);
}
}
}
}
public void AsyncStartGroupConversation(PersonalGroup group)
{
if (!group.UserInfo.IsRejctOrWaitingApprove && ((group.GroupConversation == null) || (group.GroupConversation.CurrentDialog == null)))
{
Imps.Client.Core.Conversation conv = new Imps.Client.Core.Conversation(base.Owner);
Dialog item = new PersonalGroupDialog(conv, group);
conv.Dialogs.Add(item);
item.ContentType = MessageContentType.HtmlFragment;
item.AsyncSendInvite();
group.GroupConversation = conv;
}
}
public void AsyncSubscribeAllGroup(AsyncBizOperation op, bool subPresense)
{
this.AsyncSubscribeGroup(null, op, subPresense);
}
public void AsyncSubscribeGroup(PersonalGroup group, AsyncBizOperation op, bool subPresense)
{
SipRequest req = base.Owner.CreateSipRequest("SUB", this._subscribeCallId, this._subscribeCesq++);
req.Message.AddHeader(new SipcEventHeader("PGPresence"));
op.ContextForBiz = group;
req.Context = op;
StringWriter tw = new StringWriter();
XmlHelper.CreateXmlWriterForSipRequest(tw, group, delegate (XmlWriter writer, object context) {
PersonalGroup group = context as PersonalGroup;
List<PersonalGroup> list = new List<PersonalGroup>();
if (group != null)
{
list.Add(group);
}
else
{
lock (this.Owner.PersonalGroups.SyncRoot)
{
using (IEnumerator<PersonalGroup> enumerator = this.Owner.PersonalGroups.GetEnumerator())
{
while (enumerator.MoveNext())
{
PersonalGroup group2 = enumerator.get_Current();
list.Add(group2);
}
}
}
}
writer.WriteStartElement("subscription");
writer.WriteStartElement("groups");
List<PersonalGroup>.Enumerator enumerator2 = list.GetEnumerator();
try
{
while (enumerator2.MoveNext())
{
PersonalGroup group3 = enumerator2.get_Current();
writer.WriteStartElement("group");
writer.WriteAttributeString("uri", group3.Uri.Raw);
writer.WriteEndElement();
}
}
finally
{
enumerator2.Dispose();
}
writer.WriteEndElement();
writer.WriteStartElement("presence");
writer.WriteStartElement("basic");
writer.WriteAttributeString("attributes", "all");
writer.WriteEndElement();
writer.WriteStartElement("member");
if (subPresense)
{
writer.WriteAttributeString("attributes", "all");
}
else
{
writer.WriteAttributeString("attributes", "identity");
}
writer.WriteEndElement();
writer.WriteStartElement("management");
writer.WriteAttributeString("attributes", "all");
writer.WriteEndElement();
writer.WriteEndElement();
writer.WriteEndElement();
});
req.Message.Body = tw.ToString();
tw.Dispose();
req.FinalResponseReceived += new EventHandler<SipResponseReceivedEventArgs>(this, (IntPtr) this.finalResponseReceived_AsyncSubscribeGroup);
ErrorHelper.HandleSendRequestErrorAndTimeout(req);
base.Owner.SendSipMessage(req);
}
public bool AsyncUndoApply(PersonalGroup group, AsyncBizOperation op)
{
SipRequest req = base.Owner.CreateSipRequest("S");
req.Message.AddHeader(new SipcEventHeader("PGCancelApplication"));
op.ContextForBiz = group;
req.Context = op;
StringWriter tw = new StringWriter();
XmlHelper.CreateXmlWriterForSipRequest(tw, group, delegate (XmlWriter writer, object context) {
string raw = (context as PersonalGroup).Uri.Raw;
writer.WriteStartElement("applications");
writer.WriteStartElement("application");
writer.WriteAttributeString("group-uri", raw);
writer.WriteEndElement();
writer.WriteEndElement();
});
req.Message.Body = tw.ToString();
tw.Dispose();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -