in internal/fake/net_conn.go [438:462]
func decodeFrame(b []byte) (uint16, frames.FrameBody, error) {
if len(b) > 3 && b[0] == 'A' && b[1] == 'M' && b[2] == 'Q' && b[3] == 'P' {
return 0, &AMQPProto{}, nil
}
buf := buffer.New(b)
header, err := frames.ParseHeader(buf)
if err != nil {
return 0, nil, err
}
bodySize := int64(header.Size - frames.HeaderSize)
if bodySize == 0 {
// keep alive frame
return 0, &KeepAlive{}, nil
}
// parse the frame
b, ok := buf.Next(bodySize)
if !ok {
return 0, nil, err
}
fr, err := frames.ParseBody(buffer.New(b))
if err != nil {
return 0, nil, err
}
return header.Channel, fr, nil
}