Skip to content

Mengsen-W/mengSen

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

90 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

mengSen -- 一个基于C++17实现的协程网络库


1. 基础模块

  • AsyncLogging一个异步的Log类
  • BlockingQueue提供加锁的双端队列模板
  • BoundedBlocking提供加锁的循环队列
  • copyable提供了一个值语义的基类和标志
  • CountDownLatch可计数的互斥量
  • CurrentThread记录进程信息
  • Exception继承自标准库的std::exception提供一些额外的错误信息
  • FileUtil封装为一个文件管理类,负责文件的写入更新等功能的实际实现
  • LogFile专门负责log文件的管理,上承Logging下接FileUtil,将FileUtil扩展为LogFile,提高后端处理日志的速度
  • Logging实际的log管理类,设置日志等级,设置日志输出函数等
  • LogStream用于Log的更加快速的Stream
  • noncopyable提供了一个对象语义的基类和标记
  • ProcessInfo负责一些进程信息函数的封装
  • Singleton提供了集中单例类的封装
  • SpinLock使用std::atomic_flag封装了自旋锁
  • StringPiece代理模式,用于对stringchar*做兼容,防止由于const string&形参,导致传入一个很长的char*时,会生成一个较大的string对象,开销比较大
  • Thread封装了线程调用,调用了一部分CurrentThread,用于维护各个线程
  • ThreadPool封装了线程池,调用了Thread,维护线程池
  • Timestamp时间戳系统,直接用namespace进行封装,采用全模板形式,通过特化实现多态,对于未特化的部分,默认不允许使用,链接器会发出错误,对于所有的时间按纳秒传递为uint64_t类型,适应寄存器
  • TimeZone时区系统,默认采用国际时区,若要调换直接对uint64_t进行更改
  • Types类型转换的封装
  • WeakCallback封装了弱回调,既可以保证对象生命周期也不会导致生命周期过长

2. 协程模块

  • 采用汇编对其重构

3. 网络模块

  • Acceptor
  • Buffer专用于网络部分,以提高IO效率,保留脏数据
  • Callbacks设置了网络部分的可见回调
  • Endian封装了本机序转换为大端序的方法,以供内部使用
  • Channel管理fd回调函数和fd事件,用于连接fd,EventLoopPoller部分
  • Sockets管理系统sockfd,提供系统sockfd对应函数的封装
  • EventLoop专负责管理IO线程,对于每个EventLoop class分配一个Channel class
  • InetAddress这个类的作用现在还不知道

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published