Smernice oddelenia QNX

com.microstepmis.agentspace
Class Agent

java.lang.Object
  extended by com.microstepmis.agentspace.Agent
All Implemented Interfaces:
Disposable

public abstract class Agent
extends java.lang.Object
implements Disposable

Abstraktna trieda pre implementaciu agentov pre systemy zalozene na Agent-Space architekture.

(c) 2005 MicroStep-MIS www.microstep-mis.com

Version:
$Id: Agent.java,v 1.6 2005/02/14 12:51:56 matog Exp $
Author:
$Author: matog $

Field Summary
protected  boolean exited
           
protected  Space space
           
protected  java.lang.Thread thread
           
protected  long timestamp
           
 
Constructor Summary
Agent()
          Creates a new Agent object.
 
Method Summary
protected  Proxy attachProxy()
          Vytvorenie interneho proxy.
 Proxy attachTimer(java.util.Date date, long period)
          Vytvorenie timeru.
 Proxy attachTimer(long period)
          Vytvorenie timeru.
 Proxy attachTimer(long delay, long period)
          Vytvorenie timeru.
 Proxy attachTrigger(java.lang.String name)
          Vytvorenie triggeru na bloky.
 Proxy attachTrigger(java.lang.String name, int type)
          Vytvorenie triggeru daneho typu na bloky.
 void delay(int ms)
          Zaspatie na urcitu dobu.
 void delete(java.lang.String name)
          Vymazanie bloku z prostredia (vymazanie s prioritou Block.DEFAULT_PRIORITY).
 void delete(java.lang.String name, float priority)
          Vymazanie bloku z prostredia.
 void delete(java.lang.String name, long validFor, float priority)
          Vymazanie bloku z prostredia.
 void delete(java.lang.String name, long validFrom, long validTo, float priority)
          Vymazanie bloku z prostredia.
 void dispose()
          Zavolanim funkcie dispose() sa dava zvonku agentovi najavo, ze ma ukoncit cinnost.
 void exit()
          Zavolanim funkcie exit() sa dava agentovi najavo, ze ma ukoncit cinnost.
 Space getSpace()
          Zistenie space-u, nad ktorym agent momentalne pracuje.
 java.lang.Thread getThread()
          Zistenie threadu, v ktorom bezi mainLoop agenta.
 long getTimestamp()
          Java/JVM nie je hard realtime, preto nie je garantovana latencia budenia.
 void init(java.lang.String[] args)
          Inicializacia agenta (prazdna).
 void main(java.lang.String[] args)
          Hlavna funkcia agenta, spusti mainLoop.
 void mainLoop(java.lang.String[] args)
          Hlavna funkcia agenta.
 java.lang.Object read(java.lang.String name)
          Precitanie bloku s danym menom z prostredia.
 java.lang.Object read(java.lang.String name, java.lang.Object def)
          Precitanie bloku s danym menom z prostredia.
 BlockStatus readFirst()
          Vycitavanie blokov, ktore sposobili triggernutie internej proxy
 BlockStatus readFirst(Proxy proxy)
          Vycitavanie blokov, ktore sposobili triggernutie proxy
 BlockStatus readNext()
          Vycitavanie blokov, ktore sposobili triggernutie internej proxy
 BlockStatus readNext(Proxy proxy)
          Vycitavanie blokov, ktore sposobili triggernutie proxy
