首页 > 其他分享 >【CS144】Spongeの类图分析(lab0~lab4)

【CS144】Spongeの类图分析(lab0~lab4)

时间:2022-10-06 09:58:29浏览次数:112  
标签:const 写端 CS144 bytes 类图 Sponge lab4 ByteStream size

lab4写不下去了,感觉对代码理不清了,打算重新整理一下。
重点是五个类,(正好对应lab0~lab4)

ByteStream类


这里只展示startcode中类的模样(具体的实现可能各有不同,所以重点看函数的功能,成员变量倒不太需要分析)

ByteStream是一个字节流(An in-memory reliable byte stream)。可读可写,对外提供的接口功能如下:

  • ByteStream(const size_t capacity)
    构造函数,传入的参数是这个字节流的最大容量
  • bool input_ended()
    写端使用,当写端需要往ByteStream中写的内容写完之后,调用这个函数通知ByteStream,写端写完啦。
  • bool eof()
    读端使用,当读这个ByteStream读到最后没东西可以读了(ByteStream没东西,且写端写完啦),ByteStream.eof就会返回true
  • size_t write(const std::string &data)
    写端使用,往里面写data,返回实际写入的大小
  • std::string read(const size_t len)
    读端使用,从ByteStream中读len字节,返回实际读到的字符串
  • size_t bytes_written()
    都能使用,返回写端往ByteStream中累计写了多少字节。

StreamReassembler类


流重组器,把输入的零散的子字符串(子字符串开始编号 + 内容),组成一个连续的流(ByteStream)。(Stitching Substrings Into A Byte Stream)

  • StreamReassembler(const size_t capacity);
    构造函数,传入参数为流重组器的容量,也就是其中流ByteStream的容量
  • void push_substring(const std::string &data, const uint64_t index, const bool eof)
    写端使用,往流重组器写入子字符串(开始于index,内容为data,是否是最后一段eof)
  • ByteStream &stream_out()
    读端使用,返回组好的ByteStream
  • size_t unassembled_bytes()
    都能使用,返回还没组好的,暂存在辅助存储的数据大小,按容量的含义来说,unassembled_bytes + ByteStream.size <= capacaity
  • empty() const;
    都能使用true if no substrings are waiting to be assembled,也就是unassembled_bytes() == 0

标签:const,写端,CS144,bytes,类图,Sponge,lab4,ByteStream,size
From: https://www.cnblogs.com/PinganT/p/16757060.html

相关文章

  • IDEA自动生成的UML类图修改样式
    发生缘由IDEA自动生成的UML类图样式是曲线的,而我想要的是折线,所以想要修改一下。环境介绍电脑系统:win10IDEA版本:2021.1.3设置PS简单说一下查找历程:......
  • UML类图
    UML类图用图来表示类与类之间抽象关系的图叫做类图笔记总结来源于:B站尚硅谷——Java设计模式类之间的关系有:依赖、泛化、实现、关联、聚合和组合类图的安装本篇文......
  • CS144-Lab0
    Lab0主要是热身。task1和task2比较简单,按他指示来就行,略。task3写一个WebGet,代码如下:voidget_URL(conststring&host,conststring&path){//Yourcodehere......
  • [答疑]如何多选关联关系(类图),把line style统一修改
    尘语<xnony***q.com>10:07:36[Q]EA12,请问如何多选关联关系(类图),把linestyle统一修改?尘语<xnony***q.com>10:15:22即多选关联,统一变更连线格式潘加宇(3504847)17:05:......
  • [答疑]收款的类图
    2011/10/2310:26:51广罗得权(3075***697)ok否。请大家指点2011/10/2310:26:37广罗得权(3075***697)2011/10/2317:34:57潘加宇(704837756)这是什么,照猫画虎啊,拿着一张收款单......
  • 类图和对象图
    概述定义类图(ClassDiagram)是用于显示一组类、接口以及它们之间关系的图。类图用于对系统中的各种概念进行建模,并描绘出它们之间的关系,主要通过系统中的类以及类之间的......