16.muduo学习笔记之base_LogStream.{h&cc}

1. 说明

  • muduo的日志相关类
  • 又是一个复杂的文件
  • 日志类之间的关系:
    Logger --> Impl --> LogStream --> operator<<FixedBuffer --> g_output --> g_flush    
    

2. FixedBuffer类

0. 类说明

  1. data_指针指向数组头不变,cur_可变,相当于偏移
  2. end()就返回缓冲区的尾部指针

1. 变量

  1. data_
    • 数组头指针
  2. cur_
    • 当前位置指针,相当于偏移
  3. cookie_
    • 回调函数

2. 函数

1. 普通
  1. 构造函数
    • 数据初始化和设置cookie_函数
  2. 析构函数
    • 设置cookie_函数
  3. append(const char* /*restrict*/ buf, size_t len)
    • 把buf数据追加到data_后面
  4. data()
    • 返回data_
  5. length()
    • 返回使用的空间的长度
  6. current()
    • 返回cur_
  7. avail()
    • 返回可用空间的大小
  8. add(size_t len)
    • 向后移动cur_指针
  9. reset()
    • 另cur_指针指向数组头
  10. bzero()
    • 把data_清空
  11. debugString()
    • 返回当前用过的数据的字符串,代码很好理解,注释说是调试的时候用
  12. setCookie()
    • 设置cookie_回调函数
  13. toString()
    • 把data_数组转换成string类型返回
  14. toStringPiece()
    • 返回StringPiece类型,这是个自定义类型,大致看了下,有啥用还不清楚,后面有用到再看
2. 私有
  1. end()
    • 返回data_尾部的指针
  2. cookieStart()
    • 静态,空函数,不知道啥用
  3. cookieEnd()
    • 静态,空函数,不知道啥用

3. LogStream类

1. 变量

  1. buffer_

    • FixBuffer类型
  2. kMaxNumericSize

    • 静态常量,如名,记录一个数字转换成字符串可能占据的最大字符数

2. 函数

1. 普通
  1. append(const char* data, int len)

    • 调用buffer_的append()
  2. buffer()

    • 返回buffer_的引用
  3. resetBuffer()

    • 调用buffer_的reset()
  4. 重载<<运算符

    • 参数为各种数据类型,总之就是把<<实现成往buffer_里写数据
2. 私有
  1. staticCheck()
    • 编译期断言
  2. formatInteger(T)
    • 把当参数传入的数字类型转换成字符串加到buffer_后面
    • 这里使用了.cc文件中的convert函数,具体不细写了,代码不难

4. Fmt类

1. 变量

  1. buf_
    • char数组
  2. length_

2. 函数

  1. 构造函数
    • 控制把val加入到buf_中的格式,明白snprintf()函数的作用就很好理解了
  2. data()
    • 返回buf_
  3. length()
    • 返回length_

5. 其他

1. detail命名空间

  1. 两个常量
    • kSmallBuffer
    • kLargeBuffer,标识buf大小
  2. FixedBuffer类就在这个命名空间内

2. muduo命名空间

  1. LogStream类和Fmt类在这个空间

  2. formatSI(int64_t n)

    • 格式数量单位为(k, M, G, T, P, E).
  3. formatIEC(int64_t n)

    • 格式数量单位为(Ki, Mi, Gi, Ti, Pi, Ei).
上一篇:build muduo库时报错


下一篇:18.muduo学习笔记之base_FileUtil.{h&cc}