gpg::
  #include <snapshot_manager.h>
  Recebe e define vários dados relacionados a snapshots.
Resumo
Se o app não ativar os snapshots no momento da autenticação (consulte GameServices::Builder::EnableSnapshots), a maioria dos métodos no SnapshotManager vai falhar. 
| Tipos públicos | |
|---|---|
| CommitCallback | typedef std::function< void(const CommitResponse &)>Define um tipo de callback que recebe um  CommitResponse. | 
| FetchAllCallback | typedef std::function< void(const FetchAllResponse &)>Define um tipo de callback que recebe um  FetchAllResponse. | 
| MaxSizeCallback | typedef std::function< void(const MaxSizeResponse &)>Define um tipo de callback que recebe um  MaxSizeResponse. | 
| OpenCallback | typedef std::function< void(const OpenResponse &)>Define um tipo de callback que recebe um  OpenResponse. | 
| ReadCallback | typedef std::function< void(const ReadResponse &)>Define um tipo de callback que recebe um  ReadResponse. | 
| SnapshotSelectUICallback | typedef std::function< void(const SnapshotSelectUIResponse &)>Define um callback que pode receber um  SnapshotSelectUIResponsedeShowSelectUIOperation. | 
| Funções públicas | |
|---|---|
| Commit(const SnapshotMetadata & snapshot_metadata, const SnapshotMetadataChange & metadata_change, std::vector< uint8_t > data, CommitCallback callback) | voidConfirma de forma assíncrona os dados fornecidos para o snapshot e atualiza os metadados do snapshot usando o objeto de metadados fornecido.  | 
| CommitBlocking(const SnapshotMetadata & snapshot_metadata, const SnapshotMetadataChange & metadata_change, std::vector< uint8_t > contents) | Grava de forma síncrona os dados fornecidos no snapshot e atualiza os metadados do snapshot usando o objeto de metadados fornecido.  | 
| CommitBlocking(Timeout timeout, const SnapshotMetadata & snapshot_metadata, const SnapshotMetadataChange & metadata_change, std::vector< uint8_t > contents) | Grava de forma síncrona os dados fornecidos no snapshot e atualiza os metadados do snapshot usando o objeto de metadados fornecido.  | 
| Delete(const SnapshotMetadata & snapshot_metadata) | voidExclui o snapshot especificado.  | 
| FetchAll(FetchAllCallback callback) | voidCarrega de forma assíncrona todos os dados de snapshot do jogador conectado no momento.  | 
| FetchAll(DataSource data_source, FetchAllCallback callback) | voidCarrega de forma assíncrona todos os dados de snapshot do jogador conectado no momento.  | 
| FetchAllBlocking() | Carrega de forma síncrona todos os dados de snapshot do jogador conectado no momento, retornando diretamente o  FetchAllResponse. | 
| FetchAllBlocking(DataSource data_source) | Carrega de forma síncrona todos os dados de snapshot do jogador conectado no momento, retornando diretamente o  FetchAllResponse. | 
| FetchAllBlocking(Timeout timeout) | Carrega de forma síncrona todos os dados de snapshot do jogador conectado no momento, retornando diretamente o  FetchAllResponse. | 
| FetchAllBlocking(DataSource data_source, Timeout timeout) | Carrega de forma síncrona todos os dados de snapshot do jogador conectado no momento, retornando diretamente o  FetchAllResponse. | 
| GetMaxSize(MaxSizeCallback callback) const  | voidRecebe de forma assíncrona o tamanho máximo de dados e o tamanho máximo da imagem de capa por snapshot em bytes.  | 
| GetMaxSizeBlocking() const  | Recebe de forma síncrona o tamanho máximo de dados e o tamanho máximo da imagem de capa por snapshot em bytes, retornando diretamente o  MaxSizeResponse. | 
| GetMaxSizeBlocking(Timeout timeout) const  | Recebe de forma síncrona o tamanho máximo de dados e o tamanho máximo da imagem de capa por snapshot em bytes, retornando diretamente o  MaxSizeResponse. | 
| Open(const std::string & file_name, SnapshotConflictPolicy conflict_policy, OpenCallback callback) | voidAbre um snapshot de forma assíncrona com o nome fornecido.  | 
| Open(DataSource data_source, const std::string & file_name, SnapshotConflictPolicy conflict_policy, OpenCallback callback) | voiddata_sourceé ignorado. Em vez dela, useOpen(file_name, conflict_policy, callback).Abre um snapshot de forma assíncrona com o nome fornecido.  | 
| OpenBlocking(const std::string & file_name, SnapshotConflictPolicy conflict_policy) | Abre um snapshot de forma síncrona com o nome fornecido.  | 
| OpenBlocking(Timeout timeout, const std::string & file_name, SnapshotConflictPolicy conflict_policy) | Abre um snapshot de forma síncrona com o nome fornecido.  | 
| OpenBlocking(DataSource data_source, const std::string & file_name, SnapshotConflictPolicy conflict_policy) | Descontinuado. data_sourceé ignorado. Em vez dela, useOpenBlocking(file_name, conflict_policy).Abre um snapshot de forma síncrona com o nome fornecido.  | 
| OpenBlocking(DataSource data_source, Timeout timeout, const std::string & file_name, SnapshotConflictPolicy conflict_policy) | Descontinuado. data_sourceé ignorado. Em vez dela, useOpenBlocking(timeout, file_name, conflict_policy).Abre um snapshot de forma síncrona com o nome fornecido.  | 
| Read(const SnapshotMetadata & snapshot_metadata, ReadCallback callback) | voidLê um snapshot do disco de forma assíncrona e o copia para a memória.  | 
| ReadBlocking(const SnapshotMetadata & snapshot_metadata) | Lê um snapshot do disco de forma síncrona e o copia para a memória.  | 
| ReadBlocking(Timeout timeout, const SnapshotMetadata & snapshot_metadata) | Lê um snapshot do disco de forma síncrona e o copia para a memória.  | 
| ResolveConflict(const std::string & conflict_id, const SnapshotMetadata & snapshot_metadata, OpenCallback callback) | voidResolve assíncrona um conflito usando os dados do snapshot fornecido.  | 
| ResolveConflict(const std::string & conflict_id, const SnapshotMetadata & snapshot_metadata, const SnapshotMetadataChange & metadata_change, std::vector< uint8_t > contents, OpenCallback callback) | voidResolve de forma assíncrona um conflito usando os dados fornecidos.  | 
| ResolveConflictBlocking(const std::string & conflict_id, const SnapshotMetadata & snapshot_metadata) | Resolve um conflito de forma síncrona usando os dados do snapshot fornecido.  | 
| ResolveConflictBlocking(const std::string & conflict_id, const SnapshotMetadata & snapshot_metadata, const SnapshotMetadataChange & metadata_change, std::vector< uint8_t > contents) | Resolve um conflito de forma síncrona usando os dados fornecidos.  | 
| ResolveConflictBlocking(Timeout timeout, const std::string & conflict_id, const SnapshotMetadata & snapshot_metadata) | Resolve um conflito de forma síncrona usando os dados do snapshot fornecido.  | 
| ResolveConflictBlocking(Timeout timeout, const std::string & conflict_id, const SnapshotMetadata & snapshot_metadata, const SnapshotMetadataChange & metadata_change, std::vector< uint8_t > contents) | Resolve um conflito de forma síncrona usando os dados fornecidos.  | 
| ShowSelectUIOperation(bool allow_create, bool allow_delete, uint32_t max_snapshots, const std::string & title, SnapshotSelectUICallback callback) | voidMostra a interface do snapshot de forma assíncrona, permitindo que o jogador selecione um snapshot ou solicite um novo.  | 
| ShowSelectUIOperationBlocking(Timeout timeout, bool allow_create, bool allow_delete, uint32_t max_snapshots, const std::string & title) | Versão de bloqueio de ShowSelectUIOperation.  | 
| ShowSelectUIOperationBlocking(bool allow_create, bool allow_delete, uint32_t max_snapshots, const std::string & title) | Sobrecarga de ShowSelectUIOperationBlocking, que usa um tempo limite padrão de 10 anos.  | 
| Estruturas | |
|---|---|
| gpg:: | Armazena os dados de um snapshot atualizado, além de um status de resposta. | 
| gpg:: | Contém todos os dados de todos os snapshots, além de um status de resposta. | 
| gpg:: | Mantém o tamanho máximo para dados e imagem de capa do resumo. | 
| gpg:: | Armazena os dados de um determinado snapshot solicitado e o status da resposta. | 
| gpg:: | Lê o status da resposta e os dados de snapshot retornados de uma operação de leitura de snapshot. | 
| gpg:: | 
 | 
