您的位置:首页 > 其它

飞信聊天记录相关类

2008-04-19 16:45 169 查看
核心类:Core.History.DbHistoryManager
Class:Core.Player

类似结构体(只有属性,没有方法),它建立了关于Uri,nickname,用户类型之间的关系,应该是历史记录使用的一个轻量级用户表示类吧)—如果这里也用Contact确实有点过了.注意:类有一个静态实例,Player.System(表明系统用户)

Interface: IMessage

消息的接口定义:七个属性,分别是消息体,扩展信息(好像只有添加好友才用到),消息ID,接收者(是一个player集合,fetion支持群发),发送者,日期,消息类型.不长,干脆直接考出来好了.

public interface IMessage

从这个接口可以看出,实现接口的也应该是结构体类型的类.它有3个实现.

Core.ContactHistoryMessage

关于好友列表改变的消息类型,看了发现Fetion貌似对这个实现管的很严,都是interal类型的函数.貌似这个消息类型根本没有用到呢….

Core.InstantMessage

即时消息类.(主要需要查看的)

Core.SystemMessage

系统消息类,增加了一个 private MessageStatus _readok; 表示消息是否发送成功 private string _link;含义还不大清楚.

DbHelper

因为Fetion是把Dat文件当成一个数据库来管理的,因而需要使用SQL查询.

1. 这是一个internal class,因而只有Imps.Client.Core包内可以访问.2

2.
public bool InitializeDatabase(string currentUserSid)
只是对数据库,定位到对应的目录和Histroy.dat文件,并建立数据库连接,值得注意的是,

this._password = currentUserSid;

string connectionString = string.Format("Data Source={0};Password={1}", this._ dataSource, this._password);
和QQ一样,使用用户Id加密聊天记录.
DbHistoryManager(User currentUser){

this._currentUser = currentUser;  //设置user

this._currentPlayer = new Player(currentUser.Uri.Raw, currentUser.Nickname, PlayerType.User); //建立player

this.InitializeDatabase(); //初始化数据库.

}

在初始化数据库中最后会启用一个线程 MigationMessageHistory() 来迁移导入06版本的数据.(寒一个,migration才对吧,居然拼写错了…)

初始化需要User.

在不调迁移线程的情况下,使用到User的数据量是很小的.

1. User.Sid(必要的值,是用户文件夹名和数据库加密密码)

2. User.Uri(Player初始化要用到)

3. User.NickName(同样,player初始化时候要用到)

然后貌似就调用LoadMessages() 就可以了.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: