本文整理匯總了Golang中github.com/degdb/degdb/protocol.Message.ResponseRequired方法的典型用法代碼示例。如果您正苦於以下問題:Golang Message.ResponseRequired方法的具體用法?Golang Message.ResponseRequired怎麽用?Golang Message.ResponseRequired使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類github.com/degdb/degdb/protocol.Message
的用法示例。
在下文中一共展示了Message.ResponseRequired方法的1個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1: Request
// Request sends a message on a connection and waits for a response.
// Returns error network.Timeout if no response in 10 seconds.
func (c *Conn) Request(m *protocol.Message) (*protocol.Message, error) {
m.Id = uint64(rand.Int63())
m.ResponseRequired = true
if err := c.Send(m); err != nil {
return nil, err
}
timeout := make(chan bool, 1)
go func() {
time.Sleep(10 * time.Second)
timeout <- true
}()
resp := make(chan *protocol.Message, 1)
c.expectedMessages[m.Id] = resp
var msg *protocol.Message
var err error
select {
case msg = <-resp:
case <-timeout:
err = Timeout
}
delete(c.expectedMessages, m.Id)
return msg, err
}