larbin源码之global.h
/** This represent a connection : we have a fixed number of them
* fetchOpen links them with servers
* fetchPipe reads those which are linked
*/
//表达连接相关信息
struct Connexion {
char state; // socket状态 : EMPTY, CONNECTING, WRITE, OPEN
int pos; //请求发送位置标记
FetchError err; // 连接如何终止,enum
int socket; // socket descriptor number
int timeout; // 连接超时时间设置
LarbinString request; // http请求报头
file *parser; // 解析连接 (a robots.txt or an html file)
char buffer[maxPageSize];//下载的网页数据
Connexion();//初始化state=emptyC,parser=NULL
~Connexion();//不执行,一旦执行就出错,assert(false)
void recycle();//释放*parser,再次初始化request
};
该结构体的主要两个类成员LarbinStrng,file。
LarbinString类(string.h声明,string.cc实现),主要是对字符串http报头的字符串相关操作
class LarbinString {
private:
char *chaine; //http报头字符串
uint pos; //http报头当前位置标记
uint size; //http报头大小
public:
LarbinString(uint size = STRING_SIZE); //初始化*chaine,pos=0,size
~LarbinString(); //释放*chaine
void recycle(uint size = STRING_SIZE); //重新分配*chaine
char *getString(); //返回*chaine
char *giveString(); //返回*chaine的拷贝
void addChar(char c); //chaine[pos]=c
void addString(char *s); //添加*s到*chine后(pos起)
void addBuffer(char *s, uint len); //添加*s到*chine后(pos起)
inline uint getLength() { return pos; }; //return pos
inline char operator [] (uint i) //数组[]运算符重载
void setChar(uint i, char c); //chaine[i]=c
};
file类,(html类,robots类),二者继承file类。解析连接(robots.txt or .html file)
class file {
protected:
char *buffer; //connexion中的buffer[maxPageSize(100000)],下载的网页数据
char *posParse; //解析位置
public:
file(Connexion *conn); //初始化*buffer=*posParse=conn->buffer;pos=0
virtual ~file();
bool isRobots; // Is it a robots.txt
uint pos; //*buffer的当前位置
// a string arrives from the server
virtual int inputHeaders(int size) = ; // just parse headers
virtual int endInput() = ;
};
class html : public file {
private:
url *here; //url地址
char *area; //当前感兴趣区的起始位置
char *contentStart; //真正内容的起始位置,报头之后的内容
url *base; //url基地址
/* manage a new url : verify and send it */
void manageUrl(url *nouv, bool isRedir);
larbin源码之global.h的更多相关文章
- ncnn 源码学习-Mat.h Mat.c
纯小白记录下腾讯的ncnn框架源码的学习.纯粹写给自己看的,不保证正确性. Mat 类似于 caffe中的blob,是一个张量的存储结构体. 一.数据成员: 1.void * data 多维数据按一位 ...
- mini-httpd源码分析-port.h
针对不同系统的宏定义,对于Linux而言 /* port.h - portability defines */ #elif defined(linux) # define OS_Linux # def ...
- mini-httpd源码分析-version.h
/* version.h - version defines for mini_httpd */ #ifndef _VERSION_H_ #define _VERSION_H_ #define SER ...
- Redis源码研究--redis.h
------------7月3日------------ /* The redisOp structure defines a Redis Operation, that is an instance ...
- mini-httpd源码分析-match.h
//字符串匹配,匹配返回 1,否则返回 0. //pattern可以通过任意个 | 字符,组合match_one中pattern的功能 int match(const char* pattern, c ...
- mini-httpd源码分析-tdate_parse.h
///关联字符串和整数 struct strlong { char* s; long l; }; ///将字符串中的大写字母转换成小写字母 static void pound_case(char* s ...
- 包含到cocos2d-x里的tcpsocket源码
声明:本文参考了langresser发布的blog“跨平台的游戏客户端Socket封装” Socket处理是异步非阻塞的,所以可以放心的放到主线程处理消息,并且在原作者的基本上进行了系列优化,考虑了客 ...
- [小工具] Command-line CPU Killer(附源码及下载链接)
博主有次在拆卸自己的笔记本电脑后,发现电脑如果静置时间长了有时会重启,但奇怪的是当我自己在电脑前工作的时候从来没有重启过.据此推测可能 CPU 完全空闲的时候风扇完全停转了,虽然 CPU 温度不高,但 ...
- php源码分析之PHPAPI宏的作用
在PHP源码中,我们经常会看到很多函数前面有个PHPAPI,但这是什么呢? 于是我在php源码/main/php.h中找到了它的定义 #ifdef PHP_WIN32 # include " ...
随机推荐
- Android Studio无法关联Api23源码-提示Souces for android api 23 platform not found
最近升级了As,然后忽然就关联不上源码了,很不方便,找个Activity的源码都只有outline没有解释,还提示这个错误: Decompiled .class file, bytecode vers ...
- 屏蔽错误:LNK2038
最近在使用Qt(VS2010编译)的过程中,需要调用COM库,在Qt中加入了QAxContainer模块,是一个LIB库,在把编译模式从Debug改为Release 后链接报告了一堆错误 -1: 错误 ...
- Android Intent传递数据
刚开始看郭大神的<>,实现以下里面的一些例子.Intent传递数据. 我们利用显示的方式进行Intent的启动. 1.启动intent并输入数据. Intent intent=new In ...
- Magnolia-CMS安装配置
Magnolia-CMS安装配置 Magnolia-CMS安装配置 介绍:Magnolia 是一个开源基于Java的Web内容管理系统(CMS),构建在Java内容知识库标准(JSR-170).它适合 ...
- 分享一个PHP调用RestFul接口的函数
php越来越前端化,大型系统中的php经常是调用后端服务的接口,这里分享一个函数.希望对大家有用. /** * [http 调用接口函数] * @Date 2016-07-11 * @Author G ...
- sed高级命令
所谓高级,主要是指这里将要提到的命令都能改变sed执行或者控制的流程顺序(sed通常都是一行被读入模式空间,并用脚本中的sed命令一个接一个的应用于那一行). 高级sed命令分成3个组: 1)处理多行 ...
- Delphi XE6 通过JavaScript API调用百度地图
参考昨天的内容,有朋友还是问如何调用百度地图,也是,谁让咱都在国内呢,没办法,你懂的. 首先去申请个Key,然后看一下百度JavaScript的第一个例子:http://developer.baidu ...
- 数据库设计与SQL优化的建议
1. 用程序中,保证在实现功能的基础上,尽量减少对数据库的访问次数:通过搜索参数,尽量减少对表的访问行数,最小化结果集,从而减轻网络负担:能够分开的操作尽量分开处理,提高每次的响应速度:在数据窗口使用 ...
- JavaScript js生成GUID
function generateUUID(){ var d = new Date().getTime(); var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxx ...
- Qt部件学习之-烧鹅
1,布局管理器 candidates