protected  Proxy receive()
           
 void senseSelectAct()
          Kod, ktory vykonava agent pri zobudeni (prazdna metoda).
 void senseSelectAct(Proxy proxy)
          Kod, ktory vykonava agent pri zobudeni (prazdna metoda).
 Space setSpace(Space space)
          Nastavi pracovny space agenta na dany space (pozor, argument null je ignorovany a k ziadnej zmene nedojde).
 Space setSpace(java.lang.String name)
          Nastavi pracovny space agenta na space s danym menom a k ziadnej zmene nedojde).
 void write(java.lang.String name, java.lang.Object value)
          Zapis do prostredia (zvoleneho funkciou setSpace(), default Space.DEFAULT_SPACE_NAME).
 void write(java.lang.String name, java.lang.Object value, float priority)
          Zapis do prostredia (zvoleneho funkciou setSpace(), default Space.DEFAULT_SPACE_NAME).
 void write(java.lang.String name, java.lang.Object value, long validFor)
          Zapis do prostredia (zvoleneho funkciou setSpace(), default Space.DEFAULT_SPACE_NAME).
 void write(java.lang.String name, java.lang.Object value, long validFor, float priority)
          Zapis do prostredia (zvoleneho funkciou setSpace(), default Space.DEFAULT_SPACE_NAME).
 void write(java.lang.String name, java.lang.Object value, long validFrom, long validTo)
          Zapis do prostredia (zvoleneho funkciou setSpace(), default Space.DEFAULT_SPACE_NAME).
 void write(java.lang.String name, java.lang.Object value, long validFrom, long validTo, float priority)
          Zapis do prostredia (zvoleneho funkciou setSpace(), default Space.DEFAULT_SPACE_NAME)
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

space

protected Space space

thread

protected java.lang.Thread thread

timestamp

protected long timestamp

exited

protected boolean exited
Constructor Detail

Agent

public Agent()
Creates a new Agent object.

Method Detail

getThread

public java.lang.Thread getThread()
Zistenie threadu, v ktorom bezi mainLoop agenta.

Returns:
thread, v ktorom bezi mainLoop agenta

getSpace

public Space getSpace()
Zistenie space-u, nad ktorym agent momentalne pracuje.

Returns:
space, nad ktorym agent momentalne pracuje

setSpace

public Space setSpace(Space space)
Nastavi pracovny space agenta na dany space (pozor, argument null je ignorovany a k ziadnej zmene nedojde). Upozornenie: kombinacia public metody setSpace s nesynchronizovanymi public metodami write, read, delete je inherentne nebezpecna, pokial sa dane metody pouzivaju z roznych threadov. Viem si predstavit imaginarnu situaciu, kedy by malo vyznam agentovi menit zvonka space za behu: pri prepinanie agenta medzi simulovanym prostredim a realnym prostredim na beziacom systeme. MatoG

Parameters:
space - novy space
Returns:
space, nad ktorym agent predtym pracoval

setSpace

public Space setSpace(java.lang.String name)
Nastavi pracovny space agenta na space s danym menom a k ziadnej zmene nedojde). Upozornenie: kombinacia public metody setSpace s nesynchronizovanymi public metodami write, read, delete je inherentne nebezpecna, pokial sa dane metody pouzivaju z roznych threadov. Viem si predstavit imaginarnu situaciu, kedy by malo vyznam agentovi menit zvonka space za behu: pri prepinanie agenta medzi simulovanym prostredim a realnym prostredim na beziacom systeme. MatoG

Parameters:
name - meno noveho space-u
Returns:
space, nad ktorym agent predtym pracoval

attachProxy

protected Proxy attachProxy()
Vytvorenie interneho proxy.

Returns:
vrati interne proxy

attachTimer

public Proxy attachTimer(long delay,
                         long period)
Vytvorenie timeru.

Parameters:
delay - cas cakania do 1. tiku
period - perioda
Returns:
proxy, ktore bude timerom triggerovane

attachTimer

public Proxy attachTimer(java.util.Date date,
                         long period)
Vytvorenie timeru.

Parameters:
date - datum/cas 1. tiku
period - perioda
Returns:
proxy, ktore bude timerom triggerovane

attachTimer

public Proxy attachTimer(long period)
Vytvorenie timeru.

Parameters:
period - perioda
Returns:
proxy, ktore bude timerom triggerovane

attachTrigger

public Proxy attachTrigger(java.lang.String name,
                           int type)
Vytvorenie triggeru daneho typu na bloky.

