Home
1 Manual de Utilização - PUC-Rio
Contents
1. myTable myNumber 1 function MyBase myPrintMethod j print self myNumber end local MyFacetIimplementation oo class myProperty propValue function MyFacetImplementation myMethod j do something here end local MyTemplate comp Template IComponent port Facer IReceptacles port Ffacer IMetaInterface port Facert MyFacet port Facert MyReceptacle port Receptacle local MyFactory MyTemplate MyBase IComponent scs Component IReceptacles scs Receptacles IMetaInterface scs MetaInterface MyFacet MyFacet Implementation Aqui inclui se uma observa o Devido ao funcionamento interno do pacote LOOP caso o desenvolvedor deseje que uma classe tenha acesso tabela base do componente dever criar na classe um campo context com qualquer valor diferente de nil Desta forma o LOOP se encarregar de transformar este campo context numa refer ncia tabela base que poder ser acessada de dentro da classe atrav s do uso de self context A fun o de cria o de componentes da API SCS newComponent no m dulo Lua scs core base que veremos mais frente j se encarrega de realizar este processo para todas as classes de facetas fornecidas Assim dentro do m todo myM ethod do exemplo acima poder amos acessar myProperty
2. e shutdown da faceta IComponent que inicialmente n o fazem nada Redefinir um m todo extremamente simples Basta criar a nova implementa o em uma fun o qualquer e dentro do c digo da f brica trocar o m todo da nova inst ncia pelo novo Por exemplo function newlmplementation do something here end local SCSFactory function SCSFactory create args local instance scs new Component self factory self descriptions instance myM ethod newlImplementation end 1 3 Implanta o A implanta o da arquitetura do SCS Lua constitui se no m nimo de um n de execu o Este pode ser utilizado em conjunto a um cont iner de componentes Lua e um reposit rio de componentes Lua e ou a um cont iner de componentes Java Apesar de todos serem componentes SCS a carga do n de execu o e do cont iner diferem Generated by Foxit PDF Creator O Foxit Software http www foxitsoftware com For evaluation only um pouco da dos demais componentes Uma explica o mais detalhada das vers es Lua ser apresentada a seguir 1 3 1 N de Execu o Para executar este componente v at lt install dir gt src lua scs execution node e execute o arquivo ExecutionNode lua Se houver um arquivo de inicializa o no diret rio definido no arquivo de propriedades Properties txt este ser executado logo em seguida na inicializa o do n de execu o Este arquivo serve para realizar tarefas iniciais geralm
3. da seguinte forma self myProperty Generated by Foxit PDF Creator O Foxit Software http www foxitsoftware com For evaluation only E no mesmo m todo poderiamos acessar myNumber da classe M yBase que serve de base para o componente como um todo da seguinte forma self context myNumber Criada a f brica precisamos definir as descri es de facetas e recept culos seguindo os arquivos de defini o IDL utilizados Exemplo local descriptions qo 2 descriptions IComponent name IComponent 3 interface name IDL aa ia g 0 4 descriptions HyClassInter face name MyCla aaien 5 interface name Para que o componente possa ser carregado pelo cont iner de componentes Lua devemos ainda devolver uma f brica SCS no final de nosso arquivo do componente Esta nada mais do que uma fun o que usa a API SCS para criar uma nova inst ncia do componente e retorna esta inst ncia Veja Same as previous example local descriptions Same as previous example local SCS5Factory oo class factory HyFactory descriptions descriptions function SCSFactorvy create args local HyFactory E soa o local instance scs newlomponent self factory self descriptions E args may be a table with command line a
4. Generated by Foxit PDF Creator O Foxit Software http www foxitsoftware com For evaluation only 1 Manual de Utiliza o 1 1 Instala o O SCS apresenta alguns pr requisitos e exige uma pequena configura o do sistema antes de poder ser utilizado 1 1 1 Pr Requisitos Para instalar o SCS s o necess rios os seguintes passos a Instalar a linguagem Lua vers o 5 1 http www lua org b Instalar o ORB OIL ORB in Lua vers o 0 4 beta http oil luaforge net 1 1 2 Instala o do SCS A instala o do SCS em si bastante simples e composta de apenas 2 passos a Descompactar o pacote em um diret rio de sua prefer ncia b Assumindo o diret rio escolhido como lt install dir gt adicionar vari vel de ambiente LUA PATH os caminhos e install dir gt src lua lua e lt install dir gt src lua scs container lua 1 2 Escrevendo um Componente SCS Para criar um novo componente que funcione na arquitetura SCS basta seguir o passo a passo Generated by Foxit PDF Creator O Foxit Software http www foxitsoftware com For evaluation only 1 2 1 Carregando o Modelo de Componentes SCS Para ter acesso API do SCS basta executar o comando require passando como par metro o m dulo a ser carregado scs core base Exemplo local scs require scs core base 1 2 2 Definindo Classes no Modelo LOOP Para definir uma classe LOOP primeiro necess rio obter acesso sua API de cl
5. M yContainer containerPropertySeg Se houver um arquivo de inicializa o no diret rio lt install dir gt src lua scs container definido no arquivo de propriedades Properties txt este ser executado logo em seguida na inicializa o do cont iner Este arquivo serve para realizar tarefas iniciais geralmente de configura o e pode se modific lo caso seja necess rio Al m disso deve se configurar o arquivo Properties txt com a plataforma correta Ao t rmino da chamada startContainer do n de execu o ser retornada uma refer ncia para o cont iner rec m criado 1 3 3 Reposit rio de Componentes A carga de um reposit rio de componentes ocorre ao efetuar se uma chamada load em um cont iner de componentes Assumindo que um cont iner j esteja em execu o e que uma refer ncia faceta IComponent deste seja conhecida atrav s de uma vari vel chamada containerRef podemos construir o exemplo a seguir Obtaining Component Container s Component Loader Facet local repositoryCmp cpnRepHandle cmp local clFacet containerRef getFacetByName Componenticader narrow loading Component Repository Will receive it s handle local componentid name ComponentRepositorv version 1 0 local cpnRepHandle clFfacet load componentid 3 Obtaining the IComponent facet Se houver um arquivo de inicializa o no diret rio lt install dir gt src lua scs repository definido no
6. arquivo de propriedades Properties txt este ser executado logo em seguida na inicializa o do reposit rio Este arquivo serve para realizar tarefas iniciais geralmente de configura o e pode se modific lo caso seja necess rio Generated by Foxit PDF Creator O Foxit Software http www foxitsoftware com For evaluation only Ao t rmino da chamada load do cont iner ser retornada uma refer ncia para o reposit rio rec m criado Neste ponto provavelmente ser desej vel conectar este reposit rio ao cont iner o que pode ser feito da seguinte forma connecting component repository to container s receptacle local recepFacet containerRef getFacetByName IRec local connectionid recepFacet connect Compo 1 3 4 Demais Componentes A carga de qualquer outro componente SCS ocorre de forma similar carga do reposit rio Assumindo que um cont iner e um reposit rio munido do componente j estejam em execu o e conectados e que uma refer ncia ao cont iner j seja conhecida atrav s de uma vari vel chamada containerRef podemos construir o exemplo a seguir 2 local clFacet containerRef getFacetByName ComponentLoader narrow 3 Creating arguments table 4 local myArgsSeq table insert myArgsSeq name myArgument value argValue 6 loading Component MyComponent Will receive it s handle 7 local component Id name MyComponent version 1 0 loca
7. ass myTable myField 2 MyClass myTable myField 3 Para evitar este tipo de comportamento devemos explicitamente atribuir uma nova tabela ao criar uma nova inst ncia Podemos garantir isto atrav s do metam todo __init que funciona como um construtor local oo require loop base 2 local MyClass oo class myTable myNumber 1 3 function MyClass init 4 makes sure that table values are recreated for the instance 5 if we do not take this care base class values may be modified 6 The line below creates a new instance of the class 7 local inst o0 rawnew self 3 8 the line below IS NOT necessary 9 inst myNumber 1 10 The line below IS necessary if vour code will use myTable 11 inst myTable 12 the new instance will contain it s own myTable field 13 return inst 14 Dentro dos m todos podemos acessar os campos internos classe atrav s da vari vel ocal oo require oop base local MyClass oo class myTable myNumber 1 function MyClass myPrintMethod l print self myNumber end now Generated by Foxit PDF Creator O Foxit Software http www foxitsoftware com For evaluation only 1 2 3 Definindo Componentes LOOP SCS Pr Requisitos a Criar um novo arqui
8. asses da seguinte forma local oo require loop base Neste exemplo utilizaremos o modelo de classes b sico do LOOP Para instru es sobre como utilizar modelos mais complexos v at http loop luaforge net Com acesso API do modelo de classes podemos facilmente definir classes da seguinte forma local oo require loop bas local MyClass oo class myProperty propValue o A tabela passada como par metro ser a base da classe Agora podemos adicionar m todos 1 Efunction MyClass myMethod do something here end Note que desta forma definimos valores padr o para a classe que ser o compartilhados por todas as inst ncias Sempre que uma inst ncia da classe modificar o valor de um tipo b sico este novo valor ser armazenado apenas nesta inst ncia e n o afetar outras inst ncias existentes No entanto caso o dado n o seja um tipo b sico como uma tabela ou um userdata devemos ter extremo cuidado Generated by Foxit PDF Creator O Foxit Software http www foxitsoftware com For evaluation only Usaremos tabelas como exemplo Podemos apenas modificar ou criar um novo campo dentro desta tabela ao inv s de atribuir um novo valor para a pr pria Desta forma uma c pia n o ser criada e a tabela da classe ser modificada Isto influenciar todas as inst ncias Exemplo de c digo com erro local oo require loop base local MyClass oo cl
9. bela hash 5 SetReceptacle Recept culo para m ltiplas conex es em forma de conjunto so N o necess rio saber muito mais que isto sobre os tipos de recept culo pois o tratamento feito internamente pela arquitetura do SCS No entanto caso queira se aprofundar consulte o manual LOOP em seu site Um exemplo de molde seria Ns pg local port require ompone 3 jlocal MyTemplate comp Template IComponent port Facer S IReceptacles port Facet IMetaInterface port Facet MyFacet port Facet MyReceptacle port Receptacle Definir uma f brica LOOP atrav s do molde e de um construtor O construtor nada mais que uma tabela onde se atribuem as implementa es das facetas a nomes equivalentes aos nomes das portas O primeiro item desta tabela servir de base para o componente ent o uma boa id ia colocar uma nova tabela ou classe neste ponto Esta tabela base poder conter vari veis globais do componente que ser o vis veis apenas por suas classes internas Segue um exemplo MN s o Cs i G M je H k t b mi JJ dn nm o 0D B ty M j Oo MN U NN NN N N NENEN N j jH io Generated by Foxit PDF Creator Foxit Software http www foxitsoftware com For evaluation only local oo require loop base local comp require loop component base local port require loop component base local MyBase oo class
10. ente de configura o e pode se modific lo caso seja necess rio Al m disso deve se configurar o arquivo Properties txt com a plataforma correta Este o nico componente que deve ser iniciado de fora do sistema Apenas um n de execu o necess rio por m quina apesar disto n o ser uma regra Ao terminar sua inicializa o ser gerado um arquivo execution node ior no diret rio que poder ser usado como refer ncia por outro componente 1 3 2 Cont iner de Componentes Para carregar este componente necess rio que um n de execu o esteja em funcionamento Deve se obter uma refer ncia para este atrav s do arquivo execution node ior gerado automaticamente na inicializa o do n por exemplo De posse desta refer ncia pode se iniciar um container de acordo com o seguinte exemplo local oil reguire oil local orb o l init Obtaining Execution Node s IComponent facet local enCmp orb newproxy assert oil readfrom execution node ior Obtaining Execution Node s Execution Node facet local en enCmp getFacetByName ExecutionNode _narrow Creating properties that will be passed to the container Generated by Foxit PDF Creator O Foxit Software http www foxitsoftware com For evaluation only local containerPropertySeg name myProperty value propValue Starting container and obtaining its IComponent reference local containerCmp en startContalner
11. l cpnHandle clFacet load componentId myArgsSeq obtaining the IComponent facet local myComponentCmp cpnHandle cmp 0O eli Ao t rmino da chamada load do cont iner ser retornada uma refer ncia para o componente rec m criado 1 4 Exemplo PingPong Generated by Foxit PDF Creator O Foxit Software http www foxitsoftware com For evaluation only Um exemplo completo de componente pode ser visto em lt nstall dir gt src lua scs demos pingpong PingPong lua Componentes PingPong nada mais fazem que chamar ping e pong um no outro Deve se instanciar dois desses componentes conect los inici los com startup e chamar o m todo start em um deles no caso da implementa o Java este m todo deve ser chamado em todos Tr s exemplos completos do uso da infra estrutura SCS para a execu o de componentes PingPong podem ser encontrados em lt nstall dir gt src lua scs demos pingpong Todos utilizam um n de execu o Lua mas contam com configura es diferentes e pingpongluaconfig lua Utiliza um cont iner Lua para carregar dois PingPong s Lua e pingpongjavaconfig lua Utiliza um cont iner Java para carregar dois PingPong s Java e pingpongluajavaconfig lua Utiliza um cont iner Lua e um Java para carregar um PingPong em cada Para executar um destes exemplos execute primeiro o n de execu o Lua
12. rguments It s not mandatory In this case we assume only one Which is the name If the argument is not nil it ll be used If it is then the name will remain Bob which is the class default value instance componentName arg 1 or instance componentName return instance IComponent end return SC5SFactory DO O J 0 O b O N p p p U ps O E Como o m todo create da classe SCSFactory atua como um construtor para o componente como um todo pode se receber par metros de entrada neste ponto se Generated by Foxit PDF Creator O Foxit Software http www foxitsoftware com For evaluation only necess rio representados no exemplo pela tabela args O m todo create da f brica deve retornar a faceta IComponent da nova inst ncia Finalmente o componente est pronto O passo a passo pode parecer trabalhoso inicialmente mas a dificuldade de entendimento realmente pequena e deve desaparecer ap s o desenvolvimento de um ou dois componentes 1 2 4 Redefinindo M todos Na arquitetura SCS Lua qualquer m todo interno pode ser redefinido O mais comum redefinir os m todos startup
13. vo Lua b Separar uma se o inicial para se realizar os require e guardar quaisquer vari veis globais necess rias c Criar um m dulo Exemplo e mp cer es je local oo require loop base local comp require loop local port require local scs require s local dofile dofile local string string a e P a e aa a aa r ST local assert assert 1C local print print Como relatado anteriormente o SCS se baseia no LOOP para criar classes e componentes No entanto o conjunto de funcionalidades que utilizamos da API de componentes do LOOP d suporte apenas cria o de facetas e recept culos e espera um conjunto de classes que juntar em uma caixa A API do SCS prov uma forma de se criar um componente SCS com tudo o que for necess rio Para isto ela pede como entrada uma f brica LOOP e as descri es de todas as facetas e recept culos Para definir uma f brica loop s o necess rios dois passos a Definir um molde onde se explicitam as portas do componente e seus tipos Uma porta pode ser uma faceta ou um recept culo As op es s o 1 Facet Faceta Generated by Foxit PDF Creator O Foxit Software http www foxitsoftware com For evaluation only 2 Receptacle Recept culo simples suporta apenas uma conex o ListReceptacle Recept culo para m tilplas conex es em forma de lista 4 HashReceptacle Recept culo para m ltiplas conex es em forma de ta
Download Pdf Manuals
Related Search
Related Contents
安全上のご注意 必ずお守りください Russell Hobbs 643-114 User's Manual USER MANUAL Shark HPB-4020 Clothes Dryer User Manual 警 告 - 作業中 Mode d`emploi Balance plate-forme 取 扱 説 明 書 MN-446A DUALFIX 0 - 18 kg 9 Copyright © All rights reserved.
Failed to retrieve file