{{template>:doctable | name=Gateway | version=1.0 | accountable=Rafael Vasconcelos | depdency= [[UDI]], [[ClientLib]] }} ====== Gateway ====== O Gateway (GW) é um serviço do SDDL Core Network (executa em um nó do cluster/nuvem) que é responsável por gerenciar conexões MR-UDP com vários nós móveis. Suas tarefas incluem a notificação de conexões e desconexões de nós móveis, e a transcodificação de mensagens de aplicação difundidas no domínio DDS (SDDL Core) para o MR-UDP e o encaminhamento para o nó móvel correspondente, bem como a transcodificação inversa, do MR-UDP para o tópico DDS de aplicação. Além disso, o Gateway mantém os mapeamentos de nós para grupos, a fim de encaminhar mensagens groupcast para os nós membros do grupo. Devido às propriedades Peer-to-Peer e do desempenho escalável da comunicação no DDS, pode-se usar vários Gateways em paralelo, cada um atendendo a um sub-conjunto dos nós móveis, conferindo assim, escalabilidade na comunicação de/para nós móveis. ===== Usage ===== O Gateway é um serviço de rede e por este motivo não apresenta uma interface rica para o desenvolvedor. O Gateway uma vez instanciado, não precisa mais ter uma interação direta com o programador via API Java. A partir deste momento, toda a interação é feita com o Gateway via mensagens escritas no domínio DDS (SDDL Core). Abaixo é mostrado um exemplo de como subir um Gateway. É preciso informar o IP público, porta e o produto DDS - ou DDS Vendor - utilizado {OpenSplice, CoreDX, RTI}. public class Hello { public static void main(String args[]) { //Call syntax: $GatewayTest UUID id = UUID.randomUUID(); String strDDSVendor = args[2]; SupportedDDSVendors ddsVendor = UniversalDDSLayerFactory.convertStrToSupportedDDSVendor(strDDSVendor); new Gateway(Integer.parseInt(args[1]), args[0], id, false, ddsVendor); System.out.println("Gateway started..."); System.out.println("Gateway MR-UDP IP: " + args[0] + ":" + args[1]); } } Há ainda outras opções para instanciar o Gateway informando se ele precisa usar Ordenação Total no Groupcast e se será utilizado algum Plugin. O Plugin é uma classe que implementa a interface Plugin. Um plugin permite ao desenvolvedor alterar o objeto enviado pelo Mobile Node que é encaminhado pelo Gateway. Esta é uma funcionalidade não é utilizada pela maioria dos desenvolvedores. ===== Architecture ===== Descrever a arquitetura do componente. As principais classes e relações que sustentam o componente. * ''getService()'' Returns Service * ''myMethod()'' Returns Service ===== Implementation Details ===== Detalhes de implementação, por exemplo, descrevendo as principais rotinas e os seus fluxos de execução, por onde o desenvolvedor deveria olhar para modificar esse componente. ===== References ===== Bibtex/PDF entry dos papers sobre esse componente.