Parameters:
name - meno/maska blokov
type - typ triggeru
Returns:
proxy, ktore bude triggerovane

attachTrigger

public Proxy attachTrigger(java.lang.String name)
Vytvorenie triggeru na bloky. Vytvori sa typ triggeru Trigger.NORMAL.

Parameters:
name - meno/maska blokov
Returns:
proxy, ktore bude triggerovane

init

public void init(java.lang.String[] args)
Inicializacia agenta (prazdna). Ocakava sa jej prekrytie, ale nie je nutne.

Parameters:
args - argumenty

senseSelectAct

public void senseSelectAct()
Kod, ktory vykonava agent pri zobudeni (prazdna metoda). Ocakava sa aspon 1 z metod senseSelectAct, alebo senseSelectAct(proxy).


senseSelectAct

public void senseSelectAct(Proxy proxy)
Kod, ktory vykonava agent pri zobudeni (prazdna metoda). Ocakava sa aspon 1 z metod senseSelectAct, alebo senseSelectAct(proxy).

Parameters:
proxy - proxy, na ktore sa agent zobudil

receive

protected Proxy receive()

getTimestamp

public long getTimestamp()
Java/JVM nie je hard realtime, preto nie je garantovana latencia budenia. Preto je dobre mat moznost zistit, k akemu casu mal byt agent zobudeny (aktualny cas moze byt o dost vyssi).

Returns:
casovu znacku prisluchajucu okamihu zobudenia v milisekundach

mainLoop

public void mainLoop(java.lang.String[] args)
Hlavna funkcia agenta. Prekrytie sa ocakava len v specialnych pripadoch.

Parameters:
args - argumenty agenta

main

public void main(java.lang.String[] args)
Hlavna funkcia agenta, spusti mainLoop. Metoda existuje preto, aby sa agent dal pustit ako SchdProcess.

Parameters:
args - argumenty agenta

dispose

public void dispose()
Zavolanim funkcie dispose() sa dava zvonku agentovi najavo, ze ma ukoncit cinnost. Poznamka: exit() je vlastna agentovi, dispose je vlastna objektom implementujucim Disposable(). Pri najblizsej iteracii cyklu mainLoop agent skonci. Odporucany sposob ukoncovania cinnosti agenta (stopnutie threadu je neodporucane Sun-om).

Specified by:
dispose in interface Disposable

exit

public void exit()
Zavolanim funkcie exit() sa dava agentovi najavo, ze ma ukoncit cinnost. Pri najblizsej iteracii cyklu mainLoop agent skonci. Odporucany sposob ukoncovania cinnosti agenta (stopnutie threadu je neodporucane Sun-om).


delay

public void delay(int ms)
Zaspatie na urcitu dobu. Pozor,

Parameters:
ms - cas zaspania v milisekundach

write

public void write(java.lang.String name,
                  java.lang.Object value,
                  long validFrom,
                  long validTo,
                  float priority)
Zapis do prostredia (zvoleneho funkciou setSpace(), default Space.DEFAULT_SPACE_NAME)

Parameters:
name - meno bloku
value - hodnota zapisovaneho bloku
validFrom - zaciatok platnosti bloku
validTo - koniec platnosti bloku
priority - priorita zapisu bloku (pouziva sa napr. pri modelovani subsumpcnej architektury)

write

public void write(java.lang.String name,
                  java.lang.Object value,
                  long validFrom,
                  long validTo)
Zapis do prostredia (zvoleneho funkciou setSpace(), default Space.DEFAULT_SPACE_NAME). Blok sa zapise s defaultnou prioritou (Block.DEFAULT_PRIORITY)

Parameters:
name - meno bloku
value - hodnota zapisovaneho bloku
validFrom - zaciatok platnosti bloku
validTo - koniec platnosti bloku

write

public void write(java.lang.String name,
                  java.lang.Object value,
                  long validFor,
                  float priority)
Zapis do prostredia (zvoleneho funkciou setSpace(), default Space.DEFAULT_SPACE_NAME).