Tipos públicos
CommitCallback
std::function< void(const CommitResponse &)> CommitCallback
Define um tipo de callback que recebe um CommitResponse. 
Esse tipo de callback é fornecido às funções Commit(*) e ResolveConflict(*) abaixo. 
FetchAllCallback
std::function< void(const FetchAllResponse &)> FetchAllCallback
Define um tipo de callback que recebe um FetchAllResponse. 
Esse tipo de callback é fornecido às funções FetchAll(*) abaixo. 
MaxSizeCallback
std::function< void(const MaxSizeResponse &)> MaxSizeCallback
Define um tipo de callback que recebe um MaxSizeResponse. 
Esse tipo de callback é fornecido para GetMaxSize.
OpenCallback
std::function< void(const OpenResponse &)> OpenCallback
Define um tipo de callback que recebe um OpenResponse. 
Esse tipo de callback é fornecido às funções Open(*) abaixo. 
ReadCallback
std::function< void(const ReadResponse &)> ReadCallback
Define um tipo de callback que recebe um ReadResponse. 
Esse tipo de callback é fornecido às funções Read(*) abaixo. 
SnapshotSelectUICallback
std::function< void(const SnapshotSelectUIResponse &)> SnapshotSelectUICallback
Define um callback que pode receber um SnapshotSelectUIResponse de ShowSelectUIOperation. 
Funções públicas
Confirmar
void Commit( const SnapshotMetadata & snapshot_metadata, const SnapshotMetadataChange & metadata_change, std::vector< uint8_t > data, CommitCallback callback )
Grava de forma assíncrona os dados fornecidos no snapshot e atualiza os metadados do snapshot usando o objeto de metadados fornecido.
Chama o CommitCallback fornecido após a conclusão da operação. 
CommitBlocking
CommitResponse CommitBlocking( const SnapshotMetadata & snapshot_metadata, const SnapshotMetadataChange & metadata_change, std::vector< uint8_t > contents )
Grava de forma síncrona os dados fornecidos no snapshot e atualiza os metadados do snapshot usando o objeto de metadados fornecido.
CommitBlocking
CommitResponse CommitBlocking( Timeout timeout, const SnapshotMetadata & snapshot_metadata, const SnapshotMetadataChange & metadata_change, std::vector< uint8_t > contents )
Grava de forma síncrona os dados fornecidos no snapshot e atualiza os metadados do snapshot usando o objeto de metadados fornecido.
Especifique timeout em milissegundos. 
Excluir
void Delete( const SnapshotMetadata & snapshot_metadata )
Exclui o snapshot especificado.
Isso vai excluir os dados do snapshot localmente e no servidor.
FetchAll
void FetchAll( FetchAllCallback callback )
Carrega de forma assíncrona todos os dados de snapshot do jogador conectado no momento.
Chama o FetchAllCallback fornecido após a conclusão da operação. Não especificar data_source faz com que essa chamada de função seja equivalente a chamar FetchAll(DataSource data_source, FetchAllCallback callback), com data_source especificado como CACHE_OR_NETWORK.
FetchAll
void FetchAll( DataSource data_source, FetchAllCallback callback )
Carrega de forma assíncrona todos os dados de snapshot do jogador conectado no momento.
Chama o FetchAllCallback fornecido após a conclusão da operação. Especifique data_source como CACHE_OR_NETWORK ou NETWORK_ONLY. 
FetchAllBlocking
FetchAllResponse FetchAllBlocking()
Carrega de forma síncrona todos os dados de snapshot do jogador conectado no momento, retornando diretamente o FetchAllResponse. 
Especificar data_source ou timeout faz com que essa chamada de função seja equivalente a chamar FetchAllResponse FetchAllBlocking(DataSource data_source, Timeout timeout), com data_source especificado como CACHE_OR_NETWORK e timeout especificado como 10 anos. 
FetchAllBlocking
FetchAllResponse FetchAllBlocking( DataSource data_source )
Carrega de forma síncrona todos os dados de snapshot do jogador conectado no momento, retornando diretamente o FetchAllResponse. 
Especifique data_source como CACHE_OR_NETWORK ou NETWORK_ONLY. Não especificar timeout faz com que essa chamada de função seja equivalente a chamar FetchAllBlocking FetchAllResponse(DataSource data_source, Timeout timeout), com o valor especificado de data_source e timeout especificado como 10 anos. 
FetchAllBlocking
FetchAllResponse FetchAllBlocking( Timeout timeout )
Carrega de forma síncrona todos os dados de snapshot do jogador conectado no momento, retornando diretamente o FetchAllResponse. 
Especifique timeout em milissegundos. Não especificar data_source faz com que essa chamada de função seja equivalente a chamar FetchAllResponse FetchAllBlocking(DataSource data_source, Timeout timeout), com data_source especificado como CACHE_OR_NETWORK e timeout contendo o valor especificado. 
FetchAllBlocking
FetchAllResponse FetchAllBlocking( DataSource data_source, Timeout timeout )
Carrega de forma síncrona todos os dados de snapshot do jogador conectado no momento, retornando diretamente o FetchAllResponse. 
Especifique data_source como CACHE_OR_NETWORK ou NETWORK_ONLY. Especifique timeout em milissegundos. 
GetMaxSize
void GetMaxSize( MaxSizeCallback callback ) const
Recebe de forma assíncrona o tamanho máximo de dados e o tamanho máximo da imagem de capa por snapshot em bytes.
Chama o MaxSizeCallback fornecido após a conclusão da operação.
O tamanho máximo de dados por snapshot é de pelo menos 3 MB. Pode aumentar no futuro.
O tamanho máximo de dados por imagem de capa do snapshot precisa ser de pelo menos 800 KB. Pode aumentar no futuro.
GetMaxSizeBlocking
MaxSizeResponse GetMaxSizeBlocking() const
Recebe de forma síncrona o tamanho máximo de dados e o tamanho máximo da imagem de capa por snapshot em bytes, retornando diretamente o MaxSizeResponse. 
O tamanho máximo de dados por snapshot é garantido de pelo menos 3 MB. Pode aumentar no futuro.
O tamanho máximo de dados por imagem de capa do snapshot precisa ser de pelo menos 800 KB. Pode aumentar no futuro.
GetMaxSizeBlocking
MaxSizeResponse GetMaxSizeBlocking( Timeout timeout ) const
Recebe de forma síncrona o tamanho máximo de dados e o tamanho máximo da imagem de capa por snapshot em bytes, retornando diretamente o MaxSizeResponse. 
O tamanho máximo de dados por snapshot é de pelo menos 3 MB. Pode aumentar no futuro.
O tamanho máximo de dados por imagem de capa do snapshot precisa ser de pelo menos 800 KB. Pode aumentar no futuro.
Especifique timeout em milissegundos. 
Abrir
void Open( const std::string & file_name, SnapshotConflictPolicy conflict_policy, OpenCallback callback )
Abre um snapshot de forma assíncrona com o nome fornecido.
O snapshot especificado será criado se ainda não existir. Chama o OpenCallback fornecido após a conclusão da operação.
Os nomes dos snapshots precisam ter entre 1 e 100 caracteres não reservados para URL (a-z, A-Z, 0-9 ou os símbolos "-", ".", "_" ou "~").
Conflitos podem ocorrer se outro dispositivo confirmar um snapshot entre o carregamento e a confirmação de um snapshot no dispositivo atual. É necessário resolver esses conflitos. Consulte OpenResponse acima para mais detalhes sobre conflitos.
conflict_policy pode ser um dos seguintes valores:
SnapshotConflictPolicy::MANUAL: em caso de conflito, a resposta tem o estado OpenResponse::VALID_WITH_CONFLICT. É necessário resolver o conflito usando SnapshotManager::ResolveConflict. É possível ver vários conflitos em uma linha. Portanto, verifique sempre que chamar Open. Essa é a única política em que você vai encontrar o conflito. O restante é resolvido para você. Essa política garante que nenhuma mudança do usuário no estado do jogo salvo seja perdida.
SnapshotConflictPolicy::LONGEST_PLAYTIME: em caso de conflito, o snapshot com o maior valor de tempo de jogo será usado. Essa política é uma boa escolha se a duração do tempo de jogo for um indicador razoável do "melhor" jogo salvo. É necessário usar SnapshotMetadataChange::Builder::SetPlayedTime() ao salvar jogos para que essa política seja significativa.
SnapshotConflictPolicy::LAST_KNOWN_GOOD: em caso de conflito, o snapshot de base será usado. Essa política é uma escolha razoável se o jogo exigir estabilidade dos dados de snapshot. Essa política garante que apenas as gravações que não são contestadas sejam vistas pelo player, o que garante que todos os clientes sejam convergentes. Observação: anteriormente SnapshotManager::BASE_WINS
SnapshotConflictPolicy::MOST_RECENTLY_MODIFIED: em caso de conflito, o controle remoto será usado. Essa política é uma escolha razoável se o jogo tolera jogadores em vários dispositivos fazendo mudanças. Como essa política escolhe cegamente os dados mais recentes, é possível que as mudanças de um jogador sejam perdidas. Observação: anteriormente SnapshotManager::REMOTE_WINS
SnapshotConflictPolicy::HIGHEST_PROGRESSEm caso de conflito, o snapshot com o valor de progresso mais alto será usado. Em caso de empate, o último snapshot bom conhecido será escolhido. Essa política é uma boa escolha se o jogo usa o valor de progresso do snapshot para determinar o melhor jogo salvo. É necessário usar SnapshotMetadataChange::Builder::SetPlayedTime() ao salvar jogos para que essa política seja significativa. 
Abrir
void Open( DataSource data_source, const std::string & file_name, SnapshotConflictPolicy conflict_policy, OpenCallback callback )
Abre um snapshot de forma assíncrona com o nome fornecido.
          Descontinuado. 
        data_source é ignorado. Em vez dela, use Open(file_name, conflict_policy, callback). 
