TeamTalk UserModel

1. 简介

该模块用于用户信息管理

2. 类与接口

CUserModel

void CUserModel::**getChangedId**(uint32_t& nLastTime, list\<uint32_t\> &lsIds)
从mysql IMUser获取updated >= nLastTime用户的id

void CUserModel::**getUsers**(list<uint32_t> lsIds, list\<IM::BaseDefine::UserInfo\> &lsUsers)
从mysql IMUser获取id在lsIds的所有用户详情,并存到lsUsers中


bool CUserModel::**getUser**(uint32_t nUserId, DBUserInfo_t &cUser)
从mysql IMUser获取指定nUserId的用户详情,并存到cUser中

bool CUserModel::**updateUser**(DBUserInfo_t &cUser)
更新mysql IMUser中cUser的用户信息

bool CUserModel::**insertUser**(DBUserInfo_t &cUser)
向mysql IMUser插入cUser信息

void CUserModel::**clearUserCounter**(uint32_t nUserId, uint32_t nPeerId, IM::BaseDefine::SessionType nSessionType)
切换到unread数据库,
若为私聊信息,则删除哈希表中key为unread_nUserId field为nPeerId的字段;
若为群消息,则获取哈希表中key为nPeerId_im_group_msg的所有字段并将其拷贝一份,其key为nUserId_nPeerId_im_user_group

void CUserModel::**setCallReport**(uint32_t nUserId, uint32_t nPeerId, IM::BaseDefine::ClientType nClientType)
将nUserId和nPeerId对话的平台类型(Windos Mac IOS或ANDROID )插入到mysql IMCallLog中

bool CUserModel::**updateUserSignInfo**(uint32_t user_id, const string& sign_info)
更新mysql IMUser user_id的签名信息

bool CUserModel::**getUserSingInfo**(uint32_t user_id, string* sign_info)
获取mysql IMUser user_id的签名信息

bool CUserModel::**updatePushShield**(uint32_t user_id, uint32_t shield_status)
更新mysql IMUser user_id的勿扰状态为shield_status(0关闭勿扰 1开启勿扰)

bool CUserModel::**getPushShield**(uint32_t user_id, uint32_t* shield_status)
获取mysql IMUser user_id的勿扰状态

UserAction

void **getUserInfo**(CImPdu* pPdu, uint32_t conn_uuid)
处理用户详情请求消息;
先解析pdu,再调用CUserModel::getUsers获取id在user_id_list的用户详情,然后封装成响应pdu扔到响应loop中等待发送

void **getChangedUser**(CImPdu* pPdu, uint32_t conn_uuid)
处理更新的用户详情请求消息;
获取IMUser update >= latest_update_time的用户详情

void **doPushShield**(CImPdu* pPdu, uint32_t conn_uuid)
处理更新用户勿扰状态请求消息

void **doQueryPushShield**(CImPdu* pPdu, uint32_t conn_uuid)
处理查询用户勿扰状态请求消息
3. test_usermodel.cpp说明

test_getChangedUser用例构造了个getChangedUser请求消息,用于请求更新的用户详情;
test_clearUnreadMsgCounter构造了个类型为单个用户会话的clearUserCounter请求消息,用于请求清除未读消息计数;
该用例由于mysql和redis连接池未释放存在内存泄漏问题,解决方法参考test_dbpool.cpp

4. 源码

链接:TeamTalk_BlueBling
测试demo:tests/test_usermodel.cpp

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值