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

手机网站集成支付宝长岭网站优化公司

手机网站集成支付宝,长岭网站优化公司,广告最多的浏览器,做饲料推广哪个网站好目录 登录状态业务层代码数据模型层代码记录用户的连接信息以及线程安全问题客户端异常退出业务 登录状态 登录且状态变为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.hkea.cn/news/14504732/

相关文章:

  • 模板网站建设哪家好wordpress自定义模板下载
  • 做网站制作挣钱吗怎样自己创网站
  • 北京海淀中关村找工作网站淘宝怎么才能发布网站建设
  • 广元网站建设公司沈阳关键词seo
  • 无为网站建设被骗去国外做网站网站推广
  • 网站建设是如何寻找客户的万网有跟企业做网站吗
  • 孵化器网站建设方案兴义市住房城乡建设局网站
  • 网上如何做广告杭州seo教程
  • 重庆做网站推广怎么注册公司的邮箱
  • 服装设计与工程太原seo网站优化
  • 备案后修改网站内容内蒙建设厅官方网站
  • 个人网站不备案辽宁网站制作公司
  • 太原推广型网站制作创建公司网站免费
  • 网站一年多少钱?wordpress 动态meta
  • 宝安网站建设公司农业信息免费发布平台
  • 盐城企业做网站崇明网站建设
  • 京东的网站是哪家公司做的如何用xshell安装wordpress
  • 搜狐快站绑定未备案的网站域名吗免费商标设计网
  • 个人网站空间价格vps设置网站访问用户权限
  • 网页设计与网站建设文档vps网站目录显示灰色的
  • 电器企业网站建设黄骅市在哪里
  • 体育类网站模板可拖动网站
  • 网站设计培训班询北京物流网站建设
  • 整站网站优化运营wordpress 产品模块
  • 网站建设普票页面设计免费
  • 餐饮o2o 网站建设做公司网站的模板下载
  • 商城网站设计服务刷推广链接
  • 网站建设非功能需求产品网络推广的方法
  • 安防公司网站模板平面电商网站建设
  • 最新网站开发软件主机托管公司