OpenBlocking
OpenResponse OpenBlocking( const std::string & file_name, SnapshotConflictPolicy conflict_policy )
Abre um snapshot de forma síncrona com o nome fornecido.
O snapshot especificado será criado se ainda não existir.
Consulte Abrir para mais detalhes.
OpenBlocking
OpenResponse OpenBlocking( Timeout timeout, const std::string & file_name, SnapshotConflictPolicy conflict_policy )
Abre um snapshot de forma síncrona com o nome fornecido.
O snapshot especificado será criado se ainda não existir.
Especifique timeout em milissegundos.
Consulte Abrir para mais detalhes.
OpenBlocking
OpenResponse OpenBlocking( DataSource data_source, const std::string & file_name, SnapshotConflictPolicy conflict_policy )
Abre um snapshot de forma síncrona com o nome fornecido.
          Descontinuado. 
        data_source é ignorado. Em vez dela, use OpenBlocking(file_name, conflict_policy). 
OpenBlocking
OpenResponse OpenBlocking( DataSource data_source, Timeout timeout, const std::string & file_name, SnapshotConflictPolicy conflict_policy )
Abre um snapshot de forma síncrona com o nome fornecido.
          Descontinuado. 
        data_source é ignorado. Em vez dela, use OpenBlocking(timeout, file_name, conflict_policy). 
