|
我在另一个帖子里已经说过了这个, 现在单独贴出来,也做为目前的文档吧。
我详细的说一下目前Eva保存和读取的文件情况:
eva.sys : Eva系统配置文件
保存在$HOME/.eva里。
这里面记录着登录好友的QQ号,加密后的密码, 登录方式,网络参数。
文件用二进制保存, 数据结构为
[code:1]
typedef struct loginRecord{
Q_UINT32 id;
Q_UINT8 *md5Pwd; // the password is always 16 bits long. if isRecorded is false, password is 16 '0' chars
Q_UINT8 flag; // bit 0 to 2 reserved, bit 3: UDP, bit 4: TCP, bit 5: HTTP Proxy, bit 6: isHidden, bit 7: isRecorded( 0 for false, 1 for true)
Q_UINT32 proxy;
Q_UINT16 port;
QString proxyUserName;
QCString base64param;
} loginRecord;
[/code:1]
sys.msg : 用户系统消息记录文件
保存在$HOME/.eva/XXX 里(XXX为用户的QQ号码)。
这里保存着系统发给用户XXX所有系统消息,包括腾讯的消息广播,
其他用户加你为好友的通知,其他用户发给你的添加请求,
其他用户同意你的添加请求, 其他用户拒绝你的添加请求。
你被群加入的通知。加入群的请求, 群同意加入的通知,
群拒绝加入的通知。
文件为2进制存储。
格式为
[code:1]
typedef struct{
Q_UINT16 messageType; // 标识消息的类型,一般消息,或者某个群消息
Q_UINT8 type; // 如果是一般消息,则为详细类型,如果是群的,则为永久群 or 临时群
Q_UINT32 from; // 消息的发送者。
Q_UINT32 to; // 如果是一般消息,则为自己,否则为群外部ID
Q_UINT32 internalQunID; // 如果是一般消息,则为0,否则为群内部ID
QString message; // 附加的消息内容
} sysMessage;
[/code:1]
chat.msg : 用户一般聊天消息记录文件
保存在$HOME/.eva/XXX 里(XXX为用户的QQ号码)。
这里是用户和好友的聊天记录文件,不包括群聊天记录
存储格式
[code:1]
typedef struct{
Q_UINT32 sender; // 发送者 QQ号
QString sNick; // 发送者昵称
Q_UINT32 receiver; // 接收者 QQ号
QString rNick; // 接收者昵称
Q_UINT8 type; // 0 auto reply, 1 normal
QString message; // 消息内容
QDateTime time; // 发送时间
Q_UINT8 fontSize; // 字体大小
Q_UINT8 flag; // start from right. bit 0: u, bit 1: i, bit 2: b
Q_UINT8 blue; // 字体颜色中的蓝色
Q_UINT8 green; // 字体颜色中的绿色
Q_UINT8 red; // 字体颜色中的红色
} chatMessage;
[/code:1]
注:群聊天记录将单独存储在另一个文件中, 正在实现。
user.dat : 用户资料记录文件
保存在$HOME/.eva/XXX 里(XXX为用户的QQ号码)。
包括 用户自己的资料,好友分组,好友资料 的存储
存储格式
[code:1]
存储分为顺序的三个部分:
1. 自己的资料(若干项)
2. 分组名称(若干)
3. 循环存储每个好友的全部资料(若干项)
[/code:1]
qun.dat : 用户群资料记录文件
保存在$HOME/.eva/XXX 里(XXX为用户的QQ号码)。
目前保存了永久群的所有资料,包括成员资料
格式:
[code:1]
分为两个部分:
1. 存储群的资料
2. 循环存储群成员的所有资料
[/code:1]
user.profile : 用户配置文件
保存在$HOME/.eva/XXX 里(XXX为用户的QQ号码)。
这个存储用户可以自定义的配置。
存储格式如下(配置以行为一项,其中可以没有任意一行)
关键字: 值
例如:
[code:1]
THEME_DIR:
SOUND_DIR:
FACE_SIZE:16,16
DISPLAY_QQ_BROADCAST:true
DISPLAY_TIP_MESSAGE_TIP_WINDOW:true
DISPLAY_BUDDY_ONLINE_NOTIFY:true
DISPLAY_ONLINE_BUDDIES:false
SEND_KEY:false
PLAY_SOUND:true
AUTO_REPLY_SELECTED_INDEX:0
AUTO_REPLY:对不起,我正在工作。
AUTO_REPLY:吃饭去了。/fa
AUTO_REPLY:有事不在,不好意思
QUICK_REPLY:哦。
QUICK_REPLY:好了,好了,知道了
QUICK_REPLY:/jy , 真的吗?
[/code:1]
以上就是目前Eva所有保存的文件,及其大致格式, 写出来供大家参考.
目前的存储方式,对于大数据量的聊天记录的查询,尤其是群聊天记录的查询,带来的低下的效率。sjinny正着手实现一个新的模块来存储和查询这些数据。 |
|