Parameters:
name - meno bloku
value - hodnota zapisovaneho bloku
validFor - doba platnosti bloku (odteraz)
priority - priorita zapisu bloku (pouziva sa napr. pri modelovani subsumpcnej architektury)

write

public void write(java.lang.String name,
                  java.lang.Object value,
                  long validFor)
Zapis do prostredia (zvoleneho funkciou setSpace(), default Space.DEFAULT_SPACE_NAME). Blok sa zapise s defaultnou prioritou (Block.DEFAULT_PRIORITY)

Parameters:
name - meno bloku
value - hodnota zapisovaneho bloku
validFor - doba platnosti bloku (odteraz)

write

public void write(java.lang.String name,
                  java.lang.Object value,
                  float priority)
Zapis do prostredia (zvoleneho funkciou setSpace(), default Space.DEFAULT_SPACE_NAME).

Parameters:
name - meno bloku
value - hodnota zapisovaneho bloku
priority - priorita zapisu bloku (pouziva sa napr. pri modelovani subsumpcnej architektury)

write

public void write(java.lang.String name,
                  java.lang.Object value)
Zapis do prostredia (zvoleneho funkciou setSpace(), default Space.DEFAULT_SPACE_NAME). Blok sa zapise s defaultnou prioritou (Block.DEFAULT_PRIORITY) a neobmedzenou platnostou.

Parameters:
name - meno bloku
value - hodnota zapisovaneho bloku

read

public java.lang.Object read(java.lang.String name)
Precitanie bloku s danym menom z prostredia.

Parameters:
name - meno bloku
Returns:
hodnota bloku

read

public java.lang.Object read(java.lang.String name,
                             java.lang.Object def)
Precitanie bloku s danym menom z prostredia. Ak taky blok neexistuje, vrati sa default.

Parameters:
name - meno bloku
def - default hodnota
Returns:
hodnotu bloku, ak taky v prostredi existuje, default inak

readFirst

public BlockStatus readFirst(Proxy proxy)
Vycitavanie blokov, ktore sposobili triggernutie proxy

Parameters:
proxy - triggernuta proxy
Returns:
status 1. najdeneho bloku

readNext

public BlockStatus readNext(Proxy proxy)
Vycitavanie blokov, ktore sposobili triggernutie proxy

Parameters:
proxy - triggernuta proxy
Returns:
status najdeneho bloku

readFirst

public BlockStatus readFirst()
Vycitavanie blokov, ktore sposobili triggernutie internej proxy

Returns:
status 1. najdeneho bloku

readNext

public BlockStatus readNext()
Vycitavanie blokov, ktore sposobili triggernutie internej proxy

Returns:
status 1. najdeneho bloku

delete

public void delete(java.lang.String name,
                   float priority)
Vymazanie bloku z prostredia.

Parameters:
name - meno bloku
priority - priorita vymazavania (pouziva sa napr. pri modelovani subsumpcnej architektury)

delete

public void delete(java.lang.String name)
Vymazanie bloku z prostredia (vymazanie s prioritou Block.DEFAULT_PRIORITY).

Parameters:
name - meno bloku

delete

public void delete(java.lang.String name,
                   long validFrom,
                   long validTo,
                   float priority)
Vymazanie bloku z prostredia.

Parameters:
name - meno bloku
validFrom - zaciatok platnosti vymazania
validTo - koniec platnosti vymazania
priority - priorita vymazavania (pouziva sa napr. pri modelovani subsumpcnej architektury)

delete

public void delete(java.lang.String name,
                   long validFor,
                   float priority)
Vymazanie bloku z prostredia.

Parameters:
name - meno bloku
validFor - doba platnosti vymazania
priority - priorita vymazavania (pouziva sa napr. pri modelovani subsumpcnej architektury)

Smernice oddelenia QNX

(c) MicroStep-MIS 2004. Urcene vyhradne pre potreby MicroStep-MIS.