textproto
最后更新于:2022-04-02 02:45:12
[TOC]
## 概述
实现了对基于文本的请求/响应协议的通用支持
## 语法
### Func
```
func CanonicalMIMEHeaderKey(s string) string
func TrimBytes(b []byte) []byte
func TrimString(s string) string
```
### Type
```
type Conn
func Dial(network, addr string) (*Conn, error)
func NewConn(conn io.ReadWriteCloser) *Conn
func (c *Conn) Close() error
func (c *Conn) Cmd(format string, args ...interface{}) (id uint, err error)
type MIMEHeader
func (h MIMEHeader) Add(key, value string)
func (h MIMEHeader) Del(key string)
func (h MIMEHeader) Get(key string) string
func (h MIMEHeader) Set(key, value string)
func (h MIMEHeader) Values(key string) []string
type Pipeline
func (p *Pipeline) EndRequest(id uint)
func (p *Pipeline) EndResponse(id uint)
func (p *Pipeline) Next() uint
func (p *Pipeline) StartRequest(id uint)
func (p *Pipeline) StartResponse(id uint)
type Reader
func NewReader(r *bufio.Reader) *Reader
func (r *Reader) DotReader() io.Reader
func (r *Reader) ReadCodeLine(expectCode int) (code int, message string, err error)
func (r *Reader) ReadContinuedLine() (string, error)
func (r *Reader) ReadContinuedLineBytes() ([]byte, error)
func (r *Reader) ReadDotBytes() ([]byte, error)
// 检测到 "." 则结束
func (r *Reader) ReadDotLines() ([]string, error)
func (r *Reader) ReadLine() (string, error)
func (r *Reader) ReadLineBytes() ([]byte, error)
func (r *Reader) ReadMIMEHeader() (MIMEHeader, error)
func (r *Reader) ReadResponse(expectCode int) (code int, message string, err error)
type Writer
func NewWriter(w *bufio.Writer) *Writer
func (w *Writer) DotWriter() io.WriteCloser
func (w *Writer) PrintfLine(format string, args ...interface{}) error
```
## 实例
### Reader
```
r := textproto.NewReader(bufio.NewReader(os.Stdin))
for{
line, err := r.ReadLine()
if err != nil {
log.Fatal(err)
}
fmt.Printf("%+v\n", line)
}
```
';