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经典Demo(转载)
一篇不错的资源博文,转载分享给大家: 1.Android团队提供的示例项目 如果不是从学习Android SDK中提供的那些样例代码开始,可能没有更好的方法来掌握在Android这个框架上开发. ...
- 用友U8客户端连接不上服务器全攻略
用友U8客户端连接不上服务器全攻略 http://www.enet.com.cn2009年09月23日09:26 来自论坛 [导读]:如果网络不通,就让用户查找网络原因 检查步骤: 1.网络是否通? ...
- Spring学习之Ioc控制反转(2)
开始之前: 1. 本博文为原创,转载请注明出处 2. 作者非计算机科班出身,如有错误,请多指正 ---------------------------------------------------- ...
- leetcode算法刷题(三)
今天在刷了几道简单的动态规划后,又看了看string方面的题 第五题 Longest Palindromic Substring 题目的意思:求一个字符串的最长回文子串 分析:开始,我的想法是,现在字 ...
- 1011. A+B和C
/* * Main.c * 1011. A+B和C * Created on: 2014年8月30日 * Author: Boomkeeper *********测试通过******* */ #inc ...
- Oracle EBS-SQL (BOM-13):检查未定义库存分的物料类.sql
select distinct msi.segment1 编码 , msi.description 描述 , msi.primary_ ...
- 忘记linux密码
http://blog.163.com/xygzlyq@126/blog/static/22585899200810471512530/
- Windows 7安装教程(详细图解)
早前向大家介绍了Windows XP的安装教程,今天思齐再来介绍一下Windows 7的安装教程,Windows 7在安装上相对以前的Windows操作系统都要简单一些,这一点对于尤其是非专业用户来说 ...
- 图片和提交servlet的相对和绝对路径
xx.jsp在根目录下,图片的路径为:<img height="33" src="images/enter.gif" width="148&qu ...
- CSS预处理器实践之Sass、Less比较
什么是CSS预处理器? CSS可以让你做很多事情,但它毕竟是给浏览器认的东西,对开发者来说,Css缺乏很多特性,例如变量.常量以及一些编程语法,代码难易组织和维护.这时Css预处理器就应运而生了.Cs ...