📄 messagemanager.cs
字号:
using System;
using System.IO;
using System.Xml;
using System.Threading;
using gowk.core.packets;
using gowk.net.Sockets;
using gowk.net;
namespace gowk.core.managers
{
/// <summary>
/// MessageManager 的摘要说明。
/// </summary>
public class MessageManager:ManagerBase
{
public event JabberEventHandler
ChatMessageReceived,
ChatMessageError,
GroupChatMessageReceived,
HeadLineMessageReceived,
VideoChatReceived;
public MessageManager():base()
{
}
public MessageManager(JabberClient jc):base(jc)
{
}
protected internal override bool OnMessage(Packet pack)
{
if(!(pack is Message))return false;
Message msg=(Message)pack;
switch(pack.Type)
{
case PacketType.groupchat:
if(this.GroupChatMessageReceived!=null)
this.Invoke(this.GroupChatMessageReceived,new object[]{new JabberEventArgs(pack)});
break;
case PacketType.chat:
if(this.ChatMessageReceived!=null)
{
if(msg.VideoChat!=null)
{
this.Invoke(this.VideoChatReceived,new object[]{new JabberEventArgs(pack)});
}
else
{
this.Invoke(this.ChatMessageReceived,new object[]{new JabberEventArgs(pack)});
}
}
break;
case PacketType.error:
if(this.ChatMessageError!=null)
this.Invoke(this.ChatMessageError,new object[]{new JabberEventArgs(pack)});
break;
case PacketType.headline:
if(this.HeadLineMessageReceived!=null)
this.Invoke(this.HeadLineMessageReceived,new object[]{new JabberEventArgs(pack)});
break;
case PacketType.normal:
goto case PacketType.chat;
default:
gowk.utility.Diagnostics.Debug.Write("receive a unhanding message");
break;
}
return true;
}
public void RequestVideoChat(string to,string body,string ip,int port)
{
Message msg=new Message();
// msg.From=from;
msg.From=this.JabberClient.Jid.ToString();
msg.To=to;
msg.Body=body;
msg.Type=PacketType.chat;
msg.ID=IDGenerator.NewID;
msg.VideoChat=new gowk.core.packets.Message.videochat();
msg.VideoChat.ip=ip;
msg.VideoChat.port=port;
msg.VideoChat.type=gowk.core.packets.Message.VideoChatType.request;
this.Send(msg);
}
public void EndVideoChat(string to)
{
Message msg=new Message();
// msg.From=from;
msg.From=this.JabberClient.Jid.ToString();
msg.To=to;
msg.Type=PacketType.chat;
msg.ID=IDGenerator.NewID;
msg.VideoChat=new gowk.core.packets.Message.videochat();
msg.VideoChat.type=gowk.core.packets.Message.VideoChatType.end;
this.Send(msg);
}
public void ResponseVideoChat(string to,bool ok,string body,string ip,int port)
{
Message msg=new Message();
// msg.From=from;
msg.From=this.JabberClient.Jid.ToString();
msg.To=to;
msg.Body=body;
msg.Type=PacketType.chat;
msg.ID=IDGenerator.NewID;
msg.VideoChat=new gowk.core.packets.Message.videochat();
msg.VideoChat.ok=ok;
msg.VideoChat.ip=ip;
msg.VideoChat.port=port;
msg.VideoChat.type=gowk.core.packets.Message.VideoChatType.response;
this.Send(msg);
}
public void SendMessage(string to,string subject,string body,string rtf,string thread,string type)
{
Message msg=new Message();
// msg.From=from;
msg.From=this.JabberClient.Jid.ToString();
msg.To=to;
msg.Subject=subject;
msg.Body=body;
msg.Rtf=rtf;
msg.Thread=thread;
msg.Type=type;
msg.ID=IDGenerator.NewID;
this.Send(msg);
}
public void SendMessage(string to,string subject,string body,string rtf,string thread,string type,JabberCallBack cb,int timeout)
{
Message msg=new Message();
// msg.From=from;
msg.From=this.JabberClient.Jid.ToString();
msg.To=to;
msg.Subject=subject;
msg.Body=body;
msg.Rtf=rtf;
msg.Thread=thread;
msg.Type=type;
msg.ID=IDGenerator.NewID;
this.Send(msg,cb,timeout);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -