udi

Differences

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

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Next revision Both sides next revision
udi [2014/09/09 19:05]
endler [Usage]
udi [2015/03/31 10:47]
rafael [Usage]
Line 23: Line 23:
  
   this.dds.createDataReader(groupDefinerDDSListener, messageTopic);   this.dds.createDataReader(groupDefinerDDSListener, messageTopic);
 +  this.dds.createDataWriter(messageTopic);
 </code> </code>
 E o listener do exemplo acima recebe objetos do tipo //Message// e precisa implementar o callback //onNewData//, como segue: E o listener do exemplo acima recebe objetos do tipo //Message// e precisa implementar o callback //onNewData//, como segue:
Line 36: Line 37:
 } }
 </code> </code>
 +
 +Para utilizar os Extensible and Dynamic Topic Types for DDS (DDS-XTypes), é bem simples. Precisa ser criado o tópico, isto é, o seu nome e atributos, o qual é armazenado no Metadata Sharing Service. Feita a criação do tópico, os publicados e assinantes podem usar o tópico dinâmico.
 +
 +Um tópico dinâmico é representação por uma estrutura do tipo chave-valor, onde a chave é o nome do atributo e o valor é o valor que o atributo terá.
 +
 +O código abaixo inicializa a UDI usando RTI no domínio "_domainId".
 +
 +<code java>
 +      this.dds = UniversalDDSLayerFactory.getInstance(SupportedDDSVendors.RTI);
 +      this.dds.createParticipant(this._domainId);
 +</code>
 +
 +Para verificar se o tópico dinâmico "SDDLLocation" já foi criado, recuperar sua representação, assinar o tópico e por fim enviar um dado do tipo SDDLLocation, utiliza-se o seguinte código.
 +
 +<code java>
 +    private void startApplication()
 +    {
 +        _metadata = this.dds.getMetadataByName("SDDLLocation");
 +        
 +        if(_metadata == null)
 +        {
 +            System.out.println("Could not retrieve the specified metadata");
 +            return;
 +        }
 +        
 +        System.out.println("Retrieved metadata: " + _metadata.toString());
 +                
 +        // Creates a (or uses an existing) dynamic topic with this Metadata
 +        DynamicDDSTopic dynamicDDSTopic = dds.createDynamicDDSTopic(_metadata);
 +        dynamicDDSTopic.subscribe(this);
 +    }
 +     
 +    @Override
 +    public void onNewDynamicData(String topicName, HashMap<String, Object> hashMapRepresentation)
 +    {
 +        System.out.println("TopicName : " + topicName + "\nValues: " + hashMapRepresentation.toString());
 +    }
 +    
 +    private void writeData()
 +    }
 +        HashMap<String, Object> newInstance = _metadata.getHashMapInstanceRepresentation();
 +
 +        newInstance.put("uuid", "1234"); //"String", 
 +
 +        dynamicDDSTopic.publish(newInstance);
 +    }
 +</code>
 +
 +
 +Para criar um novo tópico dinâmico, pode-se utilizar o seguinte código:
 +
 +<code java>
 +   
 +    private void createEntities()
 +    {
 +        Metadata newMetadata = createSDDLLocationMetadata();
 +        
 +        System.out.println("Created metadata: " + "\n" + newMetadata.toString());
 +                
 +        // Adds the entity on the service
 +        //_metadataSharingService.addMetadata(newMetadata);
 +        dds.addMetadata(newMetadata);
 +    }
 +
 +    private static Metadata createSDDLLocationMetadata()
 +    {
 +        String  name    = "SDDLLocation";
 +        String  kind    = "EventType";
 +        String  info    = "Sent by mobile nodes with location data.";
 +        boolean enabled = true;
 +        
 +        Metadata newMetadata = new Metadata(name, kind, info, enabled);
 +        
 +        ArrayList<MetadataMember> members = new ArrayList<MetadataMember>();
 +        
 +        MetadataMember stringUUIDMember     = new MetadataMember("uuid", "String", 1024, true, "The UUID of the monitored node that sent the SDDLLocation.");
 +        members.add(stringUUIDMember);
 +        
 +        //...
 +        
 +        // Adds all the members to the new entity
 +        newMetadata.addMembers(members);
 +        
 +        return newMetadata;
 +    }
 +</code>
 +
 +Para criar o listener do tópico dinâmico, a classe deve implementar a interface "DynamicDataListener", que contém o método "onNewDynamicData".
  
 Mais detalhes podem ser obtidos do UDI Developer Guide ({{:udi_developer_guide.pdf|}}) Mais detalhes podem ser obtidos do UDI Developer Guide ({{:udi_developer_guide.pdf|}})
 ===== Architecture ===== ===== Architecture =====
 Descrever a arquitetura do componente. As principais classes e relações que sustentam o componente. Descrever a arquitetura do componente. As principais classes e relações que sustentam o componente.
-  * ''getService()'' Returns Service  + 
- +
-  * ''myMethod()'' Returns Service  +
 ===== Implementation Details ===== ===== 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. 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.
  • udi.txt
  • Last modified: 2017/07/21 03:08
  • (external edit)