zoukankan      html  css  js  c++  java
  • 飞信聊天记录相关类

     核心类:Core.History.DbHistoryManager 

    Class:Core.Player

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

    Interface: IMessage

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

    public interface IMessage
    {
        
    // Properties
        string Body getset; }
        
    string Extend getset; }
        
    string ID getset; }
        PlayerCollection Receivers 
    get; }//注意,这个不能set,也就是初始化后不能改动
        Player Sender getset; }
        DateTime Time 
    getset; }
        MessageType Type 
    getset; }
    }


    从这个接口可以看出,实现接口的也应该是结构体类型的类.它有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() 就可以了.

  • 相关阅读:
    深入理解yield from语法
    数据库事务并发问题,锁机制和对应的4种隔离级别
    同源策略与CORS跨域请求
    Restful 4 -- 认证组件、权限组件、频率组件、url注册器、响应器、分页器
    Restful 3 -- 序列化组件(GET/PUT/DELETE接口设计)、视图优化组件
    Restful 2 --DRF解析器,序列化组件使用(GET/POST接口设计)
    Restful 1 -- REST、DRF(View源码解读、APIView源码解读)及框架实现
    Vue(7)- vue-cookies、极验滑动验证geetest、vue-router的导航守卫
    Vue --6 router进阶、单页面应用(SPA)带来的问题
    Vue 5 -- axios、vuex
  • 原文地址:https://www.cnblogs.com/imparser/p/1161295.html
Copyright © 2011-2022 走看看