飞信聊天记录相关类
Class:Core.Player
類似結構體(只有屬性,沒有方法),它建立了關于Uri,nickname,用戶類型之間的關系,應該是歷史記錄使用的一個輕量級用戶表示類吧)—如果這里也用Contact確實有點過了.注意:類有一個靜態實例,Player.System(表明系統用戶)?
Interface: IMessage
消息的接口定義:七個屬性,分別是消息體,擴展信息(好像只有添加好友才用到),消息ID,接收者(是一個player集合,fetion支持群發),發送者,日期,消息類型.不長,干脆直接考出來好了.
public?interface?IMessage{
????//?Properties
????string?Body?{?get;?set;?}
????string?Extend?{?get;?set;?}
????string?ID?{?get;?set;?}
????PlayerCollection?Receivers?{?get;?}//注意,這個不能set,也就是初始化后不能改動
????Player?Sender?{?get;?set;?}
????DateTime?Time?{?get;?set;?}
????MessageType?Type?{?get;?set;?}
}
從這個接口可以看出,實現接口的也應該是結構體類型的類.它有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() 就可以了.
轉載于:https://www.cnblogs.com/imparser/archive/2008/04/19/1161295.html
總結
- 上一篇: The Simple Life
- 下一篇: 改变客户端访问时的方法名