当前位置: 首页 > news >正文

手机网站集成支付宝南京手机网站设计公司

手机网站集成支付宝,南京手机网站设计公司,网站开发项目介绍ppt,php语言 网站建设目录 登录状态业务层代码数据模型层代码记录用户的连接信息以及线程安全问题客户端异常退出业务 登录状态 登录且状态变为online 业务层代码 #include chatservice.hpp #include public.hpp #include string #include muduo/base/Loggi… 目录 登录状态业务层代码数据模型层代码记录用户的连接信息以及线程安全问题客户端异常退出业务 登录状态 登录且状态变为online 业务层代码 #include chatservice.hpp #include public.hpp #include string #include muduo/base/Logging.h #include muduo/net/TcpServer.h #include muduo/net/EventLoop.h using namespace muduo; using namespace std;//获取单例对象的接口函数 ChatService* ChatService::instance() {static ChatService service;return service; }//注册消息以及对应的Handler回调操作 ChatService::ChatService() {//要想实现回调就需要先进行注册通过绑定对象_msgHandlerMap.insert({LOGIN_MSG,std::bind(ChatService::login,this,_1,_2,_3)});_msgHandlerMap.insert({REG_MSG,std::bind(ChatService::reg,this,_1,_2,_3)});}//获取消息对应的处理器 MsgHandler ChatService::getHandler(int msgid) {//记录错误日志,msgid没有对应的事件处理回调auto it_msgHandlerMap.find(msgid);if(it_msgHandlerMap.end()){//返回一个默认的处理器空操作return [](auto a,auto b,auto c){LOG_ERRORmsgid:msgidcan not find handler!;};}else{return _msgHandlerMap[msgid];}}//处理登录业务 void ChatService::login(const TcpConnectionPtr conn,json js,Timestamp) {int idjs[id].getint();string pwdjs[password];User user_userModel.query(id);if(user.getId()iduser.getPwd()pwd){if(user.getState()online){//该用户已经登录不允许重复登录json response;response[msgid]LOGIN_MSG_ACK;response[errno]2;response[errmsg]该账号已经登录请重新输入新账号;conn-send(response.dump());}else{//登录成功更新用户状态信息 state offlineonlineuser.setState(online);_userModel.updateState(user);json response;response[msgid]LOGIN_MSG_ACK;response[errno]0;response[id]user.getId();response[name]user.getName();conn-send(response.dump());}}else{//该用户不存在登录失败json response;response[msgid]LOGIN_MSG_ACK;response[errno]1;response[errmsg]用户名或者密码错误;conn-send(response.dump());} } //处理注册业务 void ChatService::reg(const TcpConnectionPtr conn,json js,Timestamp) {string namejs[name];string pwdjs[password];User user;user.setName(name);user.setPwd(pwd);bool state_userModel.insert(user);if(state){//注册成功json response;response[msgid]REG_MSG_ACK;response[errno]0;response[id]user.getId();conn-send(response.dump());}else{//注册失败json response;response[msgid]REG_MSG_ACK;response[errno]1;conn-send(response.dump());} } 数据模型层代码 //更新用户的状态信息 //根据用户号码查询用户信息 bool UserModel::updateState(User user) {//组装sql语句char sql[1024]{0};sprintf(sql,update user set state %s where id%d,user.getState().c_str(),user.getId());MySQL mysql;if(mysql.connect()) {if(mysql.update(sql)){return true;}}}但是问题就是一登录成功就断开连接了 记录用户的连接信息以及线程安全问题 所以需要保存连接信息 这个表会被多线程访问所以要考虑它的线程安全问题 上互斥锁 CSTL里面并没有考虑线程安全问题 数据库的增删改查的并发操作是由MYSQL来保证的不需要担心去上锁啥的。而线程安全需要保证 大括号表示作用域 客户端异常退出业务 在没有任何响应的情况下连接突然断开了。比如网络连接问题 如果异常退出并没有发送合法的json。用户状态如何 这个业务完成两件事一个是把存储用户通信连接的哈希表删除该用户的键值对2、将用户在数据库里的状态信息由online变成offline。 当出了大括号之后锁就自动释放
http://www.dnsts.com.cn/news/94374.html

相关文章:

  • wordpress多站点文章调用html素材图片
  • 镇江网站建设企业html5网站图标
  • 邢台哪里可以做网站电子商务网页制作试题及答案
  • 建个短视频网站网站开发设计报告书怎么写
  • 大学生ppt免费模板网站公司官网设计制作
  • 益阳做网站国学大师网站是哪里做的
  • 如何解决网站兼容seo的主要策略和流程内容
  • 一个网站做seo深圳网页设计兴田德润赞扬
  • 哪些网站做微课赚钱电子商务网站设计流程
  • 什么网站可以免费做视频的软件重庆建筑信息工程官网
  • cms开源建站系统盐城中瑞做网站公司
  • 网站开发能用react吗网站开发语言手册
  • 怎么建公司网站晋城市公共事业建设局网站
  • 网站模板绑定域名一般纳税人5%征收率
  • 新网网站管理电商设计灵感网站
  • 建设网站 深圳流媒体视频网站建设
  • 网站编辑外包dedecms怎么关闭网站
  • js网站完全可定制的软件
  • 临淄做网站国外效果图网站
  • 做网站广告中敏感词会涉及到工商南昌网站建设博客
  • 网站设计标注图用什么做的西双版纳北京网站建设
  • 怎么跟客户介绍网站建设p2p理财网站开发流程图
  • 小语种网站怎么做推广渠道包括哪些
  • php网站模板怎么修改做外贸进国外网站
  • 国外专名做路演的网站wordpress500
  • 电脑制作网站的软件手机做个人简历
  • 企业展示网站建设多少钱聊城网站托管
  • 国内建设地铁的公司网站国外建设网站流程
  • 服装 多语言 网站源码阳光保险官方网站
  • 天保建设集团有限公司网站重庆网络网站建设