Differences
This shows you the differences between two versions of the page.
groupdefiner [2014/08/28 15:13] rafael [Usage] |
groupdefiner [2017/07/21 03:08] |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | {{template>: | ||
- | | name=GroupDefiner | ||
- | | version=0.1 | ||
- | | accountable=Rafael Vasconcelos | ||
- | | depdency= | ||
- | }} | ||
- | |||
- | ====== 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, | ||
- | |||
- | ===== 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< | ||
- | } | ||
- | </ | ||
- | |||
- | 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. | ||
- | |||
- | * '' | ||
- | |||
- | * '' | ||
- | |||
- | 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< | ||
- | |||
- | /** | ||
- | * 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); | ||
- | } | ||
- | </ | ||
- | |||
- | Implementado o GroupSelector, | ||
- | |||
- | <file java GroupDefinerMock.java> | ||
- | public class GroupDefinerMock { | ||
- | |||
- | /** | ||
- | * @param args | ||
- | */ | ||
- | public static void main(final String[] args) { | ||
- | new GroupDefiner(new GroupSelectorMock()); | ||
- | } | ||
- | |||
- | } | ||
- | </ | ||
- | |||
- | A classe GroupSelectorMock é como segue: | ||
- | |||
- | <file java GroupSelectorMock.java> | ||
- | public class GroupSelectorMock implements GroupSelector { | ||
- | |||
- | @Override | ||
- | public int getGroupType() { | ||
- | return 10; | ||
- | } | ||
- | |||
- | @Override | ||
- | public Set< | ||
- | System.out.println(nodeMessage.toString()); | ||
- | |||
- | return new TreeSet< | ||
- | } | ||
- | |||
- | } | ||
- | </ | ||
- | ===== 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' | ||
- | ===== Implementation Details ===== | ||
- | Detalhes de implementação, | ||
- | |||
- | ===== References ===== | ||
- | Bibtex/PDF entry dos papers sobre esse componente. | ||