本文整理汇总了Golang中github.com/andres-erbsen/chatterbox/transport.Conn.ReadFrame方法的典型用法代码示例。如果您正苦于以下问题:Golang Conn.ReadFrame方法的具体用法?Golang Conn.ReadFrame怎么用?Golang Conn.ReadFrame使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类github.com/andres-erbsen/chatterbox/transport.Conn
的用法示例。
在下文中一共展示了Conn.ReadFrame方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: receiveProtobuf
func receiveProtobuf(conn *transport.Conn, inBuf []byte, t *testing.T) *proto.ServerToClient {
response := new(proto.ServerToClient)
conn.SetDeadline(time.Now().Add(time.Second))
num, err := conn.ReadFrame(inBuf)
handleError(err, t)
unpadMsg := proto.Unpad(inBuf[:num])
if err := response.Unmarshal(unpadMsg); err != nil {
t.Error(err)
}
if response.Status == nil {
t.Error("Server returned nil status.")
}
if *response.Status == proto.ServerToClient_PARSE_ERROR {
t.Error("Server threw a parse error.")
}
return response
}
示例2: ReceiveProtobuf
func ReceiveProtobuf(conn *transport.Conn, inBuf []byte) (*proto.ServerToClient, error) {
response := new(proto.ServerToClient)
conn.SetDeadline(time.Now().Add(time.Hour))
num, err := conn.ReadFrame(inBuf)
if err != nil {
return nil, err
}
unpadMsg := proto.Unpad(inBuf[:num])
if err := response.Unmarshal(unpadMsg); err != nil {
return nil, err
}
if response.Status == nil {
return nil, errors.New("Server returned nil status.")
}
if *response.Status != proto.ServerToClient_OK {
return nil, errors.New("Server did not return OK")
}
return response, nil
}
示例3: readClientCommands
// readClientCommands reads client commands from a connnection and sends them
// to channel commands. On error, the error is sent to channel disconnect and
// both channels (but not the connection are closed).
// commands is a TWO-WAY channel! the reader must reach return each cmd after
// interpreting it, readClientCommands will call cmd.Reset() and reuse it.
func (server *Server) readClientCommands(conn *transport.Conn,
commands chan *proto.ClientToServer, disconnected chan error) {
defer server.wg.Done()
defer close(commands)
defer close(disconnected)
inBuf := make([]byte, proto.SERVER_MESSAGE_SIZE)
cmd := new(proto.ClientToServer)
for {
num, err := conn.ReadFrame(inBuf)
if err != nil {
disconnected <- err
return
}
unpadMsg := proto.Unpad(inBuf[:num])
if err := cmd.Unmarshal(unpadMsg); err != nil {
disconnected <- err
return
}
commands <- cmd
cmd = <-commands
cmd.Reset()
}
}