groupdefiner

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

groupdefiner [2014/08/28 15:12]
rafael [Usage]
groupdefiner [2017/07/21 03:08]
Line 1: Line 1:
-{{template>:doctable 
-    | name=GroupDefiner 
-    | version=0.1 
-    | accountable=Rafael Vasconcelos 
-    | depdency=  [[UDI]], [[ClientLib]] 
-}} 
- 
-====== GroupDefiner ====== 
-O GroupDefiner é um serviço do SDDL Core responsável por gerenciar a pertinência de nós a grupos, e notificar todos os Gateways sobre qualquer mudança nos membros dos grupos. Em particular, o GroupDefiner suporta grupos dinâmicos de nós, cuja pertinência é definida por algum atributo da mensagem de aplicação (ou de uma informacão de conetxto) enviada pelo nó, como por exemplo sua posição corrente. Naturalmente, também é possível definir grupos fixos de nós móveis e/ou do SDDL Core. Mensagens group-cast são então definidas por um Group UUID. 
- 
-===== Usage  ===== 
-O GroupDefiner possui apenas um construtor, onde deve ser passado uma implementação do GroupSelector. A interface GroupSelector é mostrada abaixo. 
- 
-<file java GroupSelector.java> 
-public interface GroupSelector { 
-  /** 
-   * Method used by GroupDefiner to obtains the GroupType of the Group Selection Module 
-    
-   * @return The GroupType of the Group Selection Module 
-   */ 
-  public int getGroupType(); 
- 
-  /** 
-   * Processes the Mobile Node´s group membership using the Context Update (CxtU) message 
-    
-   * @param nodeMessage Context Update (CxtU) message produced by Mobile Node 
-   * @return A set that holds the Mobile Node´s group membership 
-   */ 
-  public Set<Integer> processGroups(Message nodeMessage); 
-} 
-</file> 
- 
-O ID de um grupo é uma chave composta que possui um inteiro representando o tipo do grupo e outro inteiro que representa o grupo. Desta forma é possível criar tipos diferentes de grupos. 
- 
-  * ''getGroupType()'' Retorna o tipo do grupo 
- 
-  * ''processGroups()'' Retorna os grupos de um MN  
- 
-Há ainda a opção de um GroupSelector que possui, além dos métodos acima, o conceito de grupos proibidos. Um grupo proibido pode ser mapeado, por exemplo, como áreas que o MN não deve entrar. O GroupSelector com suporte a grupos proibidos é mostrado abaixo. 
- 
-<file java GroupSelector.java> 
-public interface GroupSelectorSupportingProhibitedGroups extends GroupSelector { 
- 
-  /** 
-   * Processes the Mobile Node´s prohibited group membership using the Context Update (CxtU) message 
-    
-   * @param nodeMessage Context Update (CxtU) message produced by Mobile Node 
-   * @return A set that holds the Mobile Node´s group membership 
-   */ 
-  public Set<Integer> processProhibitedGroups(Message nodeMessage); 
- 
-  /** 
-   * Tests if a group is a prohibited group 
-    
-   * @param groupId 
-   * @return Return if a group is a prohibited group or not 
-   */ 
-  public boolean isProhibitedGroup(int groupId); 
-} 
-</file> 
- 
-Implementado o GroupSelector, é simples utilizar o GroupDefiner. Basta apenas instanciar o GroupDefiner informando a implementação do GroupSelector. Um HelloWorld é mostrado abaixo. 
- 
-<file java GroupDefinerMock.java> 
-public class GroupDefinerMock { 
- 
-  /** 
-   * @param args 
-   */ 
-  public static void main(final String[] args) { 
-    new GroupDefiner(new GroupSelectorMock()); 
-  } 
- 
-} 
-</file> 
- 
-A classe GroupSelectorMock é como segue: 
- 
-<file java GroupSelectorMock.java> 
-public class GroupSelectorMock implements GroupSelector { 
- 
-  @Override 
-  public int getGroupType() { 
-    return 10; 
-  } 
- 
-  @Override 
-  public Set<Integer> processGroups(final Message nodeMessage) { 
-    System.out.println(nodeMessage.toString()); 
- 
-    return new TreeSet<Integer>(); 
-  } 
- 
-} 
-</file> 
-===== Architecture ===== 
-The GroupDefiner internally consists of a generic message processing part, and an application-specific part, the //Group selection module//. The generic part is responsible for reading any application message disseminated in the DDS domain, recording the current groups associated with the message and handing the message's application object to the Group Selection module. This module will execute an application-specific group mapping algorithm in order to determine all the  context-defined group(s) that the message sender is in, according to the received object's type and attributes. e.g. if a data value is inside a certain interval or within a 2D region. This list of detected groups  is then handed back to the generic processing part of GroupDefiner, which will calculate the G-diff message and write it to the GroupAdvertisement topic in the DDS domain 
-===== 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. 
  
  • groupdefiner.txt
  • Last modified: 2017/07/21 03:08
  • (external edit)