Ler
void Read( const SnapshotMetadata & snapshot_metadata, ReadCallback callback )
Lê um snapshot do disco de forma assíncrona e o copia para a memória.
Os dados são transmitidos por valor para facilitar a modificação. Cada chamada para essa função resulta em uma leitura completa. Isso significa que normalmente é melhor ler um snapshot apenas uma vez. Chama o ReadCallback fornecido após a conclusão da operação. 
ReadBlocking
ReadResponse ReadBlocking( const SnapshotMetadata & snapshot_metadata )
Lê um snapshot do disco de forma síncrona e o copia para a memória.
Os dados são transmitidos por valor para facilitar a modificação. Cada chamada para essa função resulta em uma leitura completa. Isso significa que normalmente é melhor ler um snapshot apenas uma vez. Se timeout não for especificado, essa chamada de função será equivalente a chamar ReadBlocking ReadBlocking(Timeout timeout, const SnapshotMetadata& snapshot_metadata), com timeout especificado como 10 anos. 
ReadBlocking
ReadResponse ReadBlocking( Timeout timeout, const SnapshotMetadata & snapshot_metadata )
Lê um snapshot do disco de forma síncrona e o copia para a memória.
Os dados são transmitidos por valor para facilitar a modificação. Cada chamada para isso faz uma leitura completa, então normalmente apenas um snapshot é lido. Especifique timeout em milissegundos. 
ResolveConflict
void ResolveConflict( const std::string & conflict_id, const SnapshotMetadata & snapshot_metadata, OpenCallback callback )
Resolve assíncrona um conflito usando os dados do snapshot fornecido.
Isso vai substituir os dados no servidor pelo snapshot especificado. É possível que essa operação resulte em um conflito, caso em que a resolução precisa ser repetida.
Chamar esse método com um snapshot que já foi confirmado ou que não foi aberto por Open vai falhar com o status BaseStatus::ERROR_INTERNAL.
Chama o OpenCallback fornecido após a conclusão da operação. 
ResolveConflict
void ResolveConflict( const std::string & conflict_id, const SnapshotMetadata & snapshot_metadata, const SnapshotMetadataChange & metadata_change, std::vector< uint8_t > contents, OpenCallback callback )
Resolve de forma assíncrona um conflito usando os dados fornecidos.
Isso vai substituir os dados no servidor pelas mudanças de metadados especificadas e contents. É possível que essa operação resulte em um conflito, caso em que a resolução precisa ser repetida.
Os valores que não forem incluídos na mudança de metadados serão resolvidos para a versão atual no servidor.
O tamanho total do contents não pode exceder o maxDataSize fornecido por GetMaxSize.
Chamar esse método com um snapshot que já foi confirmado ou que não foi aberto por Open vai falhar com o status BaseStatus::ERROR_INTERNAL.
Chama o OpenCallback fornecido após a conclusão da operação. 
ResolveConflictBlocking
OpenResponse ResolveConflictBlocking( const std::string & conflict_id, const SnapshotMetadata & snapshot_metadata )
Resolve um conflito de forma síncrona usando os dados do snapshot fornecido.
Isso vai substituir os dados no servidor pelo snapshot especificado. É possível que essa operação resulte em um conflito, caso em que a resolução precisa ser repetida.
Chamar esse método com um snapshot que já foi confirmado ou que não foi aberto por Open vai falhar com o status BaseStatus::ERROR_INTERNAL.
ResolveConflictBlocking
OpenResponse ResolveConflictBlocking( const std::string & conflict_id, const SnapshotMetadata & snapshot_metadata, const SnapshotMetadataChange & metadata_change, std::vector< uint8_t > contents )
Resolve um conflito de forma síncrona usando os dados fornecidos.
Isso vai substituir os dados no servidor pelas mudanças de metadados especificadas e contents. É possível que essa operação resulte em um conflito, caso em que a resolução precisa ser repetida.
Os valores que não forem incluídos na mudança de metadados serão resolvidos para a versão atual no servidor.
O tamanho total do contents não pode exceder o maxDataSize fornecido por GetMaxSize.
Chamar esse método com um snapshot que já foi confirmado ou que não foi aberto por Open vai falhar com o status BaseStatus::ERROR_INTERNAL.
ResolveConflictBlocking
OpenResponse ResolveConflictBlocking( Timeout timeout, const std::string & conflict_id, const SnapshotMetadata & snapshot_metadata )
Resolve um conflito de forma síncrona usando os dados do snapshot fornecido.
Isso vai substituir os dados no servidor pelo snapshot especificado. É possível que essa operação resulte em um conflito, caso em que a resolução precisa ser repetida.
Chamar esse método com um snapshot que já foi confirmado ou que não foi aberto por Open vai falhar com o status BaseStatus::ERROR_INTERNAL.
Especifique timeout em milissegundos. 
ResolveConflictBlocking
OpenResponse ResolveConflictBlocking( Timeout timeout, const std::string & conflict_id, const SnapshotMetadata & snapshot_metadata, const SnapshotMetadataChange & metadata_change, std::vector< uint8_t > contents )
Resolve um conflito de forma síncrona usando os dados fornecidos.
Isso vai substituir os dados no servidor pelas mudanças de metadados especificadas e contents. É possível que essa operação resulte em um conflito, caso em que a resolução precisa ser repetida.
Os valores que não forem incluídos na mudança de metadados serão resolvidos para a versão atual no servidor.
O tamanho total do contents não pode exceder o maxDataSize fornecido por GetMaxSize.
Chamar esse método com um snapshot que já foi confirmado ou que não foi aberto por Open vai falhar com o status BaseStatus::ERROR_INTERNAL.
Especifique timeout em milissegundos. 
ShowSelectUIOperation
void ShowSelectUIOperation( bool allow_create, bool allow_delete, uint32_t max_snapshots, const std::string & title, SnapshotSelectUICallback callback )
Mostra a interface do snapshot de forma assíncrona, permitindo que o jogador selecione um snapshot ou solicite um novo.
Após a conclusão, o snapshot selecionado ou a nova solicitação de snapshot é retornado pelo SnapshotSelectUICallback. 
ShowSelectUIOperationBlocking
SnapshotSelectUIResponse ShowSelectUIOperationBlocking( Timeout timeout, bool allow_create, bool allow_delete, uint32_t max_snapshots, const std::string & title )
Versão de bloqueio de ShowSelectUIOperation.
Permite que o autor da chamada especifique um tempo limite em ms. Depois que o tempo especificado expirar, a função vai retornar ERROR_TIMEOUT. 
ShowSelectUIOperationBlocking
SnapshotSelectUIResponse ShowSelectUIOperationBlocking( bool allow_create, bool allow_delete, uint32_t max_snapshots, const std::string & title )
Sobrecarga de ShowSelectUIOperationBlocking, que usa um tempo limite padrão de 10 anos.
