Realm C++ SDK Versão C++ v2.2.0
|
#include <websocket.hpp>
Aulas | |
estrutura, estrutura | temporizador |
Tipos públicos | |
Usando | FunctionHandler = std::function< void(status)> |
Typedef do manipulador de função. | |
Usando | sync_timer = std::unique_ptr< sync_socket_provider::timer > |
Outros typedefs de classe . | |
Funções de membro público | |
virtual | ~sync_socket_provider ()=padrão |
virtual std::unique_ptr< websocket_interface > | connect (std::unique_ptr< websocket_observer > observador, websocket_endpoint &&endpoint)=0 |
vazio virtual | post (FunctionHandler &&handler)=0 |
virtual sync_timer | create_timer (std::chrono::atraso de milissegundos, FunctionHandler &&handler)=0 |
Interface do Sync Socket Provider que fornece o loop de eventos e a fábrica do WebSocket usados pelo SyncClient.
Todas as operações de chamada de resposta de resposta e de evento no SyncClient devem ser concluídas na ordem em que foram emitidas (via post() ou timer) para o loop de eventos e não podem ser executadas em paralelo. cabe à implementação do loop de eventos personalizado determinar se eles são executados no mesmo thread ou em um pool de threads, desde que seja garantido que as funções do manipulador de chamada de resposta de chamada sejam processadas em ordem e não executadas simultaneamente.
A implementação de um sync_socket_provider deve oferecer suporte às seguintes operações que enviam funções de manipulador (por meio do cliente de sincronização ) no loop de eventos:
O loop de eventos não precisa ser um único thread, desde que os seguintes requisitos sejam atendidos:
O sync_socket_provider também fornece uma interface WebSocket para conexão ao servidor por meio de uma conexão WebSocket.
|
virtualdefault |
A implementação do loop de eventos deve garantir que o loop de eventos seja interrompido e liberado quando o objeto for destruído. Se o loop de eventos for processado por um thread, o thread deverá ser unido como parte desta operação.
|
virtual puro |
Crie um novo websocket apontado para o servidor indicado pelo endpoint e conecte-se ao servidor. Quaisquer eventos que ocorram durante a execução do websocket chamarão diretamente para os manipuladores fornecidos pelo observador. O web_socket_observer garante que o objeto WebSocket será fechado/destruído antes que o observador seja encerrado/destruído.
Implementado no Realm::network::default_socket_provider.
|
virtual puro |
Crie e registre um novo temporizador cuja função de manipulador será publicada no loop de eventos quando o atraso fornecido expirar.
Este é um temporizador único e a classe Timer retornada torna-se inválida quando o temporizador expira. Um novo temporizador precisará ser criado para esperar novamente.
atrasar | A duração de espera em ms antes que o temporizador expire. |
manipulador | A função do manipulador a ser chamada no loop de eventos quando o temporizador expirar. |
Implementado no Realm::network::default_socket_provider.
|
virtual puro |
Envie uma função de manipulador para ser executada pelo loop de eventos (thread).
Registre a função de manipulador especificada a ser enfileirada no loop de eventos para execução assíncrona imediata. O manipulador especificado será executado por uma expressão no formulário handler()
. Se o objeto do manipulador for móvel, ele nunca será copiado. Caso contrário, será copiada conforme necessário.
Esta função é segura para threads e pode ser chamada por qualquer thread. Ele também pode ser chamado a partir de outra função de manipulador post() .
O manipulador nunca será chamado como parte da execução de post(). Se post() for chamado em um thread separado do loop de eventos, o manipulador poderá ser chamado antes que post() retorne.
As funções de manipulador adicionadas por meio de post() devem ser executadas na ordem em que são adicionadas. Mais precisamente, se post() for chamado duas vezes para adicionar dois manipuladores, A e B, e a execução de post(A) terminar antes do início da execução de post(B), então A tem garantido para executar antes de B.
manipulador | A função do manipulador a ser enfileirada no loop de eventos. |
Implementado no Realm::network::default_socket_provider.