Documentation ¶
Index ¶
- Variables
- func BytesToString(b []byte) string
- func Split(s, sep []byte, cb func([]byte) error) error
- type Method
- type Parser
- func (p *Parser) EOF() bool
- func (p *Parser) Execute(setting *Setting, buf []byte) (success int, err error)
- func (p *Parser) GetUserData() interface{}
- func (p *Parser) Init(t ReqOrRsp)
- func (p *Parser) ReadyUpgradeData() bool
- func (p *Parser) Reset()
- func (p *Parser) SetUserData(d interface{})
- func (p *Parser) Status() string
- type ReqOrRsp
- type Setting
- type TwoBuf
Constants ¶
This section is empty.
Variables ¶
View Source
var ( // ErrMethod 错误的method ErrMethod = errors.New("http method fail") // ErrStatusLineHTTP 状态行前面的HTTP错误 ErrStatusLineHTTP = errors.New("http status line http") // ErrHTTPVersionNum 错误的http版本号 ErrHTTPVersionNum = errors.New("http version number") // ErrHeaderOverflow http header包太大 ErrHeaderOverflow = errors.New("http header overflow") // ErrNoEndLF 没有\n ErrNoEndLF = errors.New("http there is no end symbol") // ErrChunkSize chunked表示长度的字符串错了 ErrChunkSize = errors.New("http wrong chunk size") // ErrReqMethod 错误的请求方法字符串 ErrReqMethod = errors.New("http request wrong method") // ErrRequestLineLF 请求行没有\n ErrRequestLineLF = errors.New("http request line wrong LF") )
View Source
var ( // MaxHeaderSize 表示 http header单行最大限制为4k MaxHeaderSize int32 = 4096 )
Functions ¶
Types ¶
type Method ¶ added in v0.0.7
type Method int8
Method 类型 表示http 方法
const ( // GET 表示GET方法 GET Method = iota + 1 // HEAD 表示HEAD方法 HEAD // POST 表示POST方法 POST // PUT 表示PUT方法 PUT // DELETE 表示DELETE方法 DELETE // CONNECT 表示CONNECT方法 CONNECT // OPTIONS 表示OPTIONS方法 OPTIONS // TRACE 表示TRACE方法 TRACE // ACL 表示ACL方法 ACL // BIND 表示BIND方法 BIND // COPY 表示COPY方法 COPY // CHECKOUT 表示CHECKOUT方法 CHECKOUT // LOCK 表示LOCK方法 LOCK // UNLOCK 表示UNLOCK方法 UNLOCK // LINK 表示LINK方法 LINK // MKCOL 表示MKCOL方法 MKCOL // MOVE 表示MOVE方法 MOVE // MKACTIVITY 表示MKACTIVITY方法 MKACTIVITY // MERGE 表示MERGE方法 MERGE // MSEARCH 表示M-SEARCH方法 MSEARCH // MKCALENDAR 表示MKCALENDAR方法 MKCALENDAR // NOTIFY 表示NOTIFY方法 NOTIFY // PROPFIND 表示PROPFIND方法 PROPFIND // PROPPATCH 表示PROPPATCH方法 PROPPATCH // PATCH 表示PATCH方法 PATCH // PURGE 表示PURGE方法 PURGE // REPORT 表示REPORT方法 REPORT // REBIND 表示REBIND方法 REBIND // SUBSCRIBE 表示SUBSCRIBE方法 SUBSCRIBE // SEARCH 表示SEARCH方法 SEARCH // SOURCE 表示SOURCE方法 SOURCE // UNSUBSCRIBE 表示UNSUBSCRIBE方法 UNSUBSCRIBE // UNBIND 表示UNBIND方法 UNBIND // UNLINK 表示UNLINK方法 UNLINK )
type Parser ¶
type Parser struct { Method Method //记录request的method Major uint8 //主版本号 Minor uint8 //次版本号 MaxHeaderSize int32 //最大头长度 StatusCode uint16 //状态码 Upgrade bool //从http升级为别的协议, 比如websocket // contains filtered or unexported fields }
Parser http 1.1 or http 1.0解析器
func (*Parser) GetUserData ¶ added in v0.0.5
func (p *Parser) GetUserData() interface{}
GetUserData 获取SetuserData函数设置的私有变量
func (*Parser) ReadyUpgradeData ¶ added in v0.0.7
ReadyUpgradeData 如果ReadyUpgradeData为true 说明已经有Upgrade Data数据, 并且http数据已经成功解析完成
func (*Parser) SetUserData ¶ added in v0.0.3
func (p *Parser) SetUserData(d interface{})
SetUserData 的设计出发点和作用 一般情况,可以使用Setting里面函数闭包特性捕获调用者私有变量 好像提供SetUserData没有必要性 但是从 1.节约内存角度 2.数据和行为解耦的角度,提供一个Setting函数集,通过SetUserData,保存调用者私有变量 通过GetUserData拿需要的变量,还是比较爽的,不需要写一堆闭包
type Setting ¶
type Setting struct { // 解析开始 MessageBegin func(*Parser) // url 回调函数, 只有在request包才会回调 // 解析一个包时,URL回调可能会多次调用 URL func(*Parser, []byte) // 状态短语 // 解析一个包时, Status回调可能会多次调用 Status func(*Parser, []byte) // http field 回调函数 HeaderField func(*Parser, []byte) // http value 回调函数 HeaderValue func(*Parser, []byte) // http 解析完成之后的回调函数 HeadersComplete func(*Parser) // body的回调函数 Body func(*Parser, []byte) // 所有消息成功解析 MessageComplete func(*Parser) }
Setting 查阅#6 看设计变更原因
Source Files ¶
Click to show internal directories.
Click to hide internal directories.