本文整理汇总了Golang中net/textproto.Conn.StartResponse方法的典型用法代码示例。如果您正苦于以下问题:Golang Conn.StartResponse方法的具体用法?Golang Conn.StartResponse怎么用?Golang Conn.StartResponse使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类net/textproto.Conn
的用法示例。
在下文中一共展示了Conn.StartResponse方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: cmd
func cmd(c *textproto.Conn, expectedCode int, format string, args ...interface{}) error {
id, err := c.Cmd(format, args...)
if err != nil {
return err
}
c.StartResponse(id)
_, _, err = c.ReadResponse(expectedCode)
c.EndResponse(id)
return err
}
示例2: CloseConn
func CloseConn(conn *textproto.Conn) error {
id, err := conn.Cmd("close")
if err != nil {
return err
}
conn.StartResponse(id)
conn.EndResponse(id)
err = conn.Close()
if err != nil {
return err
}
return nil
}
示例3: writeIdleResponse
func (s *server) writeIdleResponse(p *textproto.Conn, id uint, quit chan bool, subsystems []string) {
p.StartResponse(id)
defer p.EndResponse(id)
req := &idleRequest{
endTokenc: make(chan uint),
eventc: make(chan string, 1),
subsystems: subsystems,
}
s.idleStartc <- req
token := <-req.endTokenc
select {
case name := <-req.eventc:
p.PrintfLine("changed: %s", name)
p.PrintfLine("OK")
<-quit
case <-quit:
p.PrintfLine("OK")
}
s.idleEndc <- token
}
示例4: playScriptAgainst
// playScriptAgainst an existing connection, does not handle server greeting
func playScriptAgainst(t *testing.T, c *textproto.Conn, script []scriptStep) error {
for i, step := range script {
id, err := c.Cmd(step.send)
if err != nil {
return fmt.Errorf("Step %d, failed to send %q: %v", i, step.send, err)
}
c.StartResponse(id)
code, msg, err := c.ReadResponse(step.expect)
if err != nil {
err = fmt.Errorf("Step %d, sent %q, expected %v, got %v: %q",
i, step.send, step.expect, code, msg)
}
c.EndResponse(id)
if err != nil {
// Return after c.EndResponse so we don't hang the connection
return err
}
}
return nil
}
示例5: handleConnection
func (s *server) handleConnection(p *textproto.Conn) {
id := p.Next()
p.StartRequest(id)
p.EndRequest(id)
p.StartResponse(id)
p.PrintfLine("OK MPD gompd0.1")
p.EndResponse(id)
endIdle := make(chan bool)
inIdle := false
defer p.Close()
for {
id := p.Next()
p.StartRequest(id)
req, err := s.readRequest(p)
if err != nil {
return
}
// We need to do this inside request because idle response
// may not have ended yet, but it will end after the following.
if inIdle {
endIdle <- true
}
p.EndRequest(id)
if req.typ == idle {
inIdle = true
go s.writeIdleResponse(p, id, endIdle, req.args[1:])
// writeIdleResponse does it's own StartResponse/EndResponse
continue
}
p.StartResponse(id)
if inIdle {
inIdle = false
}
switch req.typ {
case noIdle:
case commandListOk:
var ok, closed bool
ok = true
for _, args := range req.cmdList {
ok, closed = s.writeResponse(p, args, "list_OK")
if closed {
return
}
if !ok {
break
}
}
if ok {
p.PrintfLine("OK")
}
case simple:
if _, closed := s.writeResponse(p, req.args, "OK"); closed {
return
}
}
p.EndResponse(id)
}
}