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

移动网站开发教材做暧暖的免费网站

移动网站开发教材,做暧暖的免费网站,emlog文章转wordpress,免费网站软件免费下载安装文章目录 2 类图设计3 时序图数据输入处理:输出数据处理总流程 4 主要实现的功能4.1 kernel类:基于epoll调度所有通道4.2 通道抽象类:4.3 标准输入通道子类4.4 标准输出通道子类4.5 kernel和通道类的调用 5 代码设计5.1 框架头文件5.2 框架实…

文章目录

    • 2 类图设计
    • 3 时序图
      • 数据输入处理:
      • 输出数据处理
      • 总流程
    • 4 主要实现的功能
      • 4.1 kernel类:基于epoll调度所有通道
      • 4.2 通道抽象类:
      • 4.3 标准输入通道子类
      • 4.4 标准输出通道子类
      • 4.5 kernel和通道类的调用
    • 5 代码设计
      • 5.1 框架头文件
      • 5.2 框架实现

遇到的问题:
输入通道类stdin和输出通道类stdout与很多相同点,无需写重复代码

抽象:
定义通道抽象类,把输入和输出的不同通过虚函数扩展

通道抽象类设计

  • 提供虚函数用于泛化读写
  • 提供虚函数用于返回对应的文件描述符
  • epoll处理输出,所以需要输出缓冲区
  • 对外:提供输出数据调用(将数据放到输出缓冲区,等待epoll调用)
  • 对外:提供泛化扩展,用于处理输入的数据

kernel类适配修改

  • 用抽象类指针list存储当前需要侦听的channel
  • 根据需求动态地调整epoll事件的监听种类

stdin类重构,stdout类创建:

  • 继承抽象通道类,实现纯虚函数

2 类图设计

  • 一个kernel存放所有的标准通道父类指针。
  • 数据处理放在标准通道中。
    在这里插入图片描述

3 时序图

数据输入处理:

在这里插入图片描述

输出数据处理

在这里插入图片描述

总流程

在这里插入图片描述

4 主要实现的功能

4.1 kernel类:基于epoll调度所有通道

4.2 通道抽象类:

写出缓冲区函数
将数据追加到缓冲区的函数
虚函数:读,写,获取fd,数据处理

4.3 标准输入通道子类

重写读和处理的函数
处理数据的函数:将数据交给输出通道

4.4 标准输出通道子类

重写写数据的函数

4.5 kernel和通道类的调用

创建通道对象(成员赋值)
添加通道到kernel
run

5 代码设计

5.1 框架头文件

/*框架头文件*/
class Ichannel {
public:virtual bool ReadFd(std::string &_input) = 0;virtual bool WriteFd(std::string &_output) = 0;virtual int GetFd() = 0;virtual bool DataProcess(std::string &_data) = 0;void DataSendOut();void DataPush(std::string &_data);std::list<std::string> m_write_buffer;
};class ZinxKernel {
private:ZinxKernel();~ZinxKernel();int iEpollFd = -1;static ZinxKernel *poZinxKernel;std::list<Ichannel*> m_channel_list;
public:static bool ZinxKernelInit();static void ZinxKernelFini();static void Zinx_Run();static bool Zinx_Add_Channel(Ichannel &_oChannel);static void Zinx_Del_Channel(Ichannel &_oChannel);static void Zinx_SetChannelOut(Ichannel &_oChannel);static void Zinx_ClearChannelOut(Ichannel &_oChannel);static ZinxKernel *GetInstance() {if (NULL == poZinxKernel){poZinxKernel = new ZinxKernel();}return poZinxKernel;}
};

5.2 框架实现

/*业务编写,读用户输入,向终端输出*/
#include "Zinx.h"using namespace std;class stdout_channel :public Ichannel {
public:// 通过 Ichannel 继承virtual bool ReadFd(std::string & _input) override{return false;}virtual bool WriteFd(std::string & _output) override{cout << _output << endl;return true;}virtual int GetFd() override{return 1;}virtual bool DataProcess(std::string & _data) override{return false;}} *poOut = new stdout_channel();class stdin_channel :public Ichannel {
public:// 通过 Ichannel 继承virtual bool ReadFd(std::string & _input) override{cin >> _input;return true;}virtual bool WriteFd(std::string & _output) override{return false;}virtual int GetFd() override{return 0;}virtual bool DataProcess(std::string & _data) override{poOut->DataPush(_data);return true;}};int main()
{ZinxKernel::ZinxKernelInit();ZinxKernel::Zinx_Add_Channel(*(new stdin_channel()));ZinxKernel::Zinx_Add_Channel(*poOut);ZinxKernel::Zinx_Run();ZinxKernel::ZinxKernelFini();
}

在这里插入图片描述

http://www.yayakq.cn/news/314063/

相关文章:

  • 网站免费正能量软件直播个人网站 阿里云
  • 网站建设面授班交易类网站seo怎么做
  • 东莞市建设培训中心网站西安php网站开发培训班
  • 网站注册系统用什么做wordpress excel导入
  • 手机卡盟网站建设咋创建自己的网站
  • 公司网站建设制作全包河南省建设工程信息网站
  • 邢台做网站哪儿好dedecms 网站 经常无法连接
  • 做刷机网站赚钱吗建设网站费用分析
  • 兼职做海报网站大连集团网站建设
  • 个人网站建设可行性分析报告外贸建站与推广如何做 google
  • 网站开发直播做ic芯片的要去哪个网站
  • 咨询类网站模板简洁的网页模板
  • 男女直接做的视频 视频网站智慧团建管理系统
  • 个人网页制作流程论文网络关键词优化方法
  • 中文一级a做爰片免费网站做a暧小视频在线观看网站
  • pc建站 手机网站科技网站建设分析
  • 免费行情网站ui网页设计课程
  • 响应式网站模板 开源网站关键词优化互点
  • 网站设计服务费英文seo网站建设视频
  • 网站建设全包 广州中国四大saas公司
  • 北辰正方建设集团网站网易企业邮箱怎么收费
  • 深圳坑梓网站建设公司从零开始学网站建设
  • 网站设计三把火科技wordpress主题音乐
  • 个人网站做排名asp网站建设教案
  • 国外有哪些做deal的网站浙江嵊州最新消息
  • 个人网站免费做老五wordpress
  • 医院网站做品牌推广需要哪些wordpress问答主题
  • 红动中国免费素材网站腾讯云个人网站备案
  • 南宁专门建网站的公司网站开发毕业设计论文
  • 奇迹建站模板建网站